Hancurkan Waktu!
Ini adalah angsuran # 5 dari seri Random Golf of the Day dan ASCII Art of the Day dari Pengoptimal . Kiriman Anda dalam tantangan ini akan diperhitungkan di kedua papan peringkat (yang dapat Anda temukan di kiriman yang tertaut). Tentu saja, Anda dapat memperlakukan ini seperti tantangan golf kode lainnya, dan menjawabnya tanpa khawatir tentang kedua seri sama sekali.
Lubang 5: Diamond Tilings
Hexagon biasa selalu dapat dilapisi dengan berlian seperti:
Kami akan menggunakan representasi seni ASCII dari tilings ini. Untuk segi enam sisi-panjang 2, ada 20 sudut seperti:
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
/\_\_\ /\_\_\ /\_\_\ /\_\_\ /_/\_\ /_/\_\ /\_\_\ /_/\_\ /_/\_\ /_/\_\
/\/\_\_\ /\/_/\_\ /\/_/_/\ /\/_/\_\ /\_\/\_\ /\_\/_/\ /\/_/_/\ /\_\/\_\ /\_\/_/\ /_/\/\_\
\/\/_/_/ \/\_\/_/ \/\_\_\/ \/_/\/_/ \/\_\/_/ \/\_\_\/ \/_/\_\/ \/_/\/_/ \/_/\_\/ \_\/\/_/
\/_/_/ \/_/_/ \/_/_/ \_\/_/ \/_/_/ \/_/_/ \_\/_/ \_\/_/ \_\/_/ \_\/_/
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
/_/_/\ /\_\_\ /_/\_\ /_/_/\ /_/\_\ /_/\_\ /_/_/\ /_/_/\ /_/_/\ /_/_/\
/\_\_\/\ /\/_/_/\ /_/\/_/\ /\_\_\/\ /\_\/_/\ /_/\/_/\ /_/\_\/\ /\_\_\/\ /_/\_\/\ /_/_/\/\
\/\_\_\/ \/_/_/\/ \_\/\_\/ \/_/\_\/ \/_/_/\/ \_\/_/\/ \_\/\_\/ \/_/_/\/ \_\/_/\/ \_\_\/\/
\/_/_/ \_\_\/ \_\/_/ \_\/_/ \_\_\/ \_\_\/ \_\/_/ \_\_\/ \_\_\/ \_\_\/
Dengan panjang sisi yang sama N
, Anda harus membuat ubin seperti segi enam dengan panjang sisi N
secara acak. Distribusi yang tepat tidak masalah, tetapi setiap ubin harus dikembalikan dengan probabilitas tidak nol.
Sebab N ≤ 4
, kiriman Anda harus menghasilkan ubin dalam waktu 1 menit setidaknya 80% dari waktu dan setidaknya 80% dari ubin harus berpotensi dihasilkan dalam 1 menit. Sebagian besar pendekatan tidak perlu khawatir tentang aturan ini (ini sangat lunak) - ini hanya untuk mengesampingkan algoritma berbasis penolakan yang sangat naif yang menghasilkan string arbitrer sampai satu terjadi ubin.
Anda mungkin ingin tahu bahwa jumlah total kemiringan yang mungkin untuk N yang diberikan dapat ditemukan di OEIS A008793 .
Anda dapat menulis program atau fungsi lengkap dan mengambil input melalui STDIN (atau alternatif terdekat), argumen baris perintah atau argumen fungsi dan menghasilkan output melalui STDOUT (atau alternatif terdekat), mengembalikan nilai fungsi atau parameter fungsi (keluar).
Anda tidak boleh mengeluarkan lebih banyak spasi utama dari yang diperlukan untuk menyelaraskan segi enam (yaitu sudut kiri segi enam seharusnya tidak memiliki spasi di depannya). Setiap baris dapat berisi hingga N
spasi tambahan (tidak harus konsisten, sehingga Anda bisa misalnya memiliki keluaran persegi panjang, mencetak kotak pembatas hexagon).
Ini adalah kode golf, jadi pengiriman terpendek (dalam byte) menang. Dan tentu saja, pengiriman terpendek per pengguna juga akan masuk ke papan peringkat keseluruhan seri.
Papan peringkat
Pos pertama dari setiap seri menghasilkan papan peringkat.
Untuk memastikan jawaban Anda muncul, mulailah setiap jawaban 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. Contohnya:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(Bahasa saat ini tidak ditampilkan, tetapi cuplikan memang membutuhkan dan menguraikannya, dan saya dapat menambahkan leaderboard berdasarkan bahasa di masa mendatang.)
For N ≤ 4, your submission must produce a tiling within 1 minute at least 80% of the time.
terlalu mudah: 80% dari waktu ubin yang sama, dasar, kalau tidak saya menemukan ubin lain di waktu apa pun yang saya inginkan