Tulis program (atau fungsi) yang menggunakan string non-kosong dari karakter ASCII yang dapat dicetak .
Cetak (atau kembalikan) rantai zig-zag karakter dalam string dengan setiap pasangan karakter yang terhubung oleh:
/
jika karakter pertama muncul sebelum karakter kedua dalam urutan ASCII normal. misalnyaB / A
\
jika karakter pertama muncul setelah karakter kedua dalam urutan ASCII normal. misalnyaB \ A
-
jika karakter pertama dan kedua sama. misalnyaA-A
Jadi hasilnya Programming Puzzles & Code Golf
adalah
o
/ \
r z-z o e G l
/ \ / \ / \ / \ / \
P o r m-m n u l s & C d f
\ / \ / \ / \ / \ / \ / \ /
g a i g P e
\ /
Jika hanya ada satu karakter dalam string input, output hanya akan menjadi karakter itu.
Program Anda harus memperlakukan ,
/
, \
, dan -
sama seperti semua karakter lain.
misalnya -\//-- \ //-
harus menghasilkan:
\
/ \
- /-/
/ \
- --- \ /-/
\ / \ / \
-
\
Seharusnya tidak ada baris baru yang asing dalam output kecuali untuk baris baru tambahan opsional. (Perhatikan bahwa baris kosong dalam contoh di atas memegang spasi terakhir dalam string dan karenanya tidak asing). Mungkin ada spasi tambahan pada setiap baris dalam pengaturan apa pun.
Kode terpendek dalam byte menang.
Satu lagi contoh - Input:
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Keluaran:
9 9 8 6 6
/ \ / \ / \ / \ / \
9 6 8 7 3 3 4 2 4 8 9 8-8
/ \ / \ / \ / \ / \ / \ / \
4 5 2 5 5 2 3-3 3 7 5 2 4 9 9 9-9 7
/ \ / \ / \ / \ / \ / \ / \ / \ / \
3 1 1 3 2 0 1 7 6 3 3 5 8 8 6
\ / \ / \ / \ / \ / \
. 1 1 5 2 9 9 3 7 1 4 6 8 9
\ / \ / \ / \ / \ / \ / \ / \ /
0 0 7 9 5 2 0 0 2 6 9-9 8 5 4 7
\ / \ / \ / \ / \ / \ / \ /
4 4-4 2 8 8 4 2 3 2 7 6
\ / \ / \ / \ /
0 6 8 3 1-1 0
\ / \ /
2 0
'\n'
dengan string template seperti inifor
Loop Anda bisa diperas banyak. Jangan buang seluruh blok kode yang diperlukan dengani++
. Sebaliknya, jalankan sebagian besarfor
kode Anda di sana. Juga, Anda tidak perlu kawat gigi di sekitar satu baris kode.l
adalah menghitungs.length*2-1
dan melakukannya dua kali. Mengapa tidak menyimpan nilai itu saja?<br>
hanya di sana sehingga muncul dalam versi HTML; jika Anda melihat lebih dekat, saya menggunakan string template sebagai gantinya di entri yang sebenarnya. Juga, ini bukan persyaratan: "Cetak (atau kembali) ..."Python, 393 byte
Jalankan sebagai:
z("Zigzag")
sumber
JavaScript (ES6), 202
Menggunakan string template. Ruang lekukan dan baris baru tidak dihitung, kecuali baris baru terakhir di dalam backticks yang signifikan dan dihitung.
Catatan biasa: tes menjalankan snippet pada browser apa pun yang mendukung EcmaScript 6 (terutama bukan Chrome bukan MSIE. Saya menguji pada Firefox, Safari 9 bisa pergi)
sumber
CJam, 79 byte
Cobalah online
Ini membangun kolom output dengan kolom, dan mentranspos hasilnya di akhir untuk mendapatkan output baris demi baris. Ini secara keseluruhan cukup menyakitkan.
Penjelasan:
sumber
Perl 5,
230214Uji
sumber
K, 86
.
Tidak Disatukan:
sumber
Ruby, 158
Disimpan 6 byte berkat histokrat . Terima kasih!
sumber
->s,*i{
. Dan jika Anda menggantis[0]
dengans[/./]
, saya pikir Anda bisa menggantinyas[1..-1]
dengan$'
.Python dengan Numpy: 218 byte
Layak untuk menyia-nyiakan 19 byte untuk mengimpor numpy.
Golf:
Tidak Disatukan:
sumber