Diberi nomor biner, tugas Anda adalah membuat 'cabang' dari angka itu, dengan kedalaman 2.
Misalnya, diberikan 0
sebagai input, Anda harus menampilkan ini:
/000
/00
/ \001
0
\ /010
\01
\011
Ini harus cukup jelas tentang bagaimana cabang harus dibuat. Kedalaman 2 berarti kami menghitung cabang untuk jumlah hingga 2 angka lebih lama. Kami juga menghitung cabang secara berurutan, dengan nol di bagian atas dan yang di bawah.
Lebih banyak kasus uji:
0
/000
/00
/ \001
0
\ /010
\01
\011
1
/100
/10
/ \101
1
\ /110
\11
\111
00
/0000
/000
/ \0001
00
\ /0010
\001
\0011
01
/0100
/010
/ \0101
01
\ /0110
\011
\0111
10
/1000
/100
/ \1001
10
\ /1010
\101
\1011
11
/1100
/110
/ \1101
11
\ /1110
\111
\1111
Aturan
- Anda tidak akan pernah menerima karakter di input selain
1
dan0
. 0 < length of input < 11
.- Trailing whitespace diizinkan di akhir baris.
0 < length of input < 11
itu11
desimal atau biner? : PJawaban:
Jelly ,
3938 byteCobalah online!
Bagaimana?
Seni yang akan dicetak adalah:
Di mana
N
string input danL
string spasi dari panjang string input.Karena itu terdiri dari delapan komponen (
L
,N
,/
,0
, karakter baris baru,\
,1
, dan karakter ruang) dan karenanya dapat disimpan sebagai dasar-8 nomor (yang dapat dikompresi sebagai angka dasar-250 di Jelly). Theṃ
menggabungkan atom konversi dasar dan pengindeksan ke dalam daftar (efektif satu dapat menentukan sewenang-wenang digit yang akan digunakan).sumber
Batch,
178170159 byteSunting: Disimpan 11 byte berkat @ ConorO'Brien.
sumber
JavaScript (ES6), 112 byte
Demo
Tampilkan cuplikan kode
sumber
[n,n,s.replace(/./g,' '),s,'\\'][n]
?/\d/g
daripada/./g
mengabaikan karakter non-numerik.Python 3 ,
117109 byteCobalah online!
String format ketika dicetak terlihat seperti:
Ini sudah terlihat bagus untuk string dengan panjang 1. Yang harus kita lakukan adalah mengganti l dengan spasi dengan panjang yang sama dengan g dan, tentu saja, g harus diganti dengan string asli
sumber
Python 3.6,
172153128 byteSecara harfiah tidak menjadi lebih mudah dari ini ... Ini sebenarnya lebih pendek dari upaya awal saya untuk menghasilkannya dengan algoritma. Betapa menyedihkan.
-19 byte terima kasih kepada @Leo
-25 byte terima kasih kepada @ L3viathan
sumber
b*2+' '
)print(f'{a}/{k}00\n{b} /{k}0\n{b}/ {b}\\{k}01\n{k}\n{b}\\ {b}/{k}10\n{b} \\{k}1\n{b*2} \\{k}01')
C,
170168 byteTerima kasih kepada @Neil untuk menghemat dua byte!
Cobalah online!
sumber
/
atau` padded to width
n +1, why not print a space, and then a
/ `atau\
diisi dengan lebarn
?/
atau\
padded to widthn+1
, mengapa tidak mencetak spasi, dan kemudian a/
atau\
padded to widthn
?Python 3 , 96 byte
Cobalah online! Karakter yang tidak patut tidak ditampilkan dengan benar; format string sama dengan format resmi , tetapi dengan
\x01
untukl
dan\x02
untukg
.Menggunakan substitusi string dengan Python 3 yang fleksibel
translate
. Daftar menerjemahkan[s,' '*len(s),s]
peta\x01
ke' '*len(s)
dan\x02
kes
. Setiap karakter yang lebih besar tidak berubah karena mereka memberikan indeks yang di luar batas untuk daftar.\x00
tidak dapat digunakan karena byte nol dibaca sebagai akhir program, sehingga entri pertama terbuang sia-sia.sumber
PHP , 128 byte
Hanya Output sederhana
Cobalah online!
sumber
Ditumpuk , 81 byte
Cobalah online!
Sayangnya, tidak terlalu menarik. Inilah bagian yang paling menarik:
Ini pada dasarnya adalah string interpolasi, tetapi 10 byte lebih pendek dari builtin.
sumber
/// , 116 byte
Cobalah online!
Masukan adalah sebagai berikut:
Bekerja dengan menggunakan templat dasar, dan menambahkan spasi dan karakter jika diperlukan.
Hitungan byte naik karena Ørjan Johansen menyadari bahwa itu tidak menangani spasi pada awalnya. Tapi masalahnya sudah diperbaiki.
sumber
/*/\/y0\/ y\/\/y1\/ y\//**********/y///s/yx/
dan kemudian Anda mendapatkan spasis
./00/0|0//01/0|1//10/1|0//11/1|1//|/<\\y>//z/<y>x//<y>0/ //<y>1/ //<\\y\>///s/z/
dapat menangani panjang sewenang-wenang.Python 2 ,
101,91 byte113 byteCobalah online!
Input adalah string 0 dan 1 dengan panjang 1 atau 2! Yaitu 0,01,10 atau 11!
+12 byte - mengoreksi jarak dalam \ untuk panjang dua input.
sumber
0 < length of input < 11
".Arang , 34 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Cetak pasangan kiri
/
s dan\
s.Cetak input dengan benar pada posisi saat ini.
Loop melalui cabang-cabang.
Pindahkan posisi cabang. Kita dapat melakukan ini karena root dicetak dengan benar sehingga cabang tengah selalu pada posisi absolut yang sama.
Cetak input.
Cetak pasangan kanan
/
dan\
.Cetak akhiran cabang.
Pindah ke daun pertama.
Loop melalui daun.
Cetak input dan akhiran cabang dan daun.
Pindah ke daun berikutnya. Catatan: Jika trailing spasi dapat diterima maka
F²⁺⁺⁺θι궶
akan menghemat satu byte.sumber