-
Notifications
You must be signed in to change notification settings - Fork 1
/
bf_convert.py
227 lines (218 loc) · 6.54 KB
/
bf_convert.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
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
216
217
218
219
220
221
222
223
224
225
226
227
"""
Script to convert any BrainFuck program into Nonsense
Returns a Nonsense paragraph to stdout
params:
program: A BF program (all non-BF characters are ignored)
--pointer (-p): A consonant to use as the primary BF pointer
Defaults to a random consonant if unspecified
"""
import argparse
import random
parser = argparse.ArgumentParser(description="Convert a BF program into Nonsense.")
parser.add_argument("program", type=str, help="A BF program.")
parser.add_argument("--pointer", "-p", type=str, default="", help="The consonant to serve as the BF pointer")
args = parser.parse_args()
SUBS = {"b": {">": "bob",
"<": "boil bib lab",
"+": "bermuda robe",
"-": "tit too befit trim robe",
".": "berry",
",": "mimic yum member",
"[": "be,",
"]": "be.",
"_": ""
},
"c": {">": "cock",
"<": "coin anchor",
"+": "cedar do dance",
"-": "cent backs noise",
".": "celery",
",": "bank kin yum bet trance",
"[": "cell,",
"]": "cell.",
"_": ""},
"d": {">": "do",
"<": "doing and",
"+": "deck code",
"-": "den pander",
".": "deny",
",": "yum bender",
"[": "dell,",
"]": "dell.",
"_": "ion nap"
},
"f": {">": "or raft",
"<": "waft",
"+": "cafe",
"-": "safe",
".": "fey",
",": "aft yum elm alter",
"[": "fend,",
"]": "fend.",
"_": "ion ew estuary octopus"
},
"g": {">": "go",
"<": "sag",
"+": "cage",
"-": "sage",
".": "gem my",
",": "yum edge",
"[": "get,",
"]": "get.",
"_": "cock ions"
},
"h": {">": "hot that",
"<": "hoist that",
"+": "hen not the",
"-": "hen land ant the",
".": "hey",
",": "yum ether",
"[": "hen,",
"]": "hen.",
"_": "soil"
},
"j": {">": "job abjure",
"<": "join and adjunct",
"+": "jew ebb bob abject",
"-": "jew ebb boil bib lab abject",
".": "jelly",
",": "yum eject",
"[": "jew,",
"]": "jew.",
"_": ""},
"k": {">": "kudzu eon bank",
"<": "koi",
"+": "take",
"-": "sake",
".": "key",
",": "yum ensue casket",
"[": "keg,",
"]": "keg.",
"_": "to ions"},
"l": {">": "pal",
"<": "tall",
"+": "pale",
"-": "tale",
".": "leg gyro",
",": "yum elect",
"[": "leg,",
"]": "leg.",
"_": "pop ion ant"
},
"m": {">": "mom",
"<": "moi",
"+": "tame",
"-": "name",
".": "merry",
",": "yum emerald",
"[": "meg,",
"]": "meg.",
"_": "to ion"
},
"n": {">": "no",
"<": "land",
"+": "pane",
"-": "lane",
".": "net try",
",": "yum enemies",
"[": "net,",
"]": "net.",
"_": "soil pop"},
"p": {">": "pop",
"<": "rap",
"+": "octagon cape",
"-": "ion nape",
".": "petty",
",": "mimic tit yam tamper",
"[": "peg,",
"]": "peg.",
"_": "or iridium"
},
"q": {">": "quo ebb boas squeak",
"<": "quiet elm lions squeeze",
"+": "quick end egg geode",
"-": "qualify evolution old veil halve",
".": "tit quest teeny",
",": "quarrel emptier yum emerge",
"[": "quack elk keg,",
"]": "quoin ew web.",
"_": ""
},
"r": {">": "octopus car",
"<": "ion narcotic",
"+": "off fare",
"-": "oil educate dare",
".": "remnant my",
",": "yum ectoplasm credit",
"[": "red,",
"]": "red.",
"_": ""
},
"s": {">": "so",
"<": "soils",
"+": "send nose",
"-": "send noise",
".": "sexy",
",": "yum etch it itself",
"[": "set,",
"]": "set.",
"_": ""
},
"t": {">": "to",
"<": "lilac toilet",
"+": "ten note",
"-": "tell loiter",
".": "temp my",
",": "yum enter",
"[": "tea,",
"]": "tea.",
"_": ""
},
"v": {">": "vow evaluate",
"<": "void advice",
"+": "pave",
"-": "navel",
".": "very",
",": "yum ensue svelte",
"[": "vet,",
"]": "vet.",
"_": "pop ion"},
"w": {">": "wow",
"<": "caw",
"+": "wet tower",
"-": "west soils swerve",
".": "west say",
"[": "wet,",
"]": "wet.",
"_": "coin anchor"
},
"x": {">": "wax",
"<": "tax",
"+": "waxes",
"-": "taxes",
".": "axe ey",
",": "yum relaxes",
"[": "axe,",
"]": "axe.",
"_": "wow ion ant"
},
"z": {">": "jazz",
"<": "dazzle",
"+": "raze",
"-": "daze",
".": "zesty",
",": "yum etch haze",
"[": "zest,",
"]": "zest.",
"_": "or bob abjure void"
}
}
def main():
paragraph = ""
letter = args.pointer[0] if args.pointer and args.pointer[0] in SUBS else random.choice("bcdfghjklmnpqrstvwxz")
for char in "_>" + args.program:
sub = SUBS[letter].get(char, "")
paragraph += sub + (" " if sub else "")
print(paragraph)
if __name__ == "__main__":
main()