-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathw_hash_w.py
More file actions
48 lines (33 loc) · 1.46 KB
/
w_hash_w.py
File metadata and controls
48 lines (33 loc) · 1.46 KB
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
from turing_machine import TuringMachine
w_hash_w = TuringMachine(
{
('q0', '#'): ('End', '#', 'R'),
('End', ''): ('qa', '', 'R'),
('q0', '0'): ('FindDelimiter0', 'X', 'R'),
('FindDelimiter0', '#'): ('Check0', '#', 'R'),
('Check0', '0'): ('FindLeftmost', 'X', 'L'),
('q0', '1'): ('FindDelimiter1', 'X', 'R'),
('FindDelimiter1', '#'): ('Check1', '#', 'R'),
('Check1', '1'): ('FindLeftmost', 'X', 'L'),
('FindLeftmost', '0'): ('FindLeftmost', '0', 'L'),
('FindLeftmost', '1'): ('FindLeftmost', '1', 'L'),
('FindLeftmost', 'X'): ('FindLeftmost', 'X', 'L'),
('FindLeftmost', '#'): ('FindLeftmost', '#', 'L'),
('FindLeftmost', ''): ('FindNext', '', 'R'),
('FindNext', 'X'): ('FindNext', 'X', 'R'),
('FindNext', '0'): ('FindDelimiter0', 'X', 'R'),
('FindNext', '1'): ('FindDelimiter1', 'X', 'R'),
('FindNext', '#'): ('End', '#', 'R'),
('FindDelimiter0', '0'): ('FindDelimiter0', '0', 'R'),
('FindDelimiter0', '1'): ('FindDelimiter0', '1', 'R'),
('FindDelimiter1', '0'): ('FindDelimiter1', '0', 'R'),
('FindDelimiter1', '1'): ('FindDelimiter1', '1', 'R'),
('Check0', 'X'): ('Check0', 'X', 'R'),
('Check1', 'X'): ('Check1', 'X', 'R'),
('End', 'X'): ('End', 'X', 'R')
}
)
assert w_hash_w.accepts('#')
assert w_hash_w.accepts('1#1')
assert w_hash_w.rejects('##')
w_hash_w.debug('10#10')