GameOfLife

Szervusztok,

Keszitettem eddig egy alap Game of Life programot, egyenlore karakteres feluleten, majd kepernyokimelokent szeretnem kamatoztatni...
Vannak olyan sejtek, amelyek bizonyos alakzatokban nem kepesek szuletni/elhalni.
Ilyen pl.:

  • XX
    XX

Milyen algoritmussal lehetne ezeket az alakzatokat hatekonyan kiszurni, majd torolni a matrixbol? Nem szeretnem ha ott maradnanak "szemetkent" a monitoron.
A problema azert lep fel, mert randomolt allomanybol dolgozik!

Ha ez sikerulne utana ujabb pontokat, alakzatot generalna es kezdene elolrol...

Hozzászólások

szerintem teszteld, hogy van-e mozgas, vagy mar csak a gliderek (a kis bigyok, amik nem pusztulnak meg) vannak a kepen es akkor kezdd ujra

--
I think the major good idea in Unix was its clean and simple interface: open, close, read, and write.

szia
szerintem szuksegtelen ezeket torolni, ezek is hozzatartoznak az eletjatekhoz. sot, ha egy glider nekimegy egy ilyen alakzatnak, akkor abbol meg akarmi lehet.

Game of life, az első progim :) Bár a legvégét még mindig nem raktam össze.

Ahogy lejebb is leírták, még bőven nekimehet valami az ilyen mozdulatlan alakzatoknak is, úgyhogy nem kell törölni őket. Legalábbis ekkor még.

A probléma akkor jön, amikor egyáltalán nem változik semmi, tehát csak a fenti mozdulatlan részek maradnak. Ekkor kell törölni. Mivel minden kör után jön egy ellenőrzés nyilván minden sejtre, hogy életben maradjon-e/meghaljon/szülessen, én ide tennék egy számlálót, ami nézi, hogy hány sejtnél van változás. Ha 0, akkor töröl (megöl minden sejtet), és generál új alakzatot.

Probléma még ott van, amikor van ugyan változás, de ugyanaz az alakzat jön ki ciklikusan. Pl:

XXX <---->

X
X
X

Hogy itt hogy lehet megállítani, azt most nem látom. Mert nyilván többlépéses ciklus is kijöhet, ill a rács két végében is, egymástól függetlenül is létrejöhetnek aszinkron ismétlődő részek.

Generalsz minden lepes utan valamilyen hash erteket az allasbol, es letarolod egy tombbe az utolso nehanyat (pl 16 valoszinuleg eleg).
Ha a jelenlegi allas hash erteke megegyezik az egyik letarolttal, akkor johet az uj tabla.
Ha egyszeruen ra tudsz ereszteni pl egy MD5-ot az allapotra, akkor az tokeletes.
Ha nem, akkor ajanlom a Zobrist key-t (teljesen mas temaban szoktak alkalmazni, de szerintem ide is tokeletes).
---------------------
alert("This alert is here to inform you that alerts are annoying.");

Meg egy megoldas eszembe jutott:
par szazalek valoszinuseggel el lehetne helyezni random sejteket, illetve torolni, szinten randomban. Igy idovel biztosan lesz valtozas (kepernyokimelonek jo).
---------------------
alert("This alert is here to inform you that alerts are annoying.");