Saya suka seni ascii dan saya sangat bosan, jadi saya menemukan beberapa karakter ascii dan mulai membuat hal-hal acak, kastil mario 8-bit, labirin, dan lengkungan. Saya menemukan bahwa lengkungan dapat dengan mudah ditumpuk dengan rapi.
╔═══════╗
║╔═════╗║
║║╔═══╗║║
║║║╔═╗║║║
╨╨╨╨─╨╨╨╨
Tantangan
Buat program, fungsi, atau format standar lainnya yang menerima bilangan bulat yang lebih besar dari atau sama dengan 0 (kecuali jika Anda melakukan bonus) dan menghasilkan ascii art dengan jumlah lengkungan yang ditentukan.
Uji Kasus
Memasukkan:
7
Keluaran:
╔═════════════╗
║╔═══════════╗║
║║╔═════════╗║║
║║║╔═══════╗║║║
║║║║╔═════╗║║║║
║║║║║╔═══╗║║║║║
║║║║║║╔═╗║║║║║║
╨╨╨╨╨╨╨─╨╨╨╨╨╨╨
Alt:
+-------------+
|+-----------+|
||+---------+||
|||+-------+|||
||||+-----+||||
|||||+---+|||||
||||||+-+||||||
||||||| |||||||
---------------
Memasukkan:
1
Keluaran:
╔═╗
╨─╨
Alt:
+-+
| |
---
- Jika bilangan bulat 0 maka jangan output apa pun
- Pertanyaan ini akan berada di utf-8, setiap karakter akan dihitung sebagai "byte"
- Ini codegolf sehingga jawaban terpendek menang.
- Anda memiliki opsi untuk menggunakan
+-+
alih- alih╔═╗
,---
alih-alih╨─╨
, dan|
bukannya║
Bonus (tidak memutuskan apakah akan mengizinkan ini pada versi alternatif karena itu tidak akan sulit)
-10% jika program mendukung angka negatif dan membalik lengkungan seperti itu
╥╥╥╥─╥╥╥╥
║║║╚═╝║║║
║║╚═══╝║║
║╚═════╝║
╚═══════╝
+---+
di bagian atas, sisi|
dan bagian bawah-----
yang terlihat baik bagi saya. Juanpotato, jika Anda ingin menggunakan karakter non-ascii, harap tunjukkan penyandian dalam pertanyaan. Saat berdiri aku memilih untuk menutup sebagai tidak jelas.Jawaban:
CJam, 59 byte
Coba di sini!
sumber
Python 2, 106 byte (94 karakter)
Cukup mudah. Mencetak baris demi baris dengan jumlah batang horizontal dan vertikal yang terus berubah. Baris terakhir dicetak secara terpisah.
Saya merasa seperti kehilangan beberapa optimasi. Fakta bahwa chars adalah beberapa byte berarti Anda tidak dapat melakukan sesuatu seperti
'║╨'[n>0]
, jadi saya tidak menemukan cara yang baik untuk mencetak baris terakhir dalam loop. Sangat jelek bahwa ada begitu banyak manipulasi yang terjadi dengan konter. Saya ingin memperbarui string secara langsungs+='║'
, tetapi indeks juga digunakan untuk bilah horizontal.sumber
+-|
untuk membangun lengkungan, lihat op untuk contoh.Perl,
7882 karakterSayangnya, saya tidak bisa menemukan cara untuk mengambil keuntungan dari bonus tanpa meningkatkan ukuran lebih dari 10%. Saya mungkin belum menang.
Tidak disatukan
Sangat mudah, sungguh. Membangun garis bawah (
╨$n╨
) secara bertahap, sementara memperpendek garis atas (══
) dengan dua karakter, berakhir ketika tidak dapat lagi dipersingkat, jadi saya tidak perlu mengacaukan penghitung.sumber
─
untuk n = 0, tetapi seharusnya tidak mencetak apa pun.-n
: Coba online!Bash, 124 byte (112 karakter)
Contoh dijalankan:
sumber
Japt
-R
, 29 bytePenggunaan
+
&-
. Mengorbankan 4 byte untuk menangani validasi input berdarah !Cobalah
Penjelasan
sumber
0
If the integer is 0 then don't output anything
dari tantangan: /0
,false
atau string kosong dengan biaya beberapa byte tetapi saya tidak tahu apakah ada di antara mereka yang dapat diterima kecuali, mungkin, string kosong, yang akan menelan biaya 5 byte (0
hanya akan dikenakan biaya 1).JavaScript (ES6), 101 karakter
Penjelasan
Fungsi rekursif yang mencetak setiap baris
Uji
Tes tidak menggunakan parameter default untuk kompatibilitas browser.
Tampilkan cuplikan kode
sumber
PHP (109 karakter)
Masih perlu menyingkirkan str_repeat itu, tetapi sebagian besar alternatif tidak akan menangani karakter mulyibyte.
sumber
Retina , 79 karakter
Cobalah online.
Ini menggunakan fitur baru di Retina yang menggantikan angka desimal
\d+
dengan daftar karakter sebanyak itu$0$*═
.sumber
Swift (209 byte)
Mungkin Swift bukan bahasa terbaik untuk ini, ini adalah pertama kalinya saya mencoba melakukan tantangan kode golf:
sumber
Ruby, 90 byte (74 karakter)
Contoh dijalankan:
sumber
Haskell,
151162 byteSunting: Saya lupa berurusan
0
sebagai masukansumber
𝔼𝕊𝕄𝕚𝕟, 54 karakter / 95 byte
Try it here (Firefox only).
Penjelasan
CATATAN: ini menggunakan blok salinan yang baik untuk mendapatkan di tempat di mana variabel biasa menyatakan tidak dapat mencapai.
sumber
Sed, 97 byte (81 karakter)
(96 byte (80 karakter) kode + 1 opsi baris perintah karakter)
Input diharapkan sebagai unary bilangan bulat .
Contoh dijalankan:
Sed, 105 byte (75 karakter)
(104 byte (74 karakter) kode + 1 opsi baris perintah karakter)
Input diharapkan sebagai bilangan bulat unary .
Contoh dijalankan:
sumber
Kanvas , 15 byte
Coba di sini!
Penjelasan:
sumber