OTCA Metapixel - Conway's Game of Life


Conway's Game of Life is een soort 2D cellulaire automaat die gebruikmaakt van een eenvoudige set van regels voor het beschrijven van het gedrag van de cellen over discrete tijdstappen. Verrassend, kunt u zeer complexe gedrag genereren van cellulaire automaten, hoewel de regels kunnen meestal worden samengevat in een zin. In 2D cellulaire automaten, is het gedrag van een cel in de volgende stap van de tijd ingegeven door de huidige staat en de huidige stand van de acht buren. De regels voor Conway's spel van het leven zijn hieronder weergegeven:

  1. Elke levende cel met minder dan twee levende buren sterft, alsof veroorzaakt door geringe bevolking.
  2. Alle levende cellen met twee of drie levende buren leeft voort naar de volgende generatie.
  3. Elke levende cel met meer dan drie levende buren sterft, alsof door overbevolking.
  4. Een dode cel met precies drie levende buren wordt een levende cel, als bij de voortplanting.

Veel interessante patronen zijn bestudeerd in het leven, een paar eenvoudige patronen staan hier. Sommige patronen, genaamd "stillevens" zijn stationair en niet veranderen na verloop van tijd (block, brood, boot). "Oscillatoren" zijn patroon dat zich herhalen na een bepaald aantal tijdstappen (



,


,


). "Ruimteschepen" zijn een soort oscillator die bewegen over de ruimte zoals ze oscilleren. De eenvoudigste en meest voorkomende vorm van ruimteschip heet een


. Een andere gemeenschappelijke ruimteschip is de


. "Kanonnen" zijn structuren die produceren een stroom van ruimteschepen, hier is een voorbeeld van


. Sommige zeer eenvoudige uitgangsvoorwaarden Maak complexe gedrag, zoals het geval met de r pentomino, een vijf-cel-patroon.

Met behulp van een combinatie van ruimteschepen, stillevens, oscillatoren, kanonnen en andere fundamentele objecten, is het mogelijk voor de bouw van ongelooflijk complexe structuren in het leven. Hier is een voorbeeld van een periode 416 pistool dat 60P5H2V0 ruimteschepen construeert met behulp van een reeks van getimede zweefvliegtuig botsingen:

In 2006 publiceerde Brice Due een structuur genaamd de OTCA Metapixel; het doel ervan is om het gedrag van een eencellige leven na te streven. Kwam ik deze video vorige week en besloten dat ik moest uitzoeken hoe het werkt:

De OTCA Metapixel is niet de eerste of de snelste metapixel ontdekt in het leven (ook check out de eenheidscel leven P5760 en de diepe cel), maar het heeft de interessante eigenschap van het kijken als een leven cel uitgezoomde. Het heeft ook een register die u toelaat om het programma te gedragen volgens elke willekeurige levensechte cellulaire automaat regelset.

Ik heb al mijn info van de Wiki van het leven, de OTCA siteen het Leven Lexicon en (meestal) door Golly downloaden en kijken naar de OTCA Metapixel uitvoeren.

Hier is hoe het werkt:

Klok - een trekstraal is een stroom van ruimteschepen die langzaam Trek een object in de richting van de bron. Een eenvoudig voorbeeld is het brood trekstraal. Deze video toont een iets ander soort trekstraal in een zaagtand.

De OTCA Metapixel wordt een trekstraal gebruikt als een klok te reguleren van de timing van gebeurtenissen:

In de video hierboven, een trekstraal een blok naar beneden trekt door 8 cellen in elke botsing, elke keer dat het vrijgeven van een zweefvliegtuig naar rechts. Een hek aan de zijkant van de trekstraal gemaakt van Eater 1vernietigt de zweefvliegtuigen onmiddellijk, maar er zijn een paar gaten in het hek waarmee zweefvliegtuigen te passeren en interactie met andere structuren in de metapixel regelmatig getimede intervallen.

Het eerste schot in de video toont de bron van het blok en drie zweefvliegtuigen afvuren in een licht-gewicht ruimteschip (LWSS) packet pistool, die vervolgens uit drie sets van drie LWSSes schiet, één set voor elke inkomende zweefvliegtuig. De volgende opname toont de bron van de trekstraal en vier meer zweefvliegtuigen ontslagen uit de trekstraal in de metapixel. Deze eerste zweefvliegtuig initieert een buurman graaf decoderen volgorde, de volgende twee zweefvliegtuigen Lees de resultaten van de decoder en de laatste zweefvliegtuig initieert een cascade van de logica die uiteindelijk of beslist te schakelen de metapixel in- of uitschakelen in de volgende klokcyclus (all later in meer detail beschreven). De rol van de 7 zweefvliegtuigen is samengevat in



.

Tijdens elke cyclus van de OTCA Metapixel klok, is het blok vernietigd bij de bron van de trekstraal en hersteld in zijn uitgangspositie, voortzetting van de cyclus.

Regels en logica - de regels voor de metapixel worden gecodeerd in twee kolommen (registreert) zoals aangegeven in de onderstaande afbeeldingen. Levensechte automaten regels zijn geschreven in de vorm B # / s #, beschreven hier. Regels van Conway's zijn gedefinieerd als B3/S23, dus de bijbehorende bits van de registers van de OTCA metapixel zijn gevuld met een eter-1 per stuk.

regel registers

Op elke klokcyclus zijn drie sets van drie LWSSes (9 totaal in een enkele lijn) schoot uit uit een packet-gun (veroorzaakt door de klok, hierboven) en op een volledige lus rond de metapixel verstuurd. Als de trein van ruimteschepen door elk van zijn Moore buren het eerste schip in de trein botsen met een vijver in het pad passeren zal als de buurman momenteel, leeft vernietiging van het schip en het totale aantal schepen in de trein te verlagen met een. Dus als een metapixel 4 levend buren heeft zal slechts vijf LWSSes terugkeren na het voltooien van een pas rond de omtrek. Een botsing van een trein van LWSSes met een vijver is hieronder weergegeven op over 0:32 (ik zal uitleggen hoe de vijvers krijgen er later):

Deze video toont ook de schaapsherder van de trein van LWSSes rond de metapixel door twin bijen shuttles en andere reflectorenen een voorbeeld van "kleuraanpassing" van de schepen (het enigszins veranderen hun fase ) door een paar van zweefvliegtuig geweren. Het pad van de LWSSes samen met de locatie van de kleur-experts en mogelijk vijvers wordt weergegeven in



.

Hieronder vindt u het volledige pad van de LWSS-trein. Merk op hoe één schip wordt verwijderd uit de voorkant van de trein terwijl het passeert elke levende neighbor.

Wanneer de trein van de LWSSes is voltooid een lus, ze worden gekanaliseerd in een sync buffer en p46 naar p40 converter waar ze de dezelfde fasegegeven. Vervolgens worden ze gestuurd in het register van de regels waar ze zijn botste met een ander LWSS komen uit de tegenovergestelde richting (van oorsprong uit een van de zweefvliegtuigen schot uit de klok) om te decoderen van de trein van LWSS in het aantal levende buren (getoond in



).

De locatie van de botsing tussen de trein van de LWSS en de LWSS van oorsprong formulier de klok hangt af van hoeveel LWSS verwoest vanaf de voorkant van de trein tijdens de lus rond de metapixel. Het mechanisme is zo instellen dat de botsing uit twee zweefvliegtuigen in tegengestelde richtingen, gericht op het register dat overeenkomt met het aantal levende buren die de metapixel heeft (nogmaals, Zie



als een verwijzing schiet).

Normaal gesproken de zweefvliegtuigen zal elk botsen met een Bijenkorf tot een blok en een vijver, dit heet een honeybit reactie. Als je in de bovenstaande video van ongeveer 6 min kijkt, ziet u de botsing van de antiparallel LWSSes, verzenden van twee zweefvliegtuigen naar 4e sleuf (telling omhoog vanaf de onderkant, beginnend bij 0) in zowel de geboorte en de overleving registers, en op ongeveer 6:30 twee vijvers worden gevormd in de registers. De resterende ruimteschepen in de trein van de LWSS botsen met een eter-1 en worden vernietigd. De video hieronder toont een dichtere blik over vele generaties:

Als de sleuf in het register wordt bezet door een eter-1 (zoals de 3e sleuf in het register van geboorte, en de 2de en 3de "slots" in de registers van de overleving, opnieuw tellen omhoog vanaf de onderkant beginnend bij 0), vervolgens het inkomende zweefvliegtuig vernietigd voordat het heeft een kans om intiate een honeybit reactie met de Bijenkorf. Dit levert geen vijver in het register. In dit mechanisme heeft een register een vijver als het aantal levende buren niet voldoet aan de voorwaarden voor het leven in de volgende generatie, en geen vijver als het doet. Vergeet niet dat deze informatie is verdeeld tussen twee registers (geboorte en overleving) en in een latere stap die enkele logica naar de huidige stand van de metapixel om te bepalen welke registreren kijken zal voor het lezen van (wordt later beschreven). Dit mechanisme is wat maakt de OTCA Metapixel programmeerbaar voor een levensechte-regelset, vrij koel.

Vervolgens schiet de klok een paar LWSSes te lezen van deze registers (één LWSS voor elk journaal), na de trajecten in



wordt weergegeven. Als een vijver in een register aanwezig is, wordt de LWSS botst met de vijver en wordt vernietigd. Dit voltooit de honeybit reactie en herstelt de Bijenkorf in het oorspronkelijk dezelfde positie. De LWSS heeft geen vijver in haar pad, is het toegestaan om door te gaan naar het volgende logic mechanisme. Zien in de video hierboven, als je het volgende frame voor de metapixel door lezing uit de registers voorspellen kunt.

Voordat ik overga tot de definitieve logica van het systeem, zal ik kijken hoe de buren Staten worden bijgeteld omhoog.



toont de 8 input/output kanalen voor elke metapixel. Door het nemen van een kijkje op een van hen, ziet u een andere honeybit reactie gebeurt:

De reactie van de honeybit aan de linkerkant komt overeen met de staat van de metapixel aan de rechterkant, en de reactie op het recht komt overeen met de staat van de metapixel aan de linkerkant. De LWSS trein beweegt met de klok mee rond de metapixel, zodat de trein naar beneden het scherm behoort tot de pixel aan de linker- en de trein verplaatsen op het scherm behoort tot de pixel aan de rechterkant.

Deze honeybit reacties worden ingesteld door een middelste gewicht ruimteschip (MWSS) die in een linksom pad rondom de pixel verplaatst met elke klokcyclus.



volgt een beschrijving van het pad en het pad van alle de zweefvliegtuigen voor 8 honeybit reacties rond de metapixel genereert. De MWSS is gemaakt alleen als de huidige status van de metapixel leeft en aan het eind van de lus rond de pixel is vernietigd.

De definitieve logica van de metacell is in



samengevat.

Eerste enkele definities:

C is de huidige stand van de cel, 1 of 0

B is de stand van het geboorte register, 1 voor tevreden geboorte aandoeningen, 0 voor niet-tevreden

S als de staat van het register van de overleving, 1 voor voldaan, 0 voor niet-tevreden

De Staten van C, B en S worden opgeslagen in de metapixel door de aanwezigheid ("1") of afwezigheid ("0") van drie boten. Boten hebben de interessante eigenschap dat wanneer ze zijn hit met een zweefvliegtuig ze weerspiegelen een nieuwe zweefvliegtuig met een traject dat loodrecht staat op het pad van het inkomende zweefvliegtuig. Deze botsing vernietigt de boot, zodat boten staan bekend als een tijd reflectoren. In



ziet u de positie van de boten in de metacell. De B en S boten worden ingesteld met behulp van de LWSSes die kunnen passeren de geboorte en overleving registers tijdens de decodering stap hierboven beschreven. In deze video komt kijken hoe de Staten van de B en S zijn ingesteld op "1" door een paar LWSSes basisgewicht van 3:47, het moment dat ze worden ingesteld op 4:54:

Een zweefvliegtuig wordt gebruikt om te lezen van de Staten van C, B en S en een vijver op G of H (getoond in



). De logica voor de vorming van G en H vijver ("1" betekent dat een vijver wordt gevormd, "0" betekent geen vijver) wordt gegeven door de volgende logica:

Als C aanwezig is, dan:

G = ! S (G is gelijk aan het tegenovergestelde van S)

H = 0

als C niet aanwezig is:

G = 0

H = B

Het laatste zweefvliegtuig uitgebracht door de klok (beschreven in het begin) wordt ingesteld van een cascade van de logica die deze relaties berekent. Het zweefvliegtuig is uitgebracht door het kleine gat in het hek naast de klok, een beetje minder dan halverwege de linkerzijde van de video hierboven, triggering de vorming van een LWSS die reist naar de rechterkant van de video, het vrijgeven van twee zweefvliegtuigen onderweg (voorbeeld basisgewicht van ongeveer 16:12). Het eerste zweefvliegtuig stuitert rond en uiteindelijk verandert in een LWSS dat wordt gelezen en de resultaten op de G en H, daarover meer in de volgende paragraaf. Het tweede zweefvliegtuig hoofden naar C, als C aanwezig is het weerspiegelt begint en richting van S. Als S aanwezig is hierin in een eter en sterft, als S niet aanwezig is het nog steeds een bijenkorf g en doet een honeybit reactie, vorming van een vijver. Als C niet aanwezig is, het tweede zweefvliegtuig aan het hoofd naar B in plaats daarvan. Als B aanwezig is, het zweefvliegtuig weerkaatst B en doet een honeybit reactie op H, anders loopt in een eter en sterft. 16:20 in de video hierboven toont het zweefvliegtuig weerkaatst op C, door een afwezig S en vormt een vijver bij G.

16:38 ziet u een vijver vastgesteldop G en een LWSS vanuit de links te lezen G en H. Als G of H een vijver die is ingesteld heeft, wordt de LWSS vernietigd, zoals op 16:39. Als geen van beide zijn ingesteld (zie 10:47) de LWSS blijft over en vormt een boot op notT (weergegeven als T met een lijn boven op



). Dit kan worden samengevat met de logica:

notT =! (G || H) (notT gelijk is aan 1 als G en H zijn beide 0, anders is het 0)

Een derde zweefvliegtuig uitgebracht op 10:57 door de oorspronkelijke LWSS logica trapsgewijs trigger hoofden richting notT. Als de boot is blijft heden het weerkaatst op de boot en hits een eter, als de boot is niet presenteren T (nogmaals,



). Het zweefvliegtuig is vernietigd door een eter in 11:16, maar je ziet het hoofd aan T beginnen bij 5:33.

Een vierde zweefvliegtuig is uitgebracht door de originele LWSS die in een LWSS die je alle overgebleven boten liet op B of S overgaat reinigt nadat de logische bewerkingen hebt voltooid. Een voorbeeld begint om 5:24. Deze LWSS heeft geen andere functie, het wordt vernietigd door een boot die het ruimt of een eter. Het traject blijkt



.

Na dit alles bent vertrokken we met de volgende staat:

T = aanwezigheid van een LWSS op T, de formele logica voor deze staat wordt gegeven door:

T =! notT = G || H = (C & &! S) || (! C & & B)

die u kunt lezen als "als de pixel momenteel leeft en het niet voldoen aan de eisen om te overleven, of als de pixel is momenteel dood en voldoet aan de eisen voor geboorte", in principe als de volgende metapixel staat van de huidige staat verschilt zal er een LWSS bij T.

De LWSS op T volgt het pad komt te staan



. 6:28 ziet u een voorbeeld van de LWSS draaien in een aantal wendingen. Op 6:39 schiet het een zweefvliegtuig af welke verandert in een LWSS dat hoofden naar de sync-buffer en uiteindelijk de cel staat boot bit (anders dan C, meer hierover in de volgende paragraaf). De oorspronkelijke LWSS blijft aan de linkerkant, een ander zweefvliegtuig schieten uit op 6:44, maken een derde LWSS welke hoofden naar de bodem juiste hoek van de metapixel om te schakelen van de staat van de uitvoer uit te stallen; de oorspronkelijke LWSS hoofden naar de linker bovenhoek van de metapixel te doen van de dezelfde (meer hierover in de volgende sectie).

De cel staat boot bit is wat eigenlijk slaat de huidige staat van de cel, (C wordt bijgewerkt regelmatig op basis van de status van de boot-bit). Als de boot bit is aanwezig, waarmee wordt aangegeven dat de huidige stand van de metapixel "off", de inkomende LWSS vormen een zweefvliegtuig dat botst met het en verwijderd het (begint bij 7:03). Als de cel staat boot bit is niet aanwezig, dat aangeeft dat de huidige stand van de metapixel is "ingeschakeld", zullen de inkomende LWSS vormen een zweefvliegtuig waarmee een nieuwe boot bits (begint bij 18:58).

Ten slotte, laten we volgen het pad van de originele LWSS die deze hele reeks gebeurtenissen geactiveerd. Hieruit volgt de buitenste pad getoond



, wordt omgezet in een MWSS en hoofden richting de cel staat boot bit. Als de boot bit aanwezig is het botst met het en sterft, maar het het behoud van de boot-bit tijdens deze dood (3:18). Als de boot-bit niet aanwezig het passeert door ongedeerd en houdt rubriek aan de rechterzijde (7:14). Dit is het zelfde MWSS dat doet een tegen de klok in lus rond de cel, triggering honeybit reacties op "inputs de buren". Deze MWSS is alleen toegestaan om te doen de lus als de cel staat boot bit niet aanwezig is, wanneer de metapixel is "on". Net voordat het verlaat te doen van de lus schiet het uit een zweefvliegtuig dat stuitert rond en uiteindelijk wordt ingesteld van een boot bij C (7:20). 7:54 ziet u het verrekening van de eerste 8 reacties van de honeybit rond de metapixel, één voor elke neighbor Moore.

Uitvoer worden weergegeven - het laatste stukje van de metapixel is de uitgang-weergave die gebruikmaakt van een ton van ruimteschepen in te vullen een grote vierkante ruimte zodat het lijkt meer of minder wit. Twee gesynchroniseerde LWSSes schakelen de weergave van de uitvoer; Ze kwam uit het laatste logic mechanisme wordt beschreven in de voorgaande alinea's, Zie



. Hun timing is gesynchroniseerd door middel van een aantal


, dan ze gewend zijn in-/ uitschakelen inschakelen een HWSS pistool dat triggers een reeks van LWSS "out of the blue" reacties. De streams van LWSSes vullen de vierkante ruimte en wederzijds vernietigen elkaar in het midden van de metapixel, blijkt


. De mechanismen voor beide hendels zijn vergelijkbaar:

Ik heb alle videobestanden toegevoegd voor dit instructable hieronder in geval de compressie van youtube is waardoor ze moeilijk te zien.

Gerelateerde Artikelen

Cellulaire automaten en een implementatie van Conway's Game of Life

Cellulaire automaten en een implementatie van Conway's Game of Life

Voor zover ik weet, zijn alleen er twee instructables artikelen over cellulaire automaten die kunnen worden gevonden hier en hier. Noch artikel wordt uitgelegd wat cellulaire automaten zijn, waarom zijn ze interessant of hoe een hen kunt implementere
Arduino gebaseerd Bi-color LED Matrix Game of Life

Arduino gebaseerd Bi-color LED Matrix Game of Life

Conway's Game of Life is geen conventionele spel. Het is de bekendste tweedimensionale cellulaire automaat gemaakt door de Britse wiskundige John Horton Conway in 1970.Het wordt gespeeld op een tweedimensionaal raster van cellen. Een cel kan worden d
LED Matrix Game of Life 16 x 16

LED Matrix Game of Life 16 x 16

Dit project is geïnspireerd door de JolliFactory bi-LED matrix kleurendisplay waarop Conway's Game of Life. Ik wilde een van mijn eigen om te zetten op mijn muur, als een ornament op mijn bureau, of waar ik het gevoel zoals het toevoegen van een beet
Speciale effecten ruimtepak

Speciale effecten ruimtepak

Kan je niet krijgen om te springen rond in zero-G met deze ruimte pak, maar u zult zeker het gesprek van de partij wanneer u wandelen in het dragen van dit één! Mijn liefde voor Halloween en mijn nog grotere liefde van ruimte te combineren, uiteengez
Maak een Breadboard Sweatshirt (Instant Wearable Electronics!)

Maak een Breadboard Sweatshirt (Instant Wearable Electronics!)

Zijn draagbare elektronica The Future? Ik geloof het wel! Hier is de snelste, meest veelzijdige draagbare elektronica project ooit, The Breadboard Sweatshirt.Meestal betrekken wearables geleidende draad voor bedrading. Maar dat spul jam mijn naaimach
8 x 8 LED Matrix voor RaspberryPi en 3 programma's

8 x 8 LED Matrix voor RaspberryPi en 3 programma's

Dit is een 8 x 8 LED matrix voor een RaspberryPi en drie programma's uit te voeren op het:1 - een "Hello World" programma met een volledige Engelse lettertype.2 - een dobbelspel.3 - een kleine versie van de 8 x 8 van Conway's Game of Life..U moe
Een 8 x 10 L.E.D Matrix maken

Een 8 x 10 L.E.D Matrix maken

UPDATE 1: Ik heb de CODE FOR CONWAY'S GAME OF LIFEUPDATE 2: NU KUNT U SOMMIGE PINS ARDUINO MET BEHULP VAN 1 SHIFT REGISTER.In dit instructable ik zal u tonen hoe te bouwen van een heel mooie 8 maal 10 L.E.D matrix (met het schuiven van tekst en anima
LED-matrix op een begroting

LED-matrix op een begroting

Een uniek stuk van meubilair zonder ook maar een heleboel geld?! Dat is wat ik wilde bereiken in dit project. Ook ik ben niet geheel onbekend met programmeren en elektronica en, zoals de meesten van ons doen, ik denk dat LEDs gewoon geweldig zijn, da
900 LED-display

900 LED-display

Het is heel gebruikelijk voor technologiebedrijven hebben stands op vakbeurs toont om te pronken met wat ze hebben en hoe hun producten kunnen profiteren van uw toepassing en Digilent geen uitzondering is. Met de ECEDHA -conferentie op de proppen, be
Spel van leven Kit

Spel van leven Kit

het spel van leven platen zijn een schaalbaar platform voor cellulaire automaten visualisaties. Elk bord bevat 16 LEDs in een 4 x 4 raster een microcontroller, en communicatie en een distributienetwerk van de macht. Zij uitvoeren met de beschikbare f
Awesome Google Easter Eggs

Awesome Google Easter Eggs

In dit Instructable, ik zal het delen met u enkele van de beste Google Pasen eieren op het web.(Een Easter egg is een opzettelijke binnen grap verborgen boodschap, functie, of in een werk zoals een computerprogramma, videospel of film.)Stap 1: "schee
Leuk met Arduino, niets anders nodig

Leuk met Arduino, niets anders nodig

De reden voor het lege breadboard in beeld is omdat er geen schakelingen te bouwen, alles wat je nodig hebt is een Arduino.Ik was nieuwsgierig om te zien hoe een Arduino zou werken voor wiskunde en eenvoudige tekst gebaseerde grafische dus heb ik bes
16 x 16 LED Matrix

16 x 16 LED Matrix

voor onze Game of Life workshop op Ithaca Generator bouwden we een 3 voet door 3 voet LED-matrix beeldscherm met gehalveerde ping-pong ballen voor lichtspreiding. Wij gebruikten het om te illustreren dat sommige van de beroemde opkomende structuren i
PicChess

PicChess

laat van Schaken?Dit project is een micro-controller-schaakspel. Het doel is om te kunnen Schaken op een VGA-monitor, met inbegrip van een intelligente computer te spelen tegen. Dit alles is bereikt met een microcontroller.Ik begon dit als een projec