Tantangan
Musim dingin semakin dekat dengan banyak tempat menerima lapisan salju pertama untuk musim 15/16, jadi mengapa kita tidak mengeluarkan mesin salju dan memberi kode pada kita salju?
Diberikan bilangan bulat n
melalui STDIN, menghasilkan representasi ASCII kepingan salju Beta (seperti yang dijelaskan di bawah) di tingkat n
.
Kepingan Salju Beta
Kepingan salju dimulai pada level 0 dengan satu x:
x
Lalu, di setiap sudut Anda menambahkan salah satu dari bentuk ini:
x
xx
Anda menambahkan bentuk di atas ke sudut kanan atas. Untuk sudut kanan bawah, putar 90 ° searah jarum jam, untuk kiri bawah, 180 ° searah jarum jam dan untuk kiri atas, 270 ° searah jarum jam.
Jika Anda melakukannya, Anda mendapatkan bentuk berikut:
x x
xx xx
x
xx xx
x x
Perhatikan orientasi bentuk. Melanjutkan kita menambahkan lebih banyak bentuk ke setiap sudut, menggunakan aturan orientasi yang dijelaskan di atas, ke diagram untuk mendapatkan level 2:
x x x
xxxxxxx
xx x x xx
xxx xxx
xx x xx
xxx xxx
xx x x xx
xxxxxxx
x x x
Perhatikan bahwa bentuk hanya ditambahkan ke x
s dengan dua sisi terbuka atau lebih (yang disebut sebagai sudut di atas).
Bentuk-L dapat dan akan tumpang tindih untuk nilai yang n
lebih besar dari 1. Misalnya:
Jika level 0 adalah:
x x
Maka harus ada tumpang tindih di level 1 (ditunjukkan dengan o
, jangan termasuk o
dalam output Anda):
x o x
xxxoxxx
x x
xxxoxxx
x o x
Tugas Anda adalah menampilkan representasi kepingan salju Beta dari ASCII ini.
Bonus
Akan ada bonus 50 rep untuk program terpendek yang, ketika n
negatif, mengeluarkan kepingan salju (pada level n*-1
) sebagai gambar atau secara grafik ke layar.
Anda mungkin memiliki program terpisah untuk karunia dan tugas utama.
Kemenangan
Program terpendek dalam byte menang.
2 or more exposed sides
aturannya? Dengan asumsi center0,0
kemudian1,1
,1,-1
,-1,-1
,-1,1
semua memiliki 2 sisi terkena (sisi menghadap ke arah yang lain 4 poin). Bukankah seharusnya 3+ sisi terbuka untuk menghindari pengisian? Atau bergantian hanya mengembang jika memiliki 0 atau 1 tetangga (kardinal).Jawaban:
CJam,
888382 byteUji di sini.
Saya pikir saya bisa menghemat banyak dalam cara saya mendeteksi di mana sudut-sudutnya. Tapi setidaknya saya akhirnya tahu seperti apa iterasi selanjutnya:
N = 3 :
N = 4:
Melihat ini, mereka tampaknya jauh lebih teratur daripada yang saya harapkan, dan semacam solusi analitik yang menghasilkan mereka secara langsung mungkin jauh lebih pendek.
sumber
Python 2, 269 byte
Tidak menempatkan bentuk di setiap sudut, tetapi menentukan apakah suatu karakter berada di kepingan salju berdasarkan koordinat.
Pertama salah satu sudut dihasilkan, dan kemudian cermin ke kepingan salju penuh.
sumber