blob: 31a68299c8cae0891f1e073576d566fd1b5d4c15 (
plain)
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
|
ROT13 in Brainfuck
from https://en.wikipedia.org/wiki/Brainfuck#ROT13
ALL ABOARD
chugga clack chug tickets please
END OF THE LINE
Read first character and start outer character reading loop
ALL ABOARD
chugga tickets please
END OF THE LINE
Skip forward if character is 0
ALL ABOARD
choo
choo
chug chug chug chug tickets please choo
chug chug chug chug chug chug chug chug
choo choo
chugga your ticket please
END OF THE LINE
Set up divisor (32) for division loop
(MEMORY LAYOUT: dividend copy remainder divisor quotient zero zero)
ALL ABOARD
choo choo
chug choo choo
chugga tickets please
END OF THE LINE
Set up dividend (x minus 1) and enter division loop
ALL ABOARD
choo
chug choo
chug choo
chugga tickets please choo
choo
choo
your ticket please
END OF THE LINE
Increase copy and remainder / reduce divisor / Normal case: skip forward
ALL ABOARD
choo choo
tickets please tickets please choo
chug choo choo
chugga your ticket please choo
choo
chug choo
your ticket please
END OF THE LINE
Special case: move remainder back to divisor and increase quotient
ALL ABOARD
choo choo
choo choo
choo choo
choo choo
choo choo
chugga
END OF THE LINE
Decrement dividend
ALL ABOARD
your ticket please
END OF THE LINE
End division loop
ALL ABOARD
your ticket please choo
choo
choo
tickets please chugga your ticket please chug
END OF THE LINE
End skip loop; zero former divisor and reuse space for a flag
ALL ABOARD
choo
chugga chugga tickets please chugga tickets please choo choo
chugga choo
chug chug chug
tickets please chugga your ticket please your ticket please your ticket please
choo choo
tickets please
END OF THE LINE
Zero that flag unless quotient was 2 or 3; zero quotient; check flag
ALL ABOARD
chug chug chug chug chug chug chug chug chug chug chug chug choo choo
tickets please
END OF THE LINE
If flag then set up divisor (13) for second division loop
(MEMORY LAYOUT: zero copy dividend divisor remainder quotient zero zero)
ALL ABOARD
choo
chugga tickets please choo
chug choo
choo
your ticket please
END OF THE LINE
Reduce divisor; Normal case: increase remainder
ALL ABOARD
choo
tickets please chug tickets please choo choo
chug choo
chugga your ticket please choo
chug
choo
choo
your ticket please
END OF THE LINE
Special case: increase remainder / move it back to divisor / increase quotient
ALL ABOARD
choo choo
choo choo
choo choo
choo choo
choo choo
chugga
END OF THE LINE
Decrease dividend
ALL ABOARD
your ticket please
END OF THE LINE
End division loop
ALL ABOARD
choo
choo
tickets please choo choo
chug choo
chugga your ticket please
END OF THE LINE
Add remainder back to divisor to get a useful 13
ALL ABOARD
choo
tickets please
END OF THE LINE
Skip forward if quotient was 0
ALL ABOARD
chugga tickets please
END OF THE LINE
Decrement quotient and skip forward if quotient was 1
ALL ABOARD
chugga choo choo
choo choo
tickets please chugga your ticket please choo
choo
END OF THE LINE
Zero quotient and divisor if quotient was 2
ALL ABOARD
your ticket please choo choo
choo choo
tickets please choo choo
choo choo
chugga choo
choo
chugga your ticket please choo
choo
END OF THE LINE
Zero divisor and subtract 13 from copy if quotient was 1
ALL ABOARD
your ticket please choo choo
choo choo
tickets please choo choo
choo choo
chug choo
choo
chugga your ticket please
END OF THE LINE
Zero divisor and add 13 to copy if quotient was 0
ALL ABOARD
your ticket please
END OF THE LINE
End outer skip loop (jump to here if ((character minus 1)/32) was not 2 or 3)
ALL ABOARD
choo choo
tickets please chugga your ticket please
END OF THE LINE
Clear remainder from first division if second division was skipped
ALL ABOARD
choo choo
click tickets please chugga your ticket please
END OF THE LINE
Output ROT13ed character from copy and clear it
ALL ABOARD
choo choo
chugga clack chug
END OF THE LINE
Read next character
ALL ABOARD
your ticket please
END OF THE LINE
End character reading loop
|