Yaşam benzeri hücresel otomatlar , Conway'in Hayat Oyununa benzeyen hücresel otomatlardır, çünkü her bir hücrenin tam olarak 8 komşusuna sahip olduğu ve canlı ve ölü olan 2 durumdan biri olan (teorik olarak) sonsuz büyük bir kare ızgara üzerinde çalışırlar. .
Bununla birlikte, bu Benzeri versiyonlar önemli bir şekilde farklıdır: belirli bir hücrenin canlanması için kurallar ve belirli bir hücrenin bir sonraki kuşağa hayatta kalması için kurallar.
Örneğin, klasik Yaşam Oyunu kuralı kullanır B3/S23
, yani yeni bir hücrenin doğması için 3 canlı hücre ve hayatta kalmak için 2 veya 3 yaşayan komşu gerekir. Bu meydan okuma için, komşuların kendisini içermediğini varsayacağız, bu nedenle her hücrenin tam olarak 8 komşusu var.
Göreviniz, bir başlangıç yapılandırması, bir doğum kuralı, bir hayatta kalma kuralı ve pozitif bir tam sayı (çalıştırılacak nesil sayısı) verildiğinde, mümkün olan en kısa kodda verilen nesil sayısı için bu kuralları kullanarak Yaşam benzeri otomatı simüle eder. . Başlangıç yapılandırması bir kare matris / 2 boyutlu dizi veya çok satırlı bir dize olacaktır, seçebilirsiniz. Diğerleri herhangi bir makul biçimde ve yöntemde verilebilir.
Örneğin, doğum kuralı 12345678
(yaşayan komşular) ise, hayatta kalma kuralıydı 2357
ve başlangıç yapılandırması
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
gelecek iki nesil
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
Verilen nesillerin sayısı 10 olsaydı, çıktı,
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
Giriş matrisi tarafından verilen sınırların dışında gerçekleşen değişiklikleri işlemeniz gerekmez, ancak matris dışındaki tüm hücreler ölmeye başlar. Bu nedenle, giriş matrisi, dilinizin destekleyebileceği maksimum değere kadar herhangi bir boyutta olabilir. Kartın nesiller arasında çıkış yapmanıza gerek yoktur.
Bu bir kod golf bu yüzden en kısa kod kazanır.
Test senaryoları
Bunlar B/S
, kullanılan kuralları göstermek için gösterimi kullanır
B2/S2
,, generations = 100
yapılandırma:
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
Çıktı:
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
yapılandırma:
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
Çıktı:
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
Daha fazla test örneği oluşturmanız gerekiyorsa, bu harika simülatörü kullanabilirsiniz . Lütfen tahta boyutunu sınırladığınızdan emin olun