@Jere, tuota varmastikin kannattaa tutkia ja laittaa tuloksistaan tietoa?
Juu, filosofiaani kuuluu avoimesti tulosten julkaisu ja alttiiksi kritiikille ammuttavaksi alas, vaikka olisin miten metsässä omien tulosteni kanssa.
Itseltäni puuttuu teoria/tieto-pohja valta-osasta reaalielämän sovelluksista, joissa tätä gol -automaatiota voisi hyödyntää. Ensikerran, kun luin tästä Conwayn matematiikasta, niin lääketieteen parissa hyödyntäminen reaalielämässä kävi itselläni mielessä ja onhan se yksi ala mm. ympäristösuunnittelun ja paikallisen tason yritysten selviytymistä kipailusta jollain tietyllä raja-arvot määritellyillä pinta-aloilla.
En ole vieläkään käytännön implentointeja lainkaan suorittanut, mitä 3*3 -matriisista aloitan ja sitten laajennan aluetta varmistettunani koodini oikein toimivaksi.
Tähän en ole vielä käyttänyt yhtä paljon perehtymistunteja vapaa-ajallani, mitä Tetriksen ratkaisualgoritmeihin, mitä samalla olen lukenut nyt kesällä 2026 algoritmiikkaan liittyvää kirjallisuutta lähinnä ahneista algoritmeistä, mitä Tetris-ratkaisuihin voi liittyä Dijkstra:n algoritmi, missä on paino, tai tietty "hintalappu" jokaisen siirron osalta ilman menneisyyttä käsittääkseni.
Tämän säikeen aloitin ohjelmointi-kategoriassa, ja vaikka en vinkkejä aluksi kaivannutkaan itse tekniseen implementointiin, julkaisen nyt ensimmäisen koodini, joka sisältää seuraavat toiminnot:
- 3*3 -matriisin alustaminen satunnaisarvolla 1 tai 0.
- Jos annettu koordinaatti sisältää elossa olevan solut, tulostuu teksti "elossa", sekä koordinaatti, jossa alkio on elossa.
import random;
#Funktio 3*3 -matriisin alustukseen satunnaisarvolla {1,0}
def alusta():
arr = [[0]*3]*3;
for x in range(len(arr) - 1, -1, -1):
for y in range(len(arr) - 1, -1, -1):
arr[x][y] = random.randrange(0,2);
return arr;
#Tarkistaa annetun alueen koordinaatin tilan.
def kuollut(arr,x,y):
if arr[x][y] == 1:
return ("elossa",x,y);
arr = alusta();
for x in range(len(arr)):
for y in range(len(arr)):
if kuollut(arr,x,y):
print (kuollut(arr,x,y))
Tulokset 3 ajokerran osalta:
ajokerta 1:('elossa', 0, 0)
('elossa', 0, 1)
('elossa', 1, 0)
('elossa', 1, 1)
('elossa', 2, 0)
('elossa', 2, 1)
ajokerta 2:
('elossa', 0, 1)
('elossa', 1, 1)
('elossa', 2, 1)
ajokerta 3:('elossa', 0, 2)
('elossa', 1, 2)
('elossa', 2, 2)