Otomat seluler yang menyerupai kehidupan adalah otomat seluler yang mirip dengan Conway's Game of Life, di mana mereka beroperasi pada kotak persegi (secara teoritis) tak terhingga besar, di mana setiap sel memiliki 8 tetangga yang tepat, dan merupakan salah satu dari 2 negara, yaitu hidup dan mati .
Namun, versi suka-suka ini berbeda dalam cara yang krusial: aturan untuk sel yang diberikan menjadi hidup dan aturan untuk sel yang diberikan untuk bertahan hidup ke generasi berikutnya.
Sebagai contoh, Game of Life klasik menggunakan aturan B3/S23
, yang berarti bahwa dibutuhkan 3 sel hidup untuk melahirkan yang baru, dan 2 atau 3 tetangga yang hidup untuk bertahan hidup. Untuk tantangan ini, kami akan berasumsi bahwa tetangga tidak memasukkan dirinya sendiri, sehingga setiap sel memiliki 8 tetangga.
Tugas Anda adalah, diberikan konfigurasi awal, aturan kelahiran, aturan bertahan hidup dan bilangan bulat positif (jumlah generasi yang akan dijalankan), mensimulasikan robot mirip-kehidupan menggunakan aturan-aturan itu untuk jumlah generasi yang diberikan dalam kode sesingkat mungkin . Konfigurasi awal akan berupa matriks kuadrat / array 2 dimensi atau string multiline, Anda dapat memilih. Yang lain dapat diberikan dalam format dan metode apa pun yang masuk akal.
Misalnya, jika aturan kelahiran adalah 12345678
(tetangga yang hidup), aturan survival adalah 2357
dan konfigurasi awal adalah
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
dua generasi berikutnya akan menjadi
Generation 1: Generation 2:
0 0 0 0 0 1 1 1 1 1
0 1 1 1 0 1 1 0 1 1
0 1 0 1 0 1 0 1 0 1
0 1 1 1 0 1 1 0 1 1
0 0 0 0 0 1 1 1 1 1
Jika jumlah generasi yang diberikan adalah 10, output akan menjadi sesuatu di sepanjang garis
0 1 1 1 0
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
0 1 1 1 0
Anda tidak harus menangani perubahan yang terjadi di luar batas yang diberikan oleh matriks input, namun, semua sel di luar matriks mulai mati. Oleh karena itu, matriks input dapat berukuran berapa saja, hingga nilai maksimum yang dapat didukung bahasa Anda. Anda tidak harus mengeluarkan papan antara generasi.
Ini adalah kode-golf sehingga kode terpendek menang.
Uji kasus
Ini menggunakan B/S
notasi untuk menunjukkan aturan yang digunakan
B2/S2
,, generations = 100
konfigurasi:
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
Keluaran:
0 0 0 0 0 0 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
B1357/S2468
,, generations = 12
konfigurasi:
1 0 1 0 1 0
0 1 1 0 1 0
1 0 0 0 0 0
0 0 0 0 0 1
1 1 1 1 1 0
0 1 1 0 0 1
Keluaran:
0 1 0 0 0 0
0 1 1 1 1 0
0 1 0 1 1 0
1 1 1 0 0 0
0 0 1 1 1 0
0 1 1 0 0 0
Jika Anda perlu membuat lebih banyak kasus uji, Anda dapat menggunakan simulator yang luar biasa ini . Pastikan untuk membatasi ukuran papan