Baris pertama dibuat dengan ceil(n/2)
elemen di mana masing-masing elemen adalah:<space><odd-number><space>
Baris kedua dibuat dengan ceil(n/2)
elemen, tetapi masing-masing elemen / \
hanya.
Anda dapat berasumsi n >= 0
dan n <= 10
.
Contohnya
Input: 3
1 3
/ \/ \
Input: 10
1 3 5 7 9
/ \/ \/ \/ \/ \
Contoh dalam Python 3, 103 byte:
lambda a:print("".join([" "+str(i)+" "for i in range(1,a+1,2)]+["\n"]+["/ \\"for i in range(1,a+1,2)]))
Kode terpendek dalam byte menang :)
<space><odd-number><space>
, tetapi kotak uji tidak memiliki spasi setelah angka ganjil terakhir. Apakah itu opsional? Juga, apakah output untukn=0
dua baris kosong?Jawaban:
05AB1E ,
19151412 byte05AB1E menggunakan pengkodean CP-1252 .
Disimpan 4 byte berkat Adnan .
Disimpan 2 byte berkat carusocomputing
Cobalah online!
Penjelasan
sumber
Ï
ADA ?! Tampaknya suuuper bermanfaat.LDÉÏ
sama denganÅÉ
dan„ ýðì
bisa digantikan olehðì)»
:).)
, bukan?ÅÉðìDg…/ \×»
menggunakanDg
bukan¹;î
untuk menyimpan byte lain juga.Pyke, 16 byte
Coba di sini!
17 byte dan lebih dahsyat
Coba di sini!
Ini menggunakan IMHO suatu algoritma yang MENGAGUMKAN untuk memastikan baris pertama benar.
Ini menggantikan semua karakter dalam daftar yang diikat dengan spasi.
~B
berisi semua karakter dalam bahasa Brain **** dan ini adalah pertama kalinya saya menggunakan variabel ini.Program
`~Bd.:
melakukan ini:sumber
Python 2, 63 byte
Trik kecil untuk baris pertama: tidak mencetak angka genap, tetapi menganggapnya sebagai string kosong, yang mengarah ke memulai ruang kosong (0 akan ada di sana), dan menggandakan ruang di antara angka-angka tanpa modifikasi pada kisaran, sisi negatifnya adalah ruang terdepan di nomor genap
n
sumber
Python
23,67656360 BytesTidak ada yang terlalu gila di sini,
saya pikir bagian pertama mungkin bisa dilakukan lebih pendek tapi saya tidak yakin bagaimana caranya. Saya menggunakan fakta bahwa dalam hal ini-~n/2
akan berhasilceil
.Berikut adalah alternatif solusi 61 dan 65 byte dalam Python 2:
Terima kasih kepada Rod untuk menyimpan 2 byte dan Artyer karena telah menyimpan byte lain dengan beralih versi :)
sumber
%(tuple(...))
dengan%[*...]
, tetapi Anda harus melakukannya-~n//2
range
memasukkan ke daftar karena 3range
adalah seperti Python 2xrange
.tuple()
(*<iterable>,)
untuk melakukan tuple di Python 3. Ini menghemat 1 byte meskipun setelah Anda beralihn/2
ken//2
Python 3.JavaScript (ES6), 55 byte
Perhatikan spasi di akhir baris kedua.
sumber
.replace
mungkin lebih baik tetapi saya tidak repot-repot memeriksa ...Python 2, 53 byte
Mengambil keuntungan dari pembatasan
n <= 10
untuk menghasilkan baris teratas dengan memotong sepotong dari string hardcoded.Output untuk 1 hingga 10 adalah
Output untuk 0 adalah dua baris kosong.
sumber
Vim,
735956 byteIni adalah IMO jumlah byte sangat tinggi untuk apa yang tampaknya seperti masalah sederhana. Saya merasa seperti kehilangan sesuatu yang jelas.
Cobalah online!
Tidak dapat dicetak:
sumber
:s;.;/ \\;g
. 2) pada perintah pengganti kedua Anda, Anda dapat membiarkan pencarian kosong dan akan menggunakan pencarian terakhir Anda (yang kebetulan sama). Juga,&
setara dengan\0
dan satu byte lebih pendek. Jadi, Anda dapat:s// & /g
Mathematica, 65 byte
Fungsi anonim. Mengambil angka sebagai input dan mengembalikan string sebagai output. Karakter Unicode, masing-masing, adalah U + 2308 LEFT CEILING untuk
\[LeftCeiling]
dan U + 2309 RIGHT CEILING untuk\[RightCeiling]
.sumber
WinDbg, 100 byte
Input dilakukan dengan menetapkan nilai dalam register semu
$t0
.Sepertinya ini terpendek di sini hanya untuk mencetak string karena sedang dibangun daripada mencoba membangunnya terlebih dahulu dan menampilkan semuanya. Saya akan memiliki solusi yang lebih pendek jika WinDbg akan membiarkan saya menulis ke alamat
0
.Bagaimana itu bekerja:
Output untuk setiap nilai
n
:sumber
> <> (IKAN),
69606855 byteRekatkan ke penerjemah online ini!
Angka 5 pada baris pertama adalah nilai input Anda (dikodekan sebagai 5, diganti dengan 0-a atau i untuk input pengguna).
Sunting 1: Memindahkan penempatan baris baru ke dalam ruang baris pertama (kosong) untuk menghemat 9 byte secara keseluruhan pada ruang dari baris baru.
Sunting 2: Sebagaimana dicatat oleh user7150406 hasilnya salah (tidak ada spasi pencetakan) ini telah diperbaiki dengan kehilangan 8 byte.
Sunting 3: benar-benar mengubah logikanya, tidak ada gunanya memeriksa apakah nomornya ganjil - alih-alih letakkan semua angka di tumpukan dan hapus setiap detik. Byte disimpan 13!
sumber
Java,
118112 BytesSunting: Disimpan 6 Bytes berkat @peech
Golf:
Tidak Disatukan:
Pengujian:
sumber
i
pertama Anda untuk loop, ini bisa terlihat seperti inifor(; i < n; i++)
. Anda dapat bermain golf lebih jauh dengan perubahan ini:o += i + " ";
perubahan menjadio += i++ + " ";
dan untuk loop menjadifor(; i < n; )
. Itu jika Anda ingin menyimpan pernyataan if. Anda dapat mengubah kenaikan i menjadii += 2
dan menghapus seluruh pernyataan if, tetapi dalam kasus itu proposisi kedua saya tidak berlaku :) (ps: i havent menguji ini :))i
inisialisasi darifor
loop, tetapi hal-hal lain terjebak dalam satu loop. Saya mungkin perlu bermain-main dengannya sedikit lebih banyak :)o += i++ + " ";
:). Btw, Anda memiliki bug kecil dalam kode Anda :) karena Jawa menggunakanfloor()
pada pembagian integer (4/3 = 1), Anda harus melakukannya seperti ini:int i = 1; n += 1; for (; i < n; i += 2) { ... jada jada ... }
. jika Anda menambah i olehi += 2
, Anda tidak perlu itu jika pernyataan memeriksa paritas. Hal ini juga menghemat lain 3 byte :) mencobanya di sini: ideone.com/ekaUUHfloor
divisi itu membuat diri saya aneh ketika bermain dengan beberapa Java beberapa hari yang lalu :)C # 6, 95 byte
Lambda penuh:
sumber
CJam,
2623 byteMenguji!
-3 Terima kasih kepada 8478 (Martin Ender)
sumber
Sri,:)2%_S2**N@,"/ \\"*
+
. Dan aku bersumpah, aku benar-benar menggunakaned
! ... lebih pendek dari Pyth.Bahasa Game Maker (GM 8.0), 97 byte
Mengingat bahwa input paling banyak 10,
chr(48+i)
akan bekerja di tempatstring(i)
, meskipun jumlah byte sama.Dapat dibaca:
sumber
Pyth,
2422 byteBerkat 42545 (ETHproductions) untuk -1 byte
Penerjemah online
11 kasus uji
sumber
*lK"/ \\
\
sebagai gantinya\\
:)> <> (Ikan)
526362 byteCobalah online!
Untuk menggunakan tempat sederhana
n
di tumpukan dan pergi Anda pergi!Banyak dari ini diambil dari jawaban @ Teal-Pelican :).
Sunting: Output sebenarnya tidak disejajarkan dengan benar di salah satu>> <> pengiriman! Pemasangan...
Sunting2: Saya harus mengorbankan beberapa byte, tetapi hasilnya sebenarnya benar sekarang.
Sunting3: Tidak ada lagi kesenangan dengan
\
/
mirror dan saya menghemat 1 byte.Keluaran:
sumber
C,
1007977 bytesumber
R,
70696858 bytesumber
Pesta,
64,59,57,51,49,48, 45 byteEDIT:
-s ""
dengan-s\
Golf
Potongan (45 byte):
Fungsi (versi asli) (57 byte):
Uji
sumber
sed
brilian. Dengan tidak menggunakan fungsi atau printf, Anda menghemat 10 byte:seq -f" %g " -s "" 1 2 $1|sed 'p;s| . |/ \\|g'
cat
untuk membaca input dari STDIN, karena IMO tidak benar-benar adil untuk menggunakan variabel yang sudah ditentukan sebelumnya untuk meneruskan data.$1
hanya parameter pertama yang dikirimkan ke program. Saya tidak berpikir itu curang, lihat meta.codegolf.stackexchange.com/questions/2447/…Melewati 93 , 64 byte
Cobalah secara Online!
sumber
Ruby
8260 BytesSolusi Ruby cepat dan kotor pasti bisa lebih baik dioptimalkan jika saya lebih baik dengan Ruby
Penggunaan: prog.rb 10
Output:
edit: banyak suntingan dan optimisasi oleh @Manatwork!
sumber
print
→$><<
dan gunakan interpolasi string" #{x} "
. Tapi yang terbaik akan mengurangi jumlah.each
oleh keluaran baris 1 langsung dari callback dan membangun 2 baris dalam variabel:s="";(1..$*[0].to_i).step(2){|x|$><<" #{x} ";s+="/ \\"};puts"",s
. Atau bahkanputs"",(1..$*[0].to_i).step(2).map{|x|$><<" #{x} ";"/ \\"}*""
.Numeric#step
menerima 2 parameter, sehingga dapat menghindari sintaks rentang panjang yang membutuhkan tanda kurung sekitar:(1..$*[0].to_i).step(2)
→1.step($*[0].to_i,2)
.JavaScript (ES6),
6664 byteSecara rekursif membangun baris pertama, lalu menambahkan baris kedua. Baris pertama dibangun dengan pengamatan bahwa itu hanya kisaran [0 ... n] dengan setiap item n ditransformasikan menjadi spasi jika genap, atau n digabungkan dengan spasi jika ganjil.
sumber
Python 2, 60 byte
Disimpan 6 byte berkat @Kade!
sumber
list()
gips, menghapusnya membuat Anda menjadi 60 :)lambda s:" "+" ".join(range(s+1)[1::2])+"\n"+-~s/2*"/ \\"e
karena karena itu akan memberikan daftar int dan matiBatch, 107 byte
sumber
Scala,
9995 BytesTidak disatukan
sumber
Ruby, 48 byte
sumber
Oktaf, 45 byte
f=@(n)reshape(sprintf(' /%d \',1:2:n),2,[]);
Uji:
f (8)
sumber
QBIC , 35 byte
Penjelasan:
sumber
Kitanai , 140 byte
sumber
Perl, 46 + 2 (
-pl
bendera) = 48 byteMenggunakan:
Atau 52 byte:
Menggunakan:
sumber