Self-paced course

Java Workshop - Einführung in die Testgetriebene Entwicklung mit JUnit

Offered by Thomas Staubitz, Ralf Teusner

2.2 Aufgabe Cellular Automata - Detaillierte Beschreibung

In der folgenden Programmierübung soll ein Elementary Cellular Automaton, der der sogenannten Rule 54 folgt, implementiert und getestet werden.

Ein einfacher eindimensionaler Cellular Automaton (CA) ist eine Folge von Zellen in einer Reihe, die jeweils den Zustand 0 (tot) oder 1 (lebt) einnehmen können.

Klingt komplizierter als es ist.

Hier ein Beispiel: 10011100

Der aktuelle Zustand einer Zelle in solch einem CA ergibt sich aus dem Zustand der Zelle und Ihrer Nachbarn in der vorausgehenden Reihe des CA.

Der CA den ihr implementieren sollt, folgt folgenden Regeln:

1. Wenn die Zelle und beide Nachbarn tot sind, so ist die Zelle auch in der nächsten Reihe tot.
2. Wenn die Zelle und beide Nachbarn leben, dann ist die Zelle in der nächsten Reihe tot.
3. Wenn die Zelle und einer Ihrer Nachbarn leben, dann ist die Zelle in der nächsten Reihe tot.
4. Wenn die Zelle lebt und beide Nachbarn sind tot, dann lebt die Zelle in der nächsten Reihe.
5. Wenn die Zelle tot ist und mindestens einer der Nachbarn lebt, dann lebt die Zelle in der nächsten Reihe.
6. Die Zellen links und rechts des eigentlichen Rands, betrachten wir grundsätzlich als tot.

Alle diese Regeln können als Kombinationen von 3 Binärzahlen dargestellt werden (Im Folgenden werden, sie geordnet nach ihrem binären Wert, dargestellt).

  1. 000 -> 0
  2. 001 -> 1
  3. 010 -> 1
  4. 011 -> 0
  5. 100 -> 1
  6. 101 -> 1
  7. 110 -> 0
  8. 111 -> 0

Anhand dieser Regeln würde sich das oben eingeführte Beispiel folgendermaßen weiterentwickeln:

10011100 - Ausgangsituation
11100010 - 1. Iteration

Weitere Informationen zu Cellular Automata findet ihr hier:

1. http://mathworld.wolfram.com/Rule54.html
2. http://mathworld.wolfram.com/ElementaryCellularAutomaton.html
3. https://en.wikipedia.org/wiki/Elementary_cellular_automaton
4. https://en.wikipedia.org/wiki/Cellular_automaton