Dengan keadaan kotak Game of Life yang persegi, tentukan apakah itu bisa berevolusi dari kondisi sebelumnya, atau hanya bisa dibuat. Yaitu, kenali apakah negara itu adalah negara "Taman Eden" .
Memasukkan
Kotak persegi menyatakan, dengan 1 menunjukkan "hidup" dan 0 menunjukkan "mati". Anda dapat memilih dua simbol yang dapat dibedakan daripada 0 dan 1 jika diinginkan.
Panjang sisi kisi tidak akan nol, tetapi bisa berupa bilangan asli 1 <= N <= 20.
Setiap atau semua sel di luar grid input mungkin hidup pada generasi ini, dan salah satu atau semua dari mereka mungkin telah hidup pada generasi sebelumnya. Alam semesta yang dipertimbangkan tidak terbatas, sehingga tidak ada syarat batas. Tepi input bukan tepi alam semesta. Secara khusus, kisi tidak membungkus.
Input mungkin dalam bentuk string yang dibatasi baris, atau string tunggal. Jika diinginkan, Anda dapat menggunakan panjang sisi atau area kisi sebagai input tambahan (sebelum atau setelah kisi).
Format input yang dapat diterima:
010,101,010
010101010
010
101
010
3 010101010
Keluaran
"Dibuat" jika tidak ada keadaan sebelumnya yang mungkin (termasuk keadaan yang lebih besar dari kisi masukan) yang akan mengarah ke keadaan masukan pada generasi berikutnya.
"Evolved" jika terdapat setidaknya satu keadaan sebelumnya yang mungkin (termasuk keadaan lebih besar dari kisi masukan) yang akan mengarah pada keadaan masukan pada generasi berikutnya.
Anda dapat menggunakan dua string atau angka yang dapat dibedakan sebagai ganti "Dibuat" dan "Berkembang" jika diinginkan.
Perhatikan bahwa keadaan sebelumnya yang mungkin tidak perlu berbeda dari input. Jika sebuah negara memiliki dirinya sebagai generasi berikutnya, maka ia harus dianggap berevolusi.
Uji kasus
010
101
010 Evolved
0101110100
0010101001
1011100110
0101111101
1001001111
1111001001
1011111010
0110011101
1001010100
0010111010 Created
Kasing uji coba diambil dari Game of Life Page milik Achim Flammenkamp .
Catatan
Berkat trichoplax untuk menulis tantangan ini dan saya mengadopsinya dari sini
sumber
m
-dengan-n
, jika saya menguji semua2^(m*n)
keadaan awal yang mungkin , kompleksitas program akan menjadi besar, tetapi itu memecahkan masalah dengan hanya memeriksa apakah hasilnya cocok dengan inputJawaban:
Java- 1254 bytes- solusi yang sangat buruk
Dibutuhkan input melalui baris perintah.
Apa yang dilakukannya
Tidak ada trik mewah di sini, hanya solusi kekerasan. Ia melewati setiap papan awal yang mungkin dari ukuran X, Y dan mengulanginya sekali melalui algoritma Game of Life dan memeriksanya terhadap papan input. Ini membutuhkan waktu yang SANGAT lama, karena setiap papan ukuran x oleh y memiliki 2 ^ (x * y) kemungkinan kombinasi. Butuh hampir 10 menit untuk menjalankan papan 4x5. Bodohnya bodoh untuk sesuatu yang lebih sederhana dari itu.
Jika mungkin itu adalah papan berevolusi, ia mencetak "berevolusi.", Dan jika itu tidak mungkin telah berevolusi, itu mencetak "dibuat.".
sumber