Tuliskan program sesingkat mungkin yang mencakup satu set bilangan bulat positif yang berbeda dan menghasilkan rendering ASCII dari segi enam konsentris dengan panjang sisi tersebut, dibuat dari garis miring, garis bawah, spasi, dan baris baru.
Program terpendek dalam byte yang dihitung oleh https://mothereff.in/byte-counter menang.
Contohnya
(Mereka terlihat lebih baik dengan lebih sedikit spasi baris.)
Jika inputnya adalah 1
output harus segi enam dengan panjang sisi 1:
__
/ \
\__/
Perhatikan bahwa dua garis bawah digunakan untuk bagian atas dan bawah segi enam sehingga lebih proporsional.
Secara umum, ukuran N hexagon berisi N garis miring pada setiap sisi miring dan 2 * N menggarisbawahi pada kedua bagian atas dan bawah.
Jika inputnya adalah 1 2
output harus hexagon konsentris dengan panjang sisi 1 dan 2:
____
/ __ \
/ / \ \
\ \__/ /
\____/
Jika inputnya adalah 1 3
output harus:
______
/ \
/ __ \
/ / \ \
\ \__/ /
\ /
\______/
Jika inputnya adalah 1 3 2
output harus:
______
/ ____ \
/ / __ \ \
/ / / \ \ \
\ \ \__/ / /
\ \____/ /
\______/
dll.
Aturan I / O
Input harus berasal dari baris perintah atau stdin tetapi mungkin dalam format apa pun yang paling nyaman.
Sebagai contoh, Anda mungkin memberikan setiap nomor sebagai argumen baris perintah: > myprogram 1 3 2
, atau Anda mungkin meminta pengguna untuk memasukkan nomor sebagai daftar terformat: [1, 3, 2]
.
Output harus menuju stdout atau setara dengan bahasa Anda.
Aturan tambahan
- Input akan selalu menjadi satu set bilangan bulat positif yang berbeda, tidak harus dalam urutan apa pun .
- Outputnya harus ...
- tidak mengandung karakter apa pun selain
/\ _
dan baris baru. - tidak memiliki ruang tambahan atau ruang utama yang tidak perlu.
- tidak mengandung baris baru yang mengarah asing tetapi mungkin memiliki satu baris tambahan opsional .
- tidak mengandung karakter apa pun selain
- Jika tidak ada input maka tidak menghasilkan apa-apa (kecuali mungkin satu baris baru).
- Jika ini membantu Anda dapat mengasumsikan bahwa bilangan bulat input kurang dari 16 .
1
merujuk ke segi enam terdalam atau terluar?1
(atau nomor apa saja) merujuk ke segi enam dengan panjang sisi 1. (Dengan peringatan bahwa 1 garis miring = 2 menggarisbawahi.) Jadi1
akan selalu merujuk ke segi enam terdalam.Jawaban:
CJam,
148116109 byteIni memakan waktu lebih lama dari yang saya harapkan. Awalnya, saya hanya ingin secara iteratif membangun kuadran kiri atas, seperti pada tantangan intan, dan kemudian mendapatkan sisanya dari mirroring. Tetapi saya tidak memperhatikan bahwa garis bawah tidak mematuhi simetri cermin antara bagian atas dan bawah. Jadi saya harus mengulang sebagian besar dari itu, untuk menghasilkan setengah kanan berulang dan kemudian hanya mirror sekali (ke kiri).
Uji di sini.
Contoh Fibonacci-esque:
Penjelasan:
Seperti yang dinyatakan di atas, saya mulai dengan membangun setengah kanan berulang. Yaitu, pada awalnya saya hanya memiliki satu ruang di grid, dan kemudian untuk setiap cincin yang mungkin, saya mengelilingi kotak yang ada di ruang atau semi-hexagon baru.
Setelah selesai, saya mirror setiap baris ke kiri dan pad dengan ruang terkemuka untuk perataan yang benar. Berikut ini adalah rincian kode:
sumber
Python -
251, 240, 239228Pendekatan alternatif (251):
sumber
APL (222 byte dalam UTF-8)
(dan 133 karakter)
Karena pertanyaan ini secara khusus meminta jumlah byte dalam representasi UTF8, saya harus benar-benar ungolf sedikit sehingga lebih lama tetapi representasi UTF8 lebih pendek. (Khususnya, karakter operator bolak-balik
⍨
adalah tiga byte sementara()
hanya dua, sehingga optimalisasi tidak berfungsi lagi, dan itu juga membuat penugasan menjadi sangat mahal.)Versi sebelumnya, yang lebih pendek dalam karakter (124) tetapi menggunakan lebih banyak byte ketika diwakili dalam UTF-8 (230, yang akan menempatkannya di tempat kedua):
Uji:
sumber
Perl 5, 352 (349 byte + 3 untuk
anE
bendera)Ini mungkin bisa bermain golf lebih banyak ..
Tidak Disatukan:
Contoh (
1 5 3 14
):sumber
C # -
388316 byteSunting: Mengubah cara menghindari pencetakan spasi tambahan dan melemparkan beberapa LINQ
Program sederhana yang mengambil argumen baris perintah. Itu beralih melalui setiap kemungkinan char di setiap baris persegi panjang yang ditentukan oleh dimensi segi enam maksimum dan menambahkannya ke garis saat ini, sebelum memotong garis dan mencetaknya secara berturut-turut (menghasilkan garis-trailing opsional baru).
Kode Golf:
Kode tidak dikunci:
sumber
APL (Dyalog Classic) , 151 byte (93 dengan pengkodean APL klasik)
Cobalah online!
sumber