Diberi bilangan bulat tunggal di x
mana 0 <= x <= 91
keluaran setumpuk botol bir dengan banyak botol (dan rak) hilang. Demi kesederhanaan, saya hanya akan menunjukkan 6 botol pertama dan apa jadinya untuk masing-masing input pertama.
Berikut tumpukan botol, setiap nomor adalah botol yang harus Anda buang untuk input tersebut (diindeks 1):
Catatan, kami menggunakan 91 bukannya 99 karena 99 akan menghasilkan tumpukan botol yang tidak stabil.
Contoh
Dengan 0 botol hilang ( x=0
):
|=|
| |
| |
/ \
. .
|-----|
| |
|-----|
|_____|
=============
|=| |=|
| | | |
| | | |
/ \ / \
. . . .
|-----| |-----|
| | | |
|-----| |-----|
|_____| |_____|
=====================
|=| |=| |=|
| | | | | |
| | | | | |
/ \ / \ / \
. . . . . .
|-----| |-----| |-----|
| | | | | |
|-----| |-----| |-----|
|_____| |_____| |_____|
=============================
[THERE ARE MORE UNDER THIS]
Untuk hasil lengkap 0, lihat di sini: https://pastebin.com/ZuXkuH6s
Dengan 1
botol yang hilang ( x=1
):
|=| |=|
| | | |
| | | |
/ \ / \
. . . .
|-----| |-----|
| | | |
|-----| |-----|
|_____| |_____|
=====================
|=| |=| |=|
| | | | | |
| | | | | |
/ \ / \ / \
. . . . . .
|-----| |-----| |-----|
| | | | | |
|-----| |-----| |-----|
|_____| |_____| |_____|
=============================
[THERE ARE MORE UNDER THIS]
Sekali lagi, ini adalah dua baris pertama dari sini: https://pastebin.com/ZuXkuH6s (dengan 1 dihapus) ...
Dengan 2 botol yang hilang:
|=|
| |
| |
/ \
. .
|-----|
| |
|-----|
|_____|
=====================
|=| |=| |=|
| | | | | |
| | | | | |
/ \ / \ / \
. . . . . .
|-----| |-----| |-----|
| | | | | |
|-----| |-----| |-----|
|_____| |_____| |_____|
=============================
[THERE ARE MORE UNDER THIS]
[INPUT TAMBAHAN DIHAPUS]
Dengan 91 botol hilang ( n = 91
):
:(
Anda harus menampilkan wajah yang tidak bahagia, karena Anda kehabisan bir.
Aturan
- Botol harus dikeluarkan dari kiri ke kanan.
- Rak dihapus ketika tidak ada bir yang tersisa di atas rak.
- Untuk input 0, Anda mengeluarkan 91 botol yang ditumpuk dalam segitiga.
- Baris bawah memiliki 13 botol, bagian atas memiliki 1.
- 1 ruang antara setiap botol di setiap rak.
- Rak harus menjadi input di antara setiap baris botol.
- Rak dapat digunakan
=
,-
atau#
sebagai karakter. - Rak harus lebih lebar 3 (di setiap sisi) dari botol yang mereka pegang.
- Rak dapat digunakan
- Ini adalah kode-golf , kemenangan byte-count terendah.
Jawaban:
Arang ,
9991 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sebenarnya versi aslinya hanya
8370 byte:Penjelasan:
Isi array yang memberikan informasi ke mana rak-rak itu pergi dan berapa lama mereka.
Cetak wajah yang tidak bahagia, meskipun ini akan segera ditimpa oleh botol bir pertama (jika ada).
Loop melalui botol bir yang tersisa.
Periksa untuk melihat apakah rak perlu ditarik.
Cetak rak dan posisinya siap untuk menggambar botol berikutnya di atasnya.
Gambarkan botol dan siapkan posisi untuk mengambil botol lain.
sumber
for
loop. Ini adalahwhile
perulangan, jadi saya harus melakukan sesuatu secara lebih manual.for
loop adalah cara untuk berjalan terus ... 13 byte disimpan! (Yah, saya agak beruntung dengan mudahnya mengisi array saya.)Python 3 ,
306299265253255252247244 byteUpaya cepat, bisa dioptimalkan
Edit: -2 byte terima kasih kepada @MrXcoder
Sunting: -32 byte karena spasi tidak diperlukan
Edit: -12 byte dengan menggabungkan dua fungsi
Edit: -5 byte terima kasih kepada @ musicman523
Edit: +7 byte untuk menghapus rak setelah baris terakhir
Edit: -3 byte
Sunting: -5 byte karena fungsi lambda hanya digunakan satu kali di peta
Edit: -3 byte dengan menggunakan fungsi string
center
Cobalah online!
sumber
d=
dalam tajuk, karena tidak bersifat rekursif untuk -2 byteE
variabelJavaScript (ES6),
251256 byteSunting: Disimpan 2 byte berkat @dzaima .
Sunting: Menambahkan 7 byte untuk memperbaiki masalah dengan parameter.
:(
Inilah versi (sebagian besar) yang tidak disolf:
Kode uji
Tampilkan cuplikan kode
sumber
r
"makro" Anda; Saya merasa mungkin ada metode yang lebih pendek, tetapi tidak ada yang saya coba lakukan.C (gcc) ,
360358 byteCobalah online!
Penjelasan:
sumber
Python 2, 436 byte
Astaga !!
Metode saya terlalu bertele-tele, tetapi bagaimanapun juga: metode ini pada dasarnya 'menarik' setiap baris botol, menambahkan spasi, dan kemudian 'menghapus' apa pun yang diperlukan, mencetak apa pun yang tersisa.
Halvard Hummel jauh lebih baik.
sumber