-
Notifications
You must be signed in to change notification settings - Fork 1
/
Atrium.py
55 lines (47 loc) · 1.36 KB
/
Atrium.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class Atrium(object):
def __init__(self, bishop, key_type, hashtype):
self.bishop = bishop
self.counts = [0] * 153
self.counts[76] = 15
self.key_type = key_type
self.hashtype = hashtype
def move(self, step):
self.bishop.move(step)
if self.counts[self.bishop.location()] < 15:
self.counts[self.bishop.location()] += 1
def finalise(self, step):
self.bishop.move(step)
self.counts[self.bishop.location()] = 16
def coin(self, count):
return {
0: ' ',
1: '.',
2: 'o',
3: '+',
4: '=',
5: '*',
6: 'B',
7: 'O',
8: 'X',
9: '@',
10: '%',
11: '&',
12: '#',
13: '/',
14: '^',
15: 'S',
16: 'E',
}.get(count)
def __str__(self):
keytype = '['+self.key_type+']-'
output = '+'+keytype.center(17, '-')+'+\n'
for idx, val in enumerate(self.counts):
coin = self.coin(val)
if idx % 17 == 0:
output += '|'
output += coin
if (idx+1) % 17 == 0:
output += '|\n'
hashtype = '['+self.hashtype+']'
output += '+'+hashtype.center(17, '-')+'+'
return output