Ini adalah ulang tahun teman saya segera dan karena dia adalah seorang programmer dan pecinta seni ASCII, saya pikir saya akan membuatnya kue ASCII!
Sayangnya, saya terus melupakan usianya saat ini, jadi saya ingin memiliki program untuk oven ASCII saya, yang membuat kue dengan jumlah lilin tertentu, jadi saya tidak perlu melakukannya sendiri lagi jika saya salah dengan nya usia.
Oven ASCII hanya memiliki memori terbatas dan kapasitas penyimpanan, sehingga harus menggunakan byte sesedikit mungkin .
Tugas Anda:
Tulis program yang menampilkan kue ulang tahun ke konsol, dengan lilin sebanyak yang ditentukan input.
Persyaratan kue adalah:
- Itu harus memiliki perbatasan, dibangun dari garis horizontal
-
dan vertikal|
, dan simpul+
. - Lebar minimal 5 karakter (termasuk batas kue
|
) - Tinggi minimal 5 karakter (termasuk batas kue
-
) - Harus ada karakter spasi putih
antara batas kue dan dasar lilin pertama (bukan nyala api), di setiap sisi, kecuali jika ada nyala api di ruang itu. Dasar nyala api atau lilin tidak akan bisa menumpuk batas kue.
- Lebar maksimum kue adalah 9 karakter, jadi ada maksimum 5 lilin per baris.
- Karena kita tidak ingin kue kita menjadi 2 dimensi, itu harus 2 baris ekstra tinggi, untuk memberikannya volume. Tambahkan batas lain di bagian bawah dan hubungkan simpul dengan yang di atasnya, lagi menggunakan karakter ASCII dari atas (
-
,|
dan+
).
Persyaratan lilin adalah:
- Terdiri dari dasar
|
dan nyala*
, dengan nyala ditumpuk di atas dasar. - Lilin mungkin tidak berbatasan langsung dengan satu sama lain, kecuali secara diagonal.
- Lilin ditempatkan dari kiri ke kanan, kemudian dari atas ke bawah, dengan maksimum 5 dalam satu baris.
(Catatan: Jika ada 5 lilin di baris sebelumnya, baris berikutnya tidak mungkin memiliki 5 juga, karena itu mereka akan berdekatan.)
Catatan tambahan:
- Lebar kue tergantung pada jumlah lilin di baris pertama , tetapi harus minimal 5 karakter dan lebar maksimum 9 karakter.
- Lilin diisi mulai dari baris paling atas, dari kiri ke kanan. Sekali satu baris jika penuh, yang berikutnya harus dimulai pada baris di bawah yang pertama.
Memasukkan:
Anda dapat menerima nomor dalam format (wajar) yang Anda suka.
Untuk tantangan ini, Anda dapat mengasumsikan bahwa jumlahnya antara 0 dan 2 31 (tidak termasuk 0), meskipun saya tidak mengakui seseorang yang setua ini.
Keluaran:
Anda dapat mengembalikan string atau langsung menulis kue yang dihasilkan ke konsol output.
Aturan:
- Celah standar dilarang.
- Ini adalah kode-golf , jadi kode terpendek dalam byte, dalam bahasa apa pun, menang.
Contoh:
Memasukkan: 8
+-----------+
| * * * * * |
| |*|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Memasukkan: 2
+-----+
| * * |
| | | |
| |
+-----+
| |
+-----+
Memasukkan: 12
+-----------+
| * * * * * |
| |*|*|*|*| |
| *|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Semoga berhasil!
Jawaban:
Arang ,
767170 6646 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan 1 byte berkat @ASCII_Only. Menyimpan 20 byte besar dengan menemukan cara yang rapi untuk menggambar lilin. Penjelasan:
Hitung ukuran kedua kue keseluruhan termasuk volume tambahan dan hanya bagian atas kue sehingga bisa ditarik. ((
=
= ASCII 61) = (+
= ASCII 43) + 9 * 2 untuk volume tambahan.)Pindahkan kursor ke baris pertama 5 lilin. Lingkari setiap lilin.
Cetak lilin dan gerakkan ke kanan dua karakter untuk lilin berikutnya.
Namun setelah lilin (diindeks-nol) ke-4, ke-8, ke-13, ke-17, ke-22, dll. (Yang ada di akhir baris),
pindahkan kursor ke lilin pertama di baris berikutnya. Ini berfungsi pada baris aneh dan genap!
sumber
A
di awal: P (btw terima kasih telah menemukan pegolf lain (tidak-begitu-) tepi kasus)Jelly , 67 byte
Tautan monadik yang mengambil nomor dan mengembalikan daftar karakter atau program lengkap untuk mencetak hasilnya.
Cobalah online!
Bagaimana?
sumber
Japt , 94 byte
Cobalah online!
sumber