2011-01-10 3 views
0

Ich fand dies aus einer Cellular Automata Mathematica-Datei, was ist Muster und Alternativen?Cellular Automata Regel Funktion in Mathematica/Notebook Quelle, Muster, Alternativen

In diesem Code-Block, was Muster bedeutet:

CellularAutomaton[{ { 0, Blank[], 3} -> 0, 
         { Blank[], 2, 3} -> 3, 
         { 1, 1, 3 }  -> 4, 
         { Blank[], 1, 4} -> 4, 
         { Alternatives[1, 2] << 1 or 2 >>, 3, Blank[]} -> 5, 
         { Pattern[$CellContext`p, Alternatives[0, 1]], 4, Blank[]} -> 7 - $CellContext`p, 
         { 7, 2, 6} -> 3, 
         { 7, Blank[], Blank[]} -> 7, 
         { Blank[], 7, Pattern[$CellContext`p, Alternatives[1, 2]]} -> $CellContext`p, 
         { Blank[], Pattern[$CellContext`p, Alternatives[5, 6]], Blank[]} -> 7 - $CellContext`p, 
         { Alternatives[5, 6], Pattern[$CellContext`p, Alternatives[1, 2]], Blank[]} -> 7 - $CellContext`p, 
         { Alternatives[5, 6], 0, 0} -> 1, 
         { Blank[], Pattern[$CellContext`p, Alternatives[1, 2]], Blank[]} -> $CellContext`p, 
         { Blank[], Blank[], Blank[]} -> 0}, { 

Antwort

2

Sie explizit eine Cellular Automaton definieren.

Jede Zeile definiert eine Entwicklungsregel.

Sie können die relevanten Informationen here finden.

ein paar Hinweise für Ihren Code zu lesen:

Blank[] is the blank pattern "_" that matches any expression 

Pattern[] is Mathematica construct for pattern matching 

Alternatives[a,b,c] is the full form for a | b| c ... any of "a, b or c" 

Pattern[p, Alternatives[a, b]] names as p the matched expr (a or b) 

bearbeiten

So, als beispielsweise die folgenden Automatons gemacht äquivalent:

CellularAutomaton[{ 
    {1, 0} -> 1, 
    {1, 1} -> 0, 
    {0, 1} -> 1, 
    {0, 0} -> 1}, 
    {0, 1, 0}, 10] 

CellularAutomaton[{ 
    {1, Pattern[t, Alternatives[1, 0]]} -> Abs[1 - t], 
    {0, 1} -> 1, 
    {0, 0} -> 1 
    }, {0, 1, 0}, 10] 

Hinweis: Das Beispiel ist nur für Sie, um das Verständnis des von Ihnen geposteten Codes zu erleichtern. Es gibt bessere Möglichkeiten, diesen Automaten zu definieren.

+0

Danke, ich dachte, ich würde diese Frage da draußen werfen und jemand hat geantwortet. –

+0

Ich verstehe immer noch nicht die Rolle der Muster übereinstimmen. Was wäre der Unterschied zwischen den Alternativen und dem Mustervergleich mit Alternativen? –

+0

Zum Beispiel, hier: {Pattern [$ CellContext'p, Alternativen [0, 1]], 4, Leer []} -> 7 - $ CellContext'p, ... benennen Sie das Muster P, (0 oder 1) aber was bedeutet "7 - $ CellContext'p"? Auch warum wird hier Muster verwendet und nicht nur Alternativen. –