(Terinspirasi oleh pertanyaan ini )
Objektif
Tugas Anda adalah menulis program atau fungsi untuk mencetak versi ASCII dari logo Stack Overflow ke STDOUT
\|/
(-)
(-)
(-)
(-)
Program Anda harus mengambil dua input, disebut di sini sebagai H dan N. Ketinggian tumpukan "wadah" (tanda kurung) ditentukan oleh H. Jumlah item dalam tumpukan ditentukan oleh N. Jika N> H, tumpukan akan "meluap".
Input output
H akan menentukan ketinggian wadah
Sebagai contoh:
H = 1:
( )
H = 2:
( )
( )
H = 3:
( )
( )
( )
H akan selalu setidaknya 1
N akan menentukan berapa banyak item dalam tumpukan. Contoh-contoh berikut semuanya adalah H = 2:
N = 0
( )
( )
N = 1
( )
(-)
N = 2
(-)
(-)
N = 3
\
(-)
(-)
N = 4
\|
(-)
(-)
N = 5
\|/
(-)
(-)
N = 6
\|/
(-)-
(-)
N = 7
\|/
(-)-
(-)-
N tidak akan pernah lebih dari 2H+3
(Dengan kata lain, tumpukan tidak akan pernah melewati tanah).
Aturan
- Tidak Ada Celah Standar.
- Program Anda tidak boleh menghasilkan kesalahan.
- Semua test case harus lulus.
- Anda dapat memasukkan H dan N dengan cara apa pun yang Anda inginkan.
- Saya sangat ragu bahwa bahasa Anda memiliki built-in untuk ini.
- Setiap baris secara opsional memiliki ruang tambahan di bagian akhir. Baris kosong di atas tumpukan di mana N <= H adalah opsional, seperti juga baris tambahan.
- Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
Uji Kasus
Selain semua kasus uji H = 2 dari bagian Input / Output, semua kasus uji berikut harus lulus:
H = 1, N = 1
(-)
H = 1, N = 5
\|/
(-)-
H = 4, N = 7
\|/
(-)
(-)
(-)
(-)
H = 5, N = 0
( )
( )
( )
( )
( )
Papan peringkat
Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard biasa dan gambaran umum pemenang berdasarkan bahasa.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
# Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda bisa menyimpan skor lama di headline, dengan mencoretnya. Misalnya:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
# Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Jawaban:
Pyth,
434140 byteCobalah online. Suite uji.
Lulus pertama, cepat dan kotor. Masukkan ke STDIN sebagai
N\nH
.Penjelasan
J
(JE
), dan kurangi dari input pertama (jumlah item). (-QJE
)K
. (K-QJE
)hK-QJE
)max(0, previous)
. Ini diperlukan karena angka negatif akan mematahkan langkah berikutnya. (g#0hK-QJE
)" \|/"
untuk mendapatkan baris pertama dan cetak. (<" \|/"g#0hK-QJE
)N
lebihrange(0, J)
. (VJ
) Untuk masing-masingN
cetak rangkai sebagai berikut: (s[
)"("
(\(
)" "
jika setidaknya adaN+1
ruang kosong di stack (<N_K
),"-"
jika tidak. (?<N_Kd\-
)")"
(\)
)"-"
jika ada setidaknyaN+4
potongan meluap di stack (<N-K3
),""
jika tidak. (*<N-K3\-
)sumber
JavaScript (ES6),
105102 byte@ Edit: Disimpan 3 byte berkat @ Patrickrickoberts.
sumber
substring
dengansubstr
untuk menyimpan 3 byte, dan gantii+n<h?' ':'-'
dengan'- '[i+n<h]
untuk menyimpan 2 byte dan gantii+h+3<n?'-':''
dengan' -'[i+h+3<n]
untuk menyimpan 1 byte. Itu akan membuat Anda di bawah 100substr
mengabaikan subscript negatif atau tidak, tetapi saya tidak bisa menggunakan tips Anda yang lain karena subscript string adalah string, jadi boolean tidak cukup baik.JavaScript (ES6),
126122112 byteUji
Tes Alternatif (jika browser Anda tidak mendukung ES6)
Lihat tes pada Babeljs.io dan periksa "evaluasi".
Pendekatan alternatif yang menarik pada 136 byte
Ini memindahkan jumlah pengulangan ke string template dan menggunakan regexp dan ganti untuk menyuntikkan grup berulang. Sayangnya tanda tangannya
.replace()
terlalu lama.sumber
C ++ 14 (fungsi lambda), 196
Disimpan 1 byte berkat Quentin.
Disimpan 2 byte berkat Adam Martin.
Fungsi itu sendiri membutuhkan 157 byte.
Lihat beraksi di sini .
Versi tidak disatukan:
sumber
include
s danusing namespace std;
dalam hitungan byte, kecuali jawaban Anda adalah program yang lengkap (yang bukan).CJam, 57 byte
Uji di sini.
Pasti bisa menggunakan beberapa perbaikan. Idenya adalah untuk membangun kotak di mana
-\|/-
sel-sel diganti dengan bilangan bulat berturut-turut, misalnyaDan kemudian untuk menggantinya dengan karakter yang benar (berpotensi spasi) di akhir.
sumber
Python 2,
10110098 bytesumber
print
tidak perluJavaScript (ES6),
8780 byteMenggunakan rekursi untuk membuat string keluaran dari bawah ke atas.
EDIT : Terima kasih kepada @Neil untuk mencukur 7 byte dari 87 byte
Asli
Cuplikan uji:
sumber
SyntaxError
untuk saya.JavaScript (ES6),
149139137 byteSaya menyukai ide @ MartinEnder tentang pengindeksan
-\|/
karakter dan saya ingin melihat bagaimana hal itu terjadi di ES6. Tampaknya saya tidak melakukannya dengan baik. Mencoba mencari tahu apakah ini dapat ditingkatkan menggunakanfor...of
.Suntingan
.replace
, memindahkan pengindeksan langsung keg()
gantinya.f=
dalam byte keduaUji
sumber
Java,
186177 byteTidak dicoba coba online
sumber
Excel, 131 byte
Input diambil sebagai tuple, Height
H
inA1
,N
inB1
. Formula yang berisi sel harus mengaktifkan Pembungkus Teks. Sarankan menggunakan font spasi-Mono.sumber
A1
danB1
dan menambahkan catatan sederhana bahwa ini memang membutuhkan sel panggilan untuk memiliki opsi teks pembungkus untuk menjadi kenyataan. Mungkin juga untuk mendapatkan keselarasan yang tepat itu harus memiliki font satu spasi seperti Courier New atau Lucidia ConsoleC ++ 11,
155148145 byteTidak Disatukan :
Penggunaan :
sumber
Python 3,
134121118111 byteUji di sini: https://repl.it/CYL1/0
Tidak golf:
Saya ingin menambahkan side overflow ke daftar pemahaman, tapi saya tidak bisa memerasnya, jadi saya harus pergi dengan loop sementara.Disimpan 13 byte!sumber
'\|/'[:max(0,n-h)]
menjadi seperti solusi Python 2.Perl 5 , 91 byte
Cobalah online!
sumber
Pip , 50 byte
Cobalah online!
Ugh, ini terlalu lama ... tidak tahu bagaimana memperpendeknya lagi. Pengindeksan siklis, yang biasanya bermanfaat, menghabiskan byte ekstra kali ini.
sumber
PowerShell ,
109108104 byteCobalah online!
Kehilangan banyak pada pengindeksan mahal tetapi masih layak-ish. Namun saya tidak yakin indeks matematika saya optimal. Mencuri beberapa logika dari jawaban lain untuk menyimpan byte. Juga ingat prioritas untuk membuat beberapa parens untuk -4 byte.
sumber
05AB1E , 45 byte
Pasti bisa main golf .. Tidak terlalu senang dengan tbh saat ini.
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
LR'(ì')«¹x‚3+¬UŸ¦ζJ¹XŸJ¦1úr)˜»
dan itu baru setengah dilakukan.