Example #1
0
class CA_1D_Blank_Test(unittest.TestCase):
    def setUp(self):
        self.columns = 9
        self.ca = CellularAutomata(columns=self.columns)

    def test_load(self):
        error_row = [[0, 1, 0, 1, 1, 0]]
        self.assertRaises(StandardError, self.ca.load, error_row)

        row = [[0, 1, 0, 1, 0, 0, 1, 1, 0]]
        self.ca.load(row)
        self.assertEqual(row[0], self.ca.grid[0])

    def test_string_rep(self):
        self.assertEqual("0" * self.columns, self.ca.string_rep())

    def test_iter_rows(self):
        self.assertEqual(1, len(list(self.ca.iter_rows())))
        for row in self.ca.iter_rows():
            self.assertEqual([0] * self.columns, row)

    def test_neighbours(self):
        cells = [c for c, nb in self.ca.iter_neighbours()]
        nbs = [nb for c, nb in self.ca.iter_neighbours()]

        self.assertEqual([0] * self.columns, cells)

        # By default there is no wrap around, so if there is incomplete neighbours then return None
        self.assertEqual([None] + [[0, 0, 0]] * (self.columns - 2) + [None], nbs)
Example #2
0
    def setUp(self):
        def ruleset(nbs):
            if nbs == [1, 1, 1]: return 0
            elif nbs == [1, 1, 0]: return 1
            elif nbs == [1, 0, 1]: return 0
            elif nbs == [1, 0, 0]: return 1
            elif nbs == [0, 1, 1]: return 1
            elif nbs == [0, 1, 0]: return 0
            elif nbs == [0, 0, 1]: return 1
            elif nbs == [0, 0, 0]: return 0

        self.ca = CellularAutomata(columns=9, ruleset=CellularAutomata.RuleSet_1D(90))
        self.ca.load([[0, 0, 0, 0, 1, 0, 0, 0, 0]])
Example #3
0
File: main.py Project: schkyl10/csf
def main():
  rule = getValidRuleFromUser()
  print "Rule %s : %s entered." % (rule, decimalToBinary(rule))

  automata = CellularAutomata(rule)

  for i in range(200):
    automata.generateNext()
    sleep(0.1)
    resetScreen()
    output = automata.getAllGenerations()

    size = len(output)
    start = 0
    if size - 45 >= 0:
      start = size - 45

    for i in range(start, len(output)):
      for j in range(len(output[i])):
        if output[i][j] == '1':
          sys.stdout.write(u'\u2588')
        else:
          sys.stdout.write(' ')
      print ''
Example #4
0
class CA_1D_Rule_90_Test(unittest.TestCase):
    def setUp(self):
        def ruleset(nbs):
            if nbs == [1, 1, 1]: return 0
            elif nbs == [1, 1, 0]: return 1
            elif nbs == [1, 0, 1]: return 0
            elif nbs == [1, 0, 0]: return 1
            elif nbs == [0, 1, 1]: return 1
            elif nbs == [0, 1, 0]: return 0
            elif nbs == [0, 0, 1]: return 1
            elif nbs == [0, 0, 0]: return 0

        self.ca = CellularAutomata(columns=9, ruleset=CellularAutomata.RuleSet_1D(90))
        self.ca.load([[0, 0, 0, 0, 1, 0, 0, 0, 0]])

    def test_first_tick(self):
        self.assertEqual("000010000", self.ca.string_rep())
        self.ca.tick_1D()
        self.assertEqual("000101000", self.ca.string_rep())
Example #5
0
class CA_2D_Test(unittest.TestCase):
    def setUp(self):
        self.rows = 4
        self.columns = 5
        self.ca = CellularAutomata(rows=self.rows, columns=self.columns)

    def test_string_rep(self):
        self.assertEqual("\n".join(["".join(["0"] * self.columns)] * self.rows), self.ca.string_rep())

    def test_random_seed(self):
        self.ca.seed_grid()
        self.assertNotEqual([[0] * self.columns] * self.rows, self.ca.grid)

    def test_neighbours(self):
        #            0  1  2  3  4    5  6  7  8  9   10 11 12 13 14   15 16 17 18  19
        new_rows = [[1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [9, 8, 7, 6, 5], [2, 4, 6, 8, 10]]
        self.ca.load(new_rows)
        neighbours = [n for c, n in self.ca.iter_neighbours2()]

        self.assertEqual([2, 5, 4], neighbours[0])  # 0:0
        self.assertEqual([1, 3, 5, 4, 3], neighbours[1])  # 0:1
        self.assertEqual([4, 2, 1], neighbours[4])  # 0:4
        self.assertEqual([2, 3, 4, 4, 2, 8, 7, 6], neighbours[7])  # 1:2
        self.assertEqual([4, 5, 2, 6, 5], neighbours[9])  # 1:4
Example #6
0
 def setUp(self):
     self.columns = 9
     self.ca = CellularAutomata(columns=self.columns)
Example #7
0
 def setUp(self):
     self.rows = 4
     self.columns = 5
     self.ca = CellularAutomata(rows=self.rows, columns=self.columns)