Функция правила сотовых автоматов в математике / блокноте, паттерны, альтернативы - PullRequest
0 голосов
/ 10 января 2011

Я нашел это из файла Cellular Automata Mathematica, что такое шаблон и альтернативы?

Что означает Pattern в этом блоке кода:

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}, {

1 Ответ

2 голосов
/ 10 января 2011

Вы явно определяете сотовый автомат.

Каждая строка определяет правило эволюции.

Вы можете найти соответствующую информацию здесь .

Несколько советов по чтению вашего кода:

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)  

Редактировать

Так, в качестве примера, следующие Автоматы сделаны эквивалентными:

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]  

Примечание. Этот пример предназначен для упрощения понимания размещенного вами кода. Есть лучшие способы определить этот автомат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...