Setiap sel dalam otomat seluler seperti hidup hanya membutuhkan satu bit untuk mewakilinya karena hanya bisa hidup atau mati. Itu berarti hanya ada dua warna; membosankan.
Gambar normal memiliki 24 bit per piksel (8 di masing-masing RGB). Ini berarti dalam gambar normal dengan piksel sebagai sel Anda bisa mensimulasikan 24 game seperti hidup sekaligus!
Tantangan
Tugas Anda adalah menulis sebuah program yang akan menerapkan satu generasi aturan otomat seluler yang mirip dengan gambar kedalaman 24-bit (dalam format apa pun yang Anda suka), dan menampilkan gambar yang dihasilkan.
Masing-masing dari 24 lapisan akan menggunakan seperangkat aturan hidup yang sama, ketat di dalam lapisan itu sendiri. 24 lapisan tidak saling berinteraksi.
Juga
- Nol adalah sel mati dan sel hidup.
- Kondisi batas bersifat periodik (membentuk torus).
- Setiap dimensi gambar harus bekerja.
Input output
Program Anda perlu mempertimbangkan 3 argumen, melalui stdin atau baris perintah (atau padanan terdekat bahasa Anda):
- Nama file gambar input.
- String digit 0 hingga 8 dalam urutan yang meningkat yang menunjukkan kapan sel baru dilahirkan:
- Jika digit d adalah dalam string maka sel-sel mati menjadi hidup ketika mereka memiliki d tetangga hidup.
- Contoh:
3
adalah Kehidupan normal - Sel-sel mati dengan 3 tetangga yang hidup menjadi hidup.
- String digit 0 hingga 8 dalam urutan yang meningkat yang menunjukkan kapan sel yang ada bertahan:
- Jika digit d adalah dalam string maka sel-sel hidup dengan d tetangga hidup bertahan hidup ke generasi berikutnya, jika tidak mereka mati.
- Contoh:
23
adalah Kehidupan normal - Hanya sel dengan tepat 2 atau 3 tetangga yang bertahan ke babak berikutnya.
Perhatikan bahwa lingkungan Moore selalu digunakan. Baca ini atau ini untuk info lebih lanjut tentang apa yang secara tepat mendefinisikan otomat seperti kehidupan dan banyak aturan yang menarik.
Gambar keluaran 1-generasi-nanti harus ditampilkan atau disimpan sebagai out.png
( bmp
atau apa pun).
pengajuan
Kode terpendek dalam byte menang.
Anda harus menyertakan setidaknya satu gambar uji dan tiga generasi berikutnya untuk beberapa aturan non-sepele. Gunakan avatar Anda dan aturan Hidup normal jika Anda tidak dapat memikirkan hal lain yang lebih baik.
Jika Anda suka, Anda dapat menggunakan Gosper Glider Gun ini di mana satu-satunya bit yang hidup berada di lapisan 128 hijau (itu pasti akan bekerja dalam Kehidupan normal):
Memposting urutan yang menarik atau bahkan animasi sangat dianjurkan.
sumber
Jawaban:
MATLAB: 275
Favorit saya dari parameter yang saya coba adalah
45678
,568
yang mengikuti disintegrasi bertahap menghasilkan langit bintang yang berkelap-kelip. Gambar ini menggambarkan, "disintegrasi kegigihan ingatan."Kode penghasil gif yang tidak digabungkan (menerima PNG tanpa ekstensi):
Kode golf yang menerima nama file lengkap (yang bisa berupa GIF, JPEG, dan mungkin hal-hal lain) dan menulis ke
out.png
:Fakta yang ditemukan sebelumnya adalah bahwa parameter
12
,1
dapat digunakan untuk menghasilkan fraktal seperti karpet Sierpinski. Berikut ini adalah satu dengan titik benih ditempatkan secara acak di setiap bit:sumber
Mathematica, 359
Saya mengambil input dari string prompt dalam urutan (1) aturan kelahiran, (2) aturan bertahan hidup, (3) nama file, dan saya menampilkan hasilnya tepat di Mathematica.
Ini harus dapat menangani sebagian besar format populer, selama file tersebut sebenarnya memiliki kedalaman 24-bit.
Berikut ini adalah versi yang agak tidak dikoleksi:
Berikut adalah dua contoh menggunakan avatar Rainbolt :
20 generasi menggunakan Game of Life standar
[3,23]
:20 generasi menggunakan
[456,34567]
:Dan di sini ada GIF dari 200 generasi pertama dari aturan yang terakhir. GIF melewatkan setiap frame ketiga, karena saya tidak bisa memampatkannya di bawah 2MB jika tidak:
sumber
Python 2, 427
Bagi mereka yang tidak memiliki Mathematica;)
Itu meminta nama file, maka kasus kelahiran, kemudian kasus kelangsungan hidup. Jadi untuk aturan kehidupan normal, Anda dapat memasukkan
test.bmp
, lalu3
, kemudian23
(tidak ada kutipan atau apapun yang diperlukan)Saya menggunakan pemformatan string untuk mengindeks dan menggabungkan kembali bit warna, meskipun saya khawatir itu mungkin tidak optimal.
Perhatikan bahwa ini sangat lambat.
Contoh
Kehidupan tinggi dan campuran seni yang hebat bukan? (Aturan
36
/23
.)Asli / Generasi 1
Generasi 2 / Generasi 3
sumber
Java, 1085 byte
Contoh (aturan 368/245):
Kejadian 0:
Kejadian 1:
Kejadian 2:
Gen 3:
Kejadian 4:
sumber