Tugas Anda adalah membuat simulasi Game of Life yang mewakili jam digital, yang memenuhi properti berikut:
Jam menampilkan jam dan menit dalam desimal (misalnya
12:00
,3:59
,7:24
) dengan negara yang berbeda untuk masing-masing 1.440 menit dari hari - baik jam akan pergi dari 0 hingga 23 atau dari 1 sampai 12 dengan indikator PM.Polanya periodik, dan negara berputar-putar tanpa ada interaksi dari luar.
Pembaruan menit secara berkala - dari satu perubahan menit ke yang berikutnya membutuhkan jumlah generasi yang sama.
Pengamat anonim dapat mengetahui secara sekilas bahwa tampilan seharusnya adalah jam digital. Secara khusus, ini mensyaratkan:
Digitnya terlihat dan dapat dibedakan dengan jelas. Anda harus bisa tahu dengan pasti kapan waktu yang ditampilkan.
Digit pembaruan di tempat. Setiap nomor baru muncul di tempat yang sama dengan nomor sebelumnya, dan ada sedikit atau tidak ada pergerakan kotak pembatas dari angka. (Khususnya, digit tidak mengandung 10 digit berbeda di tempat berbeda yang terungkap setiap kali digit berubah.)
Angka-angka tersebut muncul di samping satu sama lain, tanpa jumlah ruang yang berlebihan di antara mereka.
Program Anda akan dinilai berdasarkan hal-hal berikut, secara berurutan (dengan kriteria yang lebih rendah bertindak sebagai tiebreak untuk kriteria yang lebih tinggi):
Bounding box size - kotak persegi panjang dengan area terkecil yang sepenuhnya berisi solusi yang menang.
Eksekusi tercepat - generasi paling sedikit untuk maju satu menit menang.
Hitungan sel hidup awal - jumlah kemenangan yang lebih kecil.
Pertama ke posting - posting sebelumnya menang.
sumber
Jawaban:
11.520 generasi per hitungan jam / 10.016 x 6.796 kotak / 244.596 hitungan pop
Ini dia ... Menyenangkan.
Nah, desainnya tentu tidak optimal. Baik dari sudut pandang kotak pembatas (angka 7-segmen itu besar ), maupun dari jumlah populasi awal (ada beberapa hal yang tidak berguna, dan beberapa hal yang pasti bisa dibuat lebih sederhana), dan kecepatan eksekusi - yah ... saya Saya tidak yakin.
Tapi, hei, ini indah. Melihat:
Menjalankannya!
Dapatkan desain dari intisari ini . Salin seluruh file teks ke clipboard.
Baru : ini adalah versi dengan indikator AM dan PM untuk yang menuntut
Buka simulator hidup JavaScript Conway online . Klik impor , tempel teks desain. Anda harus melihat desainnya. Kemudian, buka pengaturan dan atur langkah pembuatan ke 512, atau sesuatu di sekitar garis itu, atau Anda harus menunggu selamanya untuk melihat pembaruan tampilan jam.
Klik jalankan , tunggu sebentar dan kagum!
Tautan langsung ke versi dalam browser.
Perhatikan bahwa satu-satunya algoritma yang membuat desain besar ini dapat digunakan adalah hashlife. Tetapi dengan ini, Anda dapat mencapai seluruh jam dalam hitungan detik. Dengan algoritma lain, bahkan tidak praktis untuk melihat jamnya berubah.
Bagaimana itu bekerja
Ini menggunakan teknologi p30. Hanya hal-hal dasar, pesawat layang dan pesawat ruang angkasa ringan. Pada dasarnya, desainnya top-down:
Lagi pula, sebenarnya tidak ada yang luar biasa dalam desain ini. Tidak ada reaksi luar biasa yang telah ditemukan dalam proses ini, dan tidak ada kombinasi yang benar-benar pintar yang tidak pernah dipikirkan sebelumnya. Hanya bit diambil di sana-sini dan disatukan (dan saya bahkan tidak yakin saya melakukannya dengan cara yang "benar" - saya benar-benar benar-benar baru dalam hal ini). Namun, itu membutuhkan banyak kesabaran. Membuat semua peluncur itu muncul pada waktu yang tepat di posisi yang tepat adalah menggaruk-garuk kepala.
Kemungkinan pengoptimalan:
sumber