cca
annotate Automata.py @ 11:a40cbd127d39
Deleted key from States. Automata: symbols{}, init, next_step. A little modifications for PEP-8
author | darkhan<darkhan.rus@gmail.com> |
---|---|
date | Sat, 04 Dec 2010 21:22:08 +0300 |
parents | c86adbd7d440 |
children | 38f357feb56e |
rev | line source |
---|---|
Ilia@1 | 1 class Automata(object): |
darkhan@11 | 2 #field[][] - ?????? ?????? ????????? |
Ilia@1 | 3 #states[] |
darkhan@11 | 4 #symbols = {} - ??????: ?????_?_states |
darkhan@11 | 5 |
darkhan@11 | 6 def __init__(self, width, height, states): |
darkhan@11 | 7 self.width = width |
darkhan@11 | 8 self.height = height |
darkhan@11 | 9 self.states = states |
darkhan@11 | 10 self.symbols = {} |
darkhan@11 | 11 for num, st in enumerate(self.states): |
darkhan@11 | 12 self.symbols[st.symbol] = num |
darkhan@11 | 13 self.field = [] |
darkhan@11 | 14 for row in range(height): |
darkhan@11 | 15 self.field.append([]) |
darkhan@11 | 16 for col in range(width): |
darkhan@11 | 17 self.field[row].append(states[0].symbol) |
darkhan@11 | 18 |
darkhan@11 | 19 def next_step(): |
darkhan@11 | 20 new_state = [] |
darkhan@11 | 21 for row in range(self.height): |
darkhan@11 | 22 new_state.append([]) |
darkhan@11 | 23 for col in range(self.width): |
darkhan@11 | 24 symbol = field[row][col] |
darkhan@11 | 25 num = 0 |
darkhan@11 | 26 for vert_long in range(row + self.height - 1, |
darkhan@11 | 27 row + self.height + 2): |
darkhan@11 | 28 for horiz_long in range(col + self.width - 1, |
darkhan@11 | 29 col + self.width + 2): |
darkhan@11 | 30 vert = vert_long % self.height |
darkhan@11 | 31 horiz = horiz_long % self.width |
darkhan@11 | 32 if (vert == row) & (horiz = col): continue |
darkhan@11 | 33 if self.field[vert][horiz] == symbol: |
darkhan@11 | 34 num += 1 |
darkhan@11 | 35 new_state[row].append( |
darkhan@11 | 36 self.states[self.symbols[symbol]].next_state(num)) |
darkhan@11 | 37 |
darkhan@11 | 38 for row in range(self.height): |
darkhan@11 | 39 for col in range(self.width): |
darkhan@11 | 40 if new_state[row][col]: |
darkhan@11 | 41 self.field[row][col] = self.states[(self.symbols[symbol] |
darkhan@11 | 42 + 1) % len(states)].symbol |
darkhan@11 | 43 |
darkhan@11 | 44 def change_size(value, side): |
Ilia@1 | 45 pass |
darkhan@11 | 46 |
darkhan@11 | 47 def contain_state(symbol): |
is_rusinov@3 | 48 return False |