tangled
alpha
login
or
join now
thecoded.prof
/
CMU
0
fork
atom
CMU Coding Bootcamp
0
fork
atom
overview
issues
pulls
pipelines
various things I was too lazy to split
thecoded.prof
5 months ago
8973cae2
56e6efb5
verified
This commit was signed with the committer's
known signature
.
thecoded.prof
SSH Key Fingerprint:
SHA256:ePn0u8NlJyz3J4Zl9MHOYW3f4XKoi5K1I4j53bwpG0U=
+2832
-71
5 changed files
expand all
collapse all
unified
split
python
oct3
level0
date.py
level4
runSimpleProgram.py
oct6
blackjack
main.py
snake
main.py
wordle
main.py
+21
-9
python/oct3/level0/date.py
···
2
2
return not (yyyy % 4 or (yyyy % 400 and not yyyy % 100))
3
3
4
4
5
5
-
6
5
def sum_months(mm: int, yyyy: int) -> int:
7
7
-
months = [31, 29 if is_leap_year(yyyy) else 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
6
6
+
months = [
7
7
+
31,
8
8
+
29 if is_leap_year(yyyy) else 28,
9
9
+
31,
10
10
+
30,
11
11
+
31,
12
12
+
30,
13
13
+
31,
14
14
+
31,
15
15
+
30,
16
16
+
31,
17
17
+
30,
18
18
+
31,
19
19
+
]
8
20
return sum(months[:mm])
9
21
10
22
11
23
def nth_day(s: str) -> int:
12
24
"""Calculate the nth day since the beginning of the year."""
13
25
mm, dd, yyyy = map(int, [s[:2], s[2:4], s[4:]])
14
14
-
day_since_new_year = dd + sum_months(mm-1, yyyy)
15
15
-
return yyyy*1000 + day_since_new_year
26
26
+
day_since_new_year = dd + sum_months(mm - 1, yyyy)
27
27
+
return yyyy * 1000 + day_since_new_year
16
28
17
29
18
18
-
print("we're testing the nth day function...", end='')
19
19
-
assert(nth_day("02072016") == 2016038)
20
20
-
assert(nth_day("12201996") == 1996355)
30
30
+
print("we're testing the nth day function...", end="")
31
31
+
assert nth_day("02072016") == 2016038
32
32
+
assert nth_day("12201996") == 1996355
21
33
# assert(nth_day("abcdef") == None)
22
22
-
assert(nth_day("12312020") == 2020366)
23
23
-
assert(nth_day("12312021") == 2021365)
34
34
+
assert nth_day("12312020") == 2020366
35
35
+
assert nth_day("12312021") == 2021365
24
36
print("and it passes the example cases")
+23
-29
python/oct3/level4/runSimpleProgram.py
···
11
11
12
12
def parse(args: List[int], values: List[int], arg: str) -> int:
13
13
"""Parse an argument string into an integer value"""
14
14
-
arg_var = 0
14
14
+
arg_val = 0
15
15
16
16
if arg.isdigit():
17
17
-
arg_var = int(arg)
17
17
+
arg_val = int(arg)
18
18
elif arg.startswith("L"):
19
19
-
arg_var = values[int(arg[1:])]
19
19
+
arg_val = values[int(arg[1:])]
20
20
elif arg.startswith("A"):
21
21
-
arg_var = args[int(arg[1:])]
21
21
+
arg_val = args[int(arg[1:])]
22
22
23
23
-
return arg_var
23
23
+
return arg_val
24
24
25
25
26
26
def runL(args: List[int], values: List[int], line: List[str]):
···
34
34
if op.isdigit():
35
35
values[out_var] = int(op)
36
36
else:
37
37
-
op1, op2 = line[2], line[3]
38
38
-
op1_val, op2_val = parse(args, values, op1), parse(args, values, op2)
37
37
+
var1, var2 = line[2], line[3]
38
38
+
var1_val, var2_val = parse(args, values, var1), parse(args, values, var2)
39
39
if op == "+":
40
40
-
values[out_var] = op1_val + op2_val
40
40
+
values[out_var] = var1_val + var2_val
41
41
elif op == "-":
42
42
-
values[out_var] = op1_val - op2_val
42
42
+
values[out_var] = var1_val - var2_val
43
43
else:
44
44
raise ValueError(f"Invalid Operator: {op}")
45
45
46
46
47
47
+
def handleTargetError(target: int, lines: List[List[str]]) -> int | None:
48
48
+
if target < 0 or target >= len(lines):
49
49
+
raise ValueError(f"Invalid Jump Target: {target}")
50
50
+
return target
51
51
+
52
52
+
47
53
def runJMP(args: List[int], values: List[int], line: List[str], lines) -> int | None:
48
54
"""Return the target line number or None for a JMP command"""
49
55
command = line[0]
···
51
57
jump_targ = line[1]
52
58
if jump_targ.isdigit():
53
59
target = int(line[1])
54
54
-
if target < 0 or target >= len(lines):
55
55
-
raise ValueError(f"Invalid Jump Target: {target}")
56
56
-
return target
60
60
+
return handleTargetError(target, lines)
57
61
else:
58
62
target = findLabel(lines, line[1])
59
59
-
if target < 0 or target >= len(lines):
60
60
-
raise ValueError(f"Invalid Jump Target: {target}")
61
61
-
return target
63
63
+
return handleTargetError(target, lines)
62
64
else:
63
65
expr = line[1]
64
66
if command[3] == "+":
65
67
var = int(expr[1])
66
68
if values[var] > 0:
67
69
target = findLabel(lines, line[2])
68
68
-
if target < 0 or target >= len(lines):
69
69
-
raise ValueError(f"Invalid Jump Target: {target}")
70
70
-
return target
71
71
-
return
70
70
+
return handleTargetError(target, lines)
71
71
+
return None
72
72
elif command[3] == "0":
73
73
var = int(expr[1])
74
74
if values[var] == 0:
75
75
target = findLabel(lines, line[2])
76
76
-
if target < 0 or target >= len(lines):
77
77
-
raise ValueError(f"Invalid Jump Target: {target}")
78
78
-
return target
79
79
-
return
76
76
+
return handleTargetError(target, lines)
77
77
+
return None
80
78
else:
81
79
raise ValueError(f"Invalid Jump Target: {line[0]}")
82
80
···
88
86
lines = [line.split() for line in lines if not line.startswith("!")]
89
87
90
88
values: List[int] = []
91
91
-
target = None
92
89
i = 0
93
90
return_value = None
94
91
while not return_value:
95
92
line = lines[i]
93
93
+
i += 1
96
94
# print(f"executing {i}: {line}, L: {values}, A: {args}")
97
95
command = line[0]
98
98
-
if ":" in line or (target and target != i):
99
99
-
i += 1
96
96
+
if ":" in line:
100
97
continue
101
101
-
if target == i:
102
102
-
target = None
103
103
-
i += 1
104
98
if command.startswith("L"):
105
99
runL(args, values, line)
106
100
elif command.startswith("JMP"):
+88
-33
python/oct6/blackjack/main.py
···
14
14
app_inst.dealerHand[0].hidden = True
15
15
app_inst.playerDrawing = True
16
16
17
17
+
17
18
def getScore(hand):
18
19
score = 0
19
20
aces = 0
20
21
for card in hand:
21
21
-
if card.rank == 'Ace':
22
22
+
if card.rank == "Ace":
22
23
aces += 1
23
24
score += 11
24
24
-
elif card.rank in ['Jack', 'Queen', 'King']:
25
25
+
elif card.rank in ["Jack", "Queen", "King"]:
25
26
score += 10
26
27
else:
27
28
score += int(card.rank)
···
32
33
33
34
34
35
def onKeyPress(app_inst: AppWrapper, key):
35
35
-
if key == 'h' and app_inst.playerDrawing:
36
36
+
if key == "h" and app_inst.playerDrawing:
36
37
app_inst.playerHand.append(app_inst.deck.pop())
37
37
-
elif key == 's':
38
38
+
elif key == "s":
38
39
app_inst.playerDrawing = False
39
40
app_inst.dealerHand[0].hidden = False
40
41
app_inst.dealerHand[1].hidden = False
41
41
-
elif key == 'r':
42
42
+
elif key == "r":
42
43
onAppStart(app_inst)
43
44
return
44
44
-
elif key == 'q':
45
45
+
elif key == "q":
45
46
exit()
46
47
47
48
dealer_score = getScore(app_inst.dealerHand)
48
49
player_score = getScore(app_inst.playerHand)
49
50
if player_score > 21:
50
50
-
app_inst.status = 'loss'
51
51
+
app_inst.status = "loss"
51
52
app_inst.playerDrawing = False
52
53
return
53
54
···
58
59
while dealer_score < 17:
59
60
app_inst.dealerHand.append(app_inst.deck.pop())
60
61
if dealer_score > 21:
61
61
-
app_inst.status = 'win'
62
62
+
app_inst.status = "win"
62
63
app_inst.playerDrawing = False
63
64
return
64
65
if not app_inst.playerDrawing and dealer_score >= 17:
65
66
if player_score > dealer_score:
66
66
-
app_inst.status = 'win'
67
67
+
app_inst.status = "win"
67
68
elif player_score < dealer_score:
68
68
-
app_inst.status = 'loss'
69
69
+
app_inst.status = "loss"
69
70
else:
70
71
if len(app_inst.dealerHand) < len(app_inst.playerHand):
71
71
-
app_inst.status = 'win'
72
72
+
app_inst.status = "win"
72
73
else:
73
73
-
app_inst.status = 'loss'
74
74
+
app_inst.status = "loss"
74
75
75
75
-
def redrawAll(app_inst: AppWrapper):
76
76
+
77
77
+
def redrawAll(app_inst: AppWrapper):
76
78
print(app_inst.status, getScore(app_inst.dealerHand), getScore(app_inst.playerHand))
77
79
match app_inst.status:
78
80
case "win":
79
81
app_inst.dealerHand[0].hidden = False
80
80
-
drawLabel(f"Dealer's score: {getScore(app_inst.dealerHand)}", app_inst.width//2, 30)
81
81
-
drawRect(app_inst.width//2-100, app_inst.height//2-50, 200, 100, fill="lightGreen")
82
82
-
drawLabel("You Win!", app_inst.width//2, app_inst.height//2)
82
82
+
drawLabel(
83
83
+
f"Dealer's score: {getScore(app_inst.dealerHand)}",
84
84
+
app_inst.width // 2,
85
85
+
30,
86
86
+
)
87
87
+
drawRect(
88
88
+
app_inst.width // 2 - 100,
89
89
+
app_inst.height // 2 - 50,
90
90
+
200,
91
91
+
100,
92
92
+
fill="lightGreen",
93
93
+
)
94
94
+
drawLabel("You Win!", app_inst.width // 2, app_inst.height // 2)
83
95
case "loss":
84
96
app_inst.dealerHand[0].hidden = False
85
85
-
drawLabel(f"Dealer's score: {getScore(app_inst.dealerHand)}", app_inst.width//2, 30)
86
86
-
drawRect(app_inst.width//2-100, app_inst.height//2-50, 200, 100, fill="pink")
87
87
-
drawLabel("You Lose!", app_inst.width//2, app_inst.height//2, fill="red")
97
97
+
drawLabel(
98
98
+
f"Dealer's score: {getScore(app_inst.dealerHand)}",
99
99
+
app_inst.width // 2,
100
100
+
30,
101
101
+
)
102
102
+
drawRect(
103
103
+
app_inst.width // 2 - 100,
104
104
+
app_inst.height // 2 - 50,
105
105
+
200,
106
106
+
100,
107
107
+
fill="pink",
108
108
+
)
109
109
+
drawLabel(
110
110
+
"You Lose!", app_inst.width // 2, app_inst.height // 2, fill="red"
111
111
+
)
88
112
case _:
89
113
pass
90
114
91
115
dealer_card_count = len(app_inst.dealerHand)
92
116
for i, card in enumerate(app_inst.dealerHand):
93
93
-
drawCard(app_inst, card, app_inst.width//2+25*dealer_card_count//2-i*37.5, 60+i*2)
117
117
+
drawCard(
118
118
+
app_inst,
119
119
+
card,
120
120
+
app_inst.width // 2 + 25 * dealer_card_count // 2 - i * 37.5,
121
121
+
60 + i * 2,
122
122
+
)
94
123
95
95
-
drawLabel(f"Score: {getScore(app_inst.playerHand)}", app_inst.width//2, app_inst.height*3//4-20, size=18)
124
124
+
drawLabel(
125
125
+
f"Score: {getScore(app_inst.playerHand)}",
126
126
+
app_inst.width // 2,
127
127
+
app_inst.height * 3 // 4 - 20,
128
128
+
size=18,
129
129
+
)
96
130
card_count = len(app_inst.playerHand)
97
131
for i, card in enumerate(app_inst.playerHand):
98
98
-
drawCard(app_inst, card, app_inst.width//2+25*card_count//2-i*37.5, app_inst.height-60+i*2)
132
132
+
drawCard(
133
133
+
app_inst,
134
134
+
card,
135
135
+
app_inst.width // 2 + 25 * card_count // 2 - i * 37.5,
136
136
+
app_inst.height - 60 + i * 2,
137
137
+
)
99
138
pass
139
139
+
100
140
101
141
def getSuitLabelAndColor(suit):
102
102
-
if suit[0] == 'C': return '♣', 'black'
103
103
-
elif suit[0] == 'D': return '♦', 'red'
104
104
-
elif suit[0] == 'H': return '♥', 'red'
105
105
-
else: return '♠', 'black'
142
142
+
if suit[0] == "C":
143
143
+
return "♣", "black"
144
144
+
elif suit[0] == "D":
145
145
+
return "♦", "red"
146
146
+
elif suit[0] == "H":
147
147
+
return "♥", "red"
148
148
+
else:
149
149
+
return "♠", "black"
150
150
+
106
151
107
152
def makeRandomDeck():
108
153
# first make a sorted deck
109
109
-
ranks = 'Ace,2,3,4,5,6,7,8,9,10,Jack,Queen,King'.split(',')
110
110
-
suits = 'Clubs,Diamonds,Hearts,Spades'.split(',')
154
154
+
ranks = "Ace,2,3,4,5,6,7,8,9,10,Jack,Queen,King".split(",")
155
155
+
suits = "Clubs,Diamonds,Hearts,Spades".split(",")
111
156
deck = [makeCard(rank, suit) for rank in ranks for suit in suits]
112
157
# now shuffle and return the deck
113
158
random.shuffle(deck)
114
159
print([card.rank for card in deck])
115
160
return deck
161
161
+
116
162
117
163
def makeCard(rank, suit):
118
164
card = SimpleNamespace()
···
120
166
card.suit = suit
121
167
card.hidden = False
122
168
return card
169
169
+
123
170
124
171
def drawCard(app_inst: AppWrapper, card, x, y):
125
172
label, color = getSuitLabelAndColor(card.suit)
126
126
-
drawRect(x-25, y-37.5, 50, 75, fill='white', border='black')
173
173
+
drawRect(x - 25, y - 37.5, 50, 75, fill="white", border="black")
127
174
if card.hidden:
128
128
-
drawRect(x-25, y-37.5, 50, 75, fill='gray', border='black')
175
175
+
drawRect(x - 25, y - 37.5, 50, 75, fill="gray", border="black")
129
176
else:
130
130
-
drawLabel(f'{label}', x-15, y-27.5, fill=color, size=20)
131
131
-
drawLabel(f'{label}', x+15, y+27.5, fill=color, rotateAngle=180, size=20)
132
132
-
drawLabel(f'{card.rank[0] if not card.rank.isdigit() else card.rank}', x, y, fill=color, size=20)
177
177
+
drawLabel(f"{label}", x - 15, y - 27.5, fill=color, size=20)
178
178
+
drawLabel(f"{label}", x + 15, y + 27.5, fill=color, rotateAngle=180, size=20)
179
179
+
drawLabel(
180
180
+
f"{card.rank[0] if not card.rank.isdigit() else card.rank}",
181
181
+
x,
182
182
+
y,
183
183
+
fill=color,
184
184
+
size=20,
185
185
+
)
186
186
+
133
187
134
188
def main():
135
189
runApp()
190
190
+
136
191
137
192
main()
+249
python/oct6/snake/main.py
···
1
1
+
from cmu_graphics.cmu_graphics import app, AppWrapper
2
2
+
from cmu_graphics import *
3
3
+
from random import randint
4
4
+
from time import sleep
5
5
+
from sys import exit
6
6
+
7
7
+
8
8
+
def onAppStart(app_inst: AppWrapper):
9
9
+
app_inst.rows = 8
10
10
+
app_inst.cols = 10
11
11
+
app_inst.boardLeft = 25
12
12
+
app_inst.boardTop = 85
13
13
+
app_inst.boardWidth = 350
14
14
+
app_inst.boardHeight = 280
15
15
+
app_inst.cellBorderWidth = 1
16
16
+
app_inst.snake = [(randint(0, app_inst.rows - 1), randint(0, app_inst.cols - 1))]
17
17
+
app_inst.direction = [0, 0]
18
18
+
app_inst.fruit = None
19
19
+
app_inst.gameOver = False
20
20
+
app_inst.portals = [(-1, -1), (-1, -1)]
21
21
+
makePortals(app_inst)
22
22
+
app_inst.poison = None
23
23
+
24
24
+
25
25
+
def makePortals(app_inst: AppWrapper):
26
26
+
while (
27
27
+
manhattenDist(app_inst.portals[0], app_inst.portals[1]) < 5
28
28
+
or distanceToWall(app_inst, app_inst.portals[0]) < 2
29
29
+
or distanceToWall(app_inst, app_inst.portals[1]) < 2
30
30
+
):
31
31
+
app_inst.portals = [
32
32
+
(randint(0, app_inst.rows - 1), randint(0, app_inst.cols - 1)),
33
33
+
(randint(0, app_inst.rows - 1), randint(0, app_inst.cols - 1)),
34
34
+
]
35
35
+
36
36
+
37
37
+
def distanceToWall(app_inst: AppWrapper, pos):
38
38
+
return min(pos[0], app_inst.rows - pos[0] - 1, pos[1], app_inst.cols - pos[1] - 1)
39
39
+
40
40
+
41
41
+
def manhattenDist(p1, p2):
42
42
+
return abs(p1[0] - p2[0]) + abs(p1[1] - p2[1])
43
43
+
44
44
+
45
45
+
def onKeyPress(app_inst: AppWrapper, key):
46
46
+
if key == "up" and not app_inst.direction[0]:
47
47
+
app_inst.direction = [-1, 0]
48
48
+
elif key == "down" and not app_inst.direction[0]:
49
49
+
app_inst.direction = [1, 0]
50
50
+
elif key == "left" and not app_inst.direction[1]:
51
51
+
app_inst.direction = [0, -1]
52
52
+
elif key == "right" and not app_inst.direction[1]:
53
53
+
app_inst.direction = [0, 1]
54
54
+
elif key == "r":
55
55
+
onAppStart(app_inst)
56
56
+
elif key == "q":
57
57
+
exit()
58
58
+
elif key == "space":
59
59
+
app_inst.gameOver = True
60
60
+
61
61
+
62
62
+
def moveSnake(app_inst: AppWrapper):
63
63
+
if app_inst.gameOver:
64
64
+
return
65
65
+
head = app_inst.snake[0]
66
66
+
newHead = (
67
67
+
(head[0] + app_inst.direction[0]) % app_inst.rows,
68
68
+
(head[1] + app_inst.direction[1]) % app_inst.cols,
69
69
+
)
70
70
+
app_inst.snake.insert(0, newHead)
71
71
+
if newHead in app_inst.portals:
72
72
+
app_inst.snake[0] = app_inst.portals[1 - app_inst.portals.index(newHead)]
73
73
+
elif newHead == app_inst.poison:
74
74
+
app_inst.gameOver = True
75
75
+
if len(app_inst.snake) > 1:
76
76
+
app_inst.snake.pop()
77
77
+
for segment in app_inst.snake[1:]:
78
78
+
if app_inst.snake[0] == segment:
79
79
+
app_inst.gameOver = True
80
80
+
81
81
+
82
82
+
def onStep(app_inst: AppWrapper):
83
83
+
if not app_inst.fruit:
84
84
+
makeFruit(app_inst)
85
85
+
makePoison(app_inst)
86
86
+
head = app_inst.snake[0]
87
87
+
if head == app_inst.fruit:
88
88
+
app_inst.fruit = None
89
89
+
app_inst.snake.append(app_inst.snake[-1])
90
90
+
moveSnake(app_inst)
91
91
+
92
92
+
93
93
+
def getCell(app_inst: AppWrapper, pos):
94
94
+
if pos in app_inst.snake:
95
95
+
return "snake"
96
96
+
elif pos == app_inst.fruit:
97
97
+
return "fruit"
98
98
+
elif pos in app_inst.portals:
99
99
+
return "portal"
100
100
+
elif pos == app_inst.poison:
101
101
+
return "poison"
102
102
+
elif pos == None:
103
103
+
return "empty"
104
104
+
return None
105
105
+
106
106
+
107
107
+
def makeFruit(app_inst: AppWrapper):
108
108
+
fruit = None
109
109
+
while getCell(app_inst, fruit) is not None:
110
110
+
fruit = (randint(0, app_inst.rows - 1), randint(0, app_inst.cols - 1))
111
111
+
app_inst.fruit = fruit
112
112
+
break
113
113
+
114
114
+
115
115
+
def makePoison(app_inst: AppWrapper):
116
116
+
poison = None
117
117
+
while getCell(app_inst, poison) is not None:
118
118
+
poison = (randint(0, app_inst.rows - 1), randint(0, app_inst.cols - 1))
119
119
+
app_inst.poison = poison
120
120
+
break
121
121
+
122
122
+
123
123
+
def redrawAll(app_inst: AppWrapper):
124
124
+
drawLabel("Snake!", 200, 30, size=16)
125
125
+
drawBoard(app_inst)
126
126
+
drawBoardBorder(app_inst)
127
127
+
drawFruit(app_inst)
128
128
+
drawPoison(app_inst)
129
129
+
drawPortals(app_inst)
130
130
+
drawSnake(app_inst)
131
131
+
sleep(0.1875)
132
132
+
if app_inst.gameOver:
133
133
+
drawGameOver(app_inst)
134
134
+
135
135
+
136
136
+
def drawPoison(app_inst: AppWrapper):
137
137
+
if app_inst.poison is not None:
138
138
+
cellLeft, cellTop = getCellLeftTop(app_inst, *app_inst.poison)
139
139
+
cellWidth, cellHeight = getCellSize(app_inst)
140
140
+
drawCircle(
141
141
+
cellLeft + cellWidth / 2,
142
142
+
cellTop + cellHeight / 2,
143
143
+
cellWidth / 2 - 6,
144
144
+
fill="purple",
145
145
+
)
146
146
+
147
147
+
148
148
+
def drawPortals(app_inst: AppWrapper):
149
149
+
for portal in app_inst.portals:
150
150
+
cellLeft, cellTop = getCellLeftTop(app_inst, portal[0], portal[1])
151
151
+
cellWidth, cellHeight = getCellSize(app_inst)
152
152
+
drawCircle(
153
153
+
cellLeft + cellWidth / 2,
154
154
+
cellTop + cellHeight / 2,
155
155
+
cellWidth / 2 - 6,
156
156
+
fill="black",
157
157
+
)
158
158
+
159
159
+
160
160
+
def drawGameOver(app_inst: AppWrapper):
161
161
+
drawRect(app_inst.width / 2 - 150, app_inst.height / 2 - 50, 300, 100, fill="white")
162
162
+
drawLabel("Game Over!", app_inst.width / 2, app_inst.height / 2 - 20, size=16)
163
163
+
drawLabel(
164
164
+
f"Score: {len(app_inst.snake)-1}",
165
165
+
app_inst.width / 2,
166
166
+
app_inst.height / 2,
167
167
+
size=12,
168
168
+
)
169
169
+
drawLabel(
170
170
+
"Press R to restart", app_inst.width / 2, app_inst.height / 2 + 20, size=12
171
171
+
)
172
172
+
drawLabel("Press Q to quit", app_inst.width / 2, app_inst.height / 2 + 40, size=12)
173
173
+
174
174
+
175
175
+
def drawFruit(app_inst: AppWrapper):
176
176
+
if app_inst.fruit is not None:
177
177
+
cellLeft, cellTop = getCellLeftTop(app_inst, *app_inst.fruit)
178
178
+
cellWidth, cellHeight = getCellSize(app_inst)
179
179
+
drawCircle(
180
180
+
cellLeft + cellWidth / 2,
181
181
+
cellTop + cellHeight / 2,
182
182
+
cellWidth / 2 - 8,
183
183
+
fill="red",
184
184
+
)
185
185
+
186
186
+
187
187
+
def drawSnake(app_inst: AppWrapper):
188
188
+
cellWidth, cellHeight = getCellSize(app_inst)
189
189
+
for i, segment in enumerate(app_inst.snake):
190
190
+
cellLeft, cellTop = getCellLeftTop(app_inst, segment[0], segment[1])
191
191
+
color = "green" if i == 0 else "gray"
192
192
+
drawCircle(
193
193
+
cellLeft + cellWidth / 2,
194
194
+
cellTop + cellHeight / 2,
195
195
+
cellWidth / 2 - 4,
196
196
+
fill=color,
197
197
+
)
198
198
+
199
199
+
200
200
+
def drawBoard(app_inst: AppWrapper):
201
201
+
for row in range(app_inst.rows):
202
202
+
for col in range(app_inst.cols):
203
203
+
drawCell(app_inst, row, col)
204
204
+
205
205
+
206
206
+
def drawBoardBorder(app_inst: AppWrapper):
207
207
+
drawRect(
208
208
+
app_inst.boardLeft,
209
209
+
app_inst.boardTop,
210
210
+
app_inst.boardWidth,
211
211
+
app_inst.boardHeight,
212
212
+
fill=None,
213
213
+
border="black",
214
214
+
borderWidth=2 * app_inst.cellBorderWidth,
215
215
+
)
216
216
+
217
217
+
218
218
+
def drawCell(app_inst: AppWrapper, row, col):
219
219
+
cellLeft, cellTop = getCellLeftTop(app_inst, row, col)
220
220
+
cellWidth, cellHeight = getCellSize(app_inst)
221
221
+
drawRect(
222
222
+
cellLeft,
223
223
+
cellTop,
224
224
+
cellWidth,
225
225
+
cellHeight,
226
226
+
fill=None,
227
227
+
border="gray",
228
228
+
borderWidth=app_inst.cellBorderWidth,
229
229
+
)
230
230
+
231
231
+
232
232
+
def getCellLeftTop(app_inst: AppWrapper, row, col):
233
233
+
cellWidth, cellHeight = getCellSize(app_inst)
234
234
+
cellLeft = app_inst.boardLeft + col * cellWidth
235
235
+
cellTop = app_inst.boardTop + row * cellHeight
236
236
+
return (cellLeft, cellTop)
237
237
+
238
238
+
239
239
+
def getCellSize(app_inst: AppWrapper):
240
240
+
cellWidth = app_inst.boardWidth / app_inst.cols
241
241
+
cellHeight = app_inst.boardHeight / app_inst.rows
242
242
+
return (cellWidth, cellHeight)
243
243
+
244
244
+
245
245
+
def main():
246
246
+
runApp()
247
247
+
248
248
+
249
249
+
main()
+2451
python/oct6/wordle/main.py
···
1
1
+
from cmu_graphics.cmu_graphics import AppWrapper, app, runApp
2
2
+
from cmu_graphics import *
3
3
+
from random import choice
4
4
+
from typing import List
5
5
+
6
6
+
7
7
+
def onAppStart(app_inst: AppWrapper):
8
8
+
app_inst.word = getWord()
9
9
+
app_inst.guesses = [
10
10
+
["", "", "", "", ""],
11
11
+
["", "", "", "", ""],
12
12
+
["", "", "", "", ""],
13
13
+
["", "", "", "", ""],
14
14
+
["", "", "", "", ""],
15
15
+
["", "", "", "", ""],
16
16
+
]
17
17
+
app_inst.invalid_word = False
18
18
+
app_inst.current_guess = 0
19
19
+
app_inst.game_over = False
20
20
+
21
21
+
22
22
+
def wordHistory(app_inst: AppWrapper):
23
23
+
return ["".join(guess) for guess in app_inst.guesses[: app_inst.current_guess]]
24
24
+
25
25
+
26
26
+
def onKeyPress(app_inst: AppWrapper, key):
27
27
+
guess = (
28
28
+
app_inst.guesses[app_inst.current_guess] if app_inst.current_guess < 6 else [""]
29
29
+
)
30
30
+
if key == "backspace":
31
31
+
app_inst.invalid_word = False
32
32
+
current_letter = guess.index("") if guess[4] == "" else 5
33
33
+
app_inst.guesses[app_inst.current_guess][current_letter - 1] = ""
34
34
+
elif key == "enter":
35
35
+
if "".join(guess) not in getWords() or "".join(guess) in wordHistory(app_inst):
36
36
+
app_inst.invalid_word = True
37
37
+
return
38
38
+
if app_inst.current_guess <= 6:
39
39
+
app_inst.current_guess += 1
40
40
+
if "".join(guess) == app_inst.word or app_inst.current_guess == 6:
41
41
+
app_inst.game_over = True
42
42
+
elif key == "r" and app_inst.game_over:
43
43
+
onAppStart(app_inst)
44
44
+
elif len(key) == 1 and key.isalpha():
45
45
+
current_letter = guess.index("") if guess[4] == "" else 4
46
46
+
app_inst.guesses[app_inst.current_guess][current_letter] = key.lower()
47
47
+
48
48
+
49
49
+
def letterCount(word):
50
50
+
letter_count = {}
51
51
+
for letter in word:
52
52
+
if letter == "":
53
53
+
continue
54
54
+
letter_count[letter] = letter_count.get(letter, 0) + 1
55
55
+
return letter_count
56
56
+
57
57
+
58
58
+
def checkWord(app_inst: AppWrapper, word: List[str], index):
59
59
+
if not index < app_inst.current_guess:
60
60
+
if app_inst.invalid_word:
61
61
+
return ["red", "red", "red", "red", "red"]
62
62
+
return ["white", "white", "white", "white", "white"]
63
63
+
letter_colors = ["gray", "gray", "gray", "gray", "gray"]
64
64
+
correct_letter_count = letterCount(app_inst.word)
65
65
+
for i, letter in enumerate(word):
66
66
+
if letter == app_inst.word[i]:
67
67
+
correct_letter_count[letter] -= 1
68
68
+
letter_colors[i] = "green"
69
69
+
for i, letter in enumerate(word):
70
70
+
if letter in app_inst.word and correct_letter_count[letter] >= 1:
71
71
+
letter_colors[i] = "yellow"
72
72
+
correct_letter_count[letter] -= 1
73
73
+
return letter_colors
74
74
+
75
75
+
76
76
+
def drawCell(app_inst: AppWrapper, x, y, letter, color):
77
77
+
cell_size = (app_inst.width - 150) / 5
78
78
+
drawRect(
79
79
+
x - cell_size / 2,
80
80
+
y - cell_size / 2,
81
81
+
cell_size,
82
82
+
cell_size,
83
83
+
fill=color,
84
84
+
border="black",
85
85
+
borderWidth=1,
86
86
+
)
87
87
+
drawLabel(letter.upper(), x, y, size=cell_size * 0.8)
88
88
+
89
89
+
90
90
+
def redrawAll(app_inst: AppWrapper):
91
91
+
padding = 8
92
92
+
x_play_area = app_inst.width - 150
93
93
+
y_play_area = app_inst.height - 100
94
94
+
x_center = x_play_area / 2
95
95
+
y_center = y_play_area / 2
96
96
+
x_border = x_center - (x_play_area / 10) - (padding * 2.5)
97
97
+
y_border = y_center - (y_play_area / 4) - (padding * 3)
98
98
+
for i, guess in enumerate(app_inst.guesses):
99
99
+
if i > app_inst.current_guess:
100
100
+
continue
101
101
+
word_colors = checkWord(app_inst, guess, i)
102
102
+
for j, letter in enumerate(guess):
103
103
+
x_cell_center = x_border + (x_play_area / 5 + padding) * j
104
104
+
y_cell_center = y_border + (y_play_area / 6 + padding) * i
105
105
+
drawCell(app_inst, x_cell_center, y_cell_center, letter, word_colors[j])
106
106
+
guess = "".join(app_inst.guesses[app_inst.current_guess - 1])
107
107
+
if app_inst.game_over:
108
108
+
text = "Game Over :("
109
109
+
if guess == app_inst.word:
110
110
+
text = "You Win!"
111
111
+
drawRect(
112
112
+
app_inst.width / 2 - 150,
113
113
+
app_inst.height / 2 - 50,
114
114
+
300,
115
115
+
100,
116
116
+
fill="white",
117
117
+
border="black",
118
118
+
borderWidth=1,
119
119
+
)
120
120
+
drawLabel(text, app_inst.width / 2, app_inst.height / 2, size=32)
121
121
+
122
122
+
123
123
+
def getWord():
124
124
+
# Return a random wordle word
125
125
+
# words from: https://www.wordunscrambler.net/word-list/wordle-word-list
126
126
+
words = getWords()
127
127
+
return choice(words)
128
128
+
129
129
+
130
130
+
def getWords():
131
131
+
# Return a list of all 2309 wordle words
132
132
+
# words from: https://www.wordunscrambler.net/word-list/wordle-word-list
133
133
+
words = [
134
134
+
"aback",
135
135
+
"abase",
136
136
+
"abate",
137
137
+
"abbey",
138
138
+
"abbot",
139
139
+
"abhor",
140
140
+
"abide",
141
141
+
"abled",
142
142
+
"abode",
143
143
+
"abort",
144
144
+
"about",
145
145
+
"above",
146
146
+
"abuse",
147
147
+
"abyss",
148
148
+
"acorn",
149
149
+
"acrid",
150
150
+
"actor",
151
151
+
"acute",
152
152
+
"adage",
153
153
+
"adapt",
154
154
+
"adept",
155
155
+
"admin",
156
156
+
"admit",
157
157
+
"adobe",
158
158
+
"adopt",
159
159
+
"adore",
160
160
+
"adorn",
161
161
+
"adult",
162
162
+
"affix",
163
163
+
"afire",
164
164
+
"afoot",
165
165
+
"afoul",
166
166
+
"after",
167
167
+
"again",
168
168
+
"agape",
169
169
+
"agate",
170
170
+
"agent",
171
171
+
"agile",
172
172
+
"aging",
173
173
+
"aglow",
174
174
+
"agony",
175
175
+
"agree",
176
176
+
"ahead",
177
177
+
"aider",
178
178
+
"aisle",
179
179
+
"alarm",
180
180
+
"album",
181
181
+
"alert",
182
182
+
"algae",
183
183
+
"alibi",
184
184
+
"alien",
185
185
+
"align",
186
186
+
"alike",
187
187
+
"alive",
188
188
+
"allay",
189
189
+
"alley",
190
190
+
"allot",
191
191
+
"allow",
192
192
+
"alloy",
193
193
+
"aloft",
194
194
+
"alone",
195
195
+
"along",
196
196
+
"aloof",
197
197
+
"aloud",
198
198
+
"alpha",
199
199
+
"altar",
200
200
+
"alter",
201
201
+
"amass",
202
202
+
"amaze",
203
203
+
"amber",
204
204
+
"amble",
205
205
+
"amend",
206
206
+
"amiss",
207
207
+
"amity",
208
208
+
"among",
209
209
+
"ample",
210
210
+
"amply",
211
211
+
"amuse",
212
212
+
"angel",
213
213
+
"anger",
214
214
+
"angle",
215
215
+
"angry",
216
216
+
"angst",
217
217
+
"anime",
218
218
+
"ankle",
219
219
+
"annex",
220
220
+
"annoy",
221
221
+
"annul",
222
222
+
"anode",
223
223
+
"antic",
224
224
+
"anvil",
225
225
+
"aorta",
226
226
+
"apart",
227
227
+
"aphid",
228
228
+
"aping",
229
229
+
"apnea",
230
230
+
"apple",
231
231
+
"apply",
232
232
+
"apron",
233
233
+
"aptly",
234
234
+
"arbor",
235
235
+
"ardor",
236
236
+
"arena",
237
237
+
"argue",
238
238
+
"arise",
239
239
+
"armor",
240
240
+
"aroma",
241
241
+
"arose",
242
242
+
"array",
243
243
+
"arrow",
244
244
+
"arson",
245
245
+
"artsy",
246
246
+
"ascot",
247
247
+
"ashen",
248
248
+
"aside",
249
249
+
"askew",
250
250
+
"assay",
251
251
+
"asset",
252
252
+
"atoll",
253
253
+
"atone",
254
254
+
"attic",
255
255
+
"audio",
256
256
+
"audit",
257
257
+
"augur",
258
258
+
"aunty",
259
259
+
"avail",
260
260
+
"avert",
261
261
+
"avian",
262
262
+
"avoid",
263
263
+
"await",
264
264
+
"awake",
265
265
+
"award",
266
266
+
"aware",
267
267
+
"awash",
268
268
+
"awful",
269
269
+
"awoke",
270
270
+
"axial",
271
271
+
"axiom",
272
272
+
"axion",
273
273
+
"azure",
274
274
+
"bacon",
275
275
+
"badge",
276
276
+
"badly",
277
277
+
"bagel",
278
278
+
"baggy",
279
279
+
"baker",
280
280
+
"baler",
281
281
+
"balmy",
282
282
+
"banal",
283
283
+
"banjo",
284
284
+
"barge",
285
285
+
"baron",
286
286
+
"basal",
287
287
+
"basic",
288
288
+
"basil",
289
289
+
"basin",
290
290
+
"basis",
291
291
+
"baste",
292
292
+
"batch",
293
293
+
"bathe",
294
294
+
"baton",
295
295
+
"batty",
296
296
+
"bawdy",
297
297
+
"bayou",
298
298
+
"beach",
299
299
+
"beady",
300
300
+
"beard",
301
301
+
"beast",
302
302
+
"beech",
303
303
+
"beefy",
304
304
+
"befit",
305
305
+
"began",
306
306
+
"begat",
307
307
+
"beget",
308
308
+
"begin",
309
309
+
"begun",
310
310
+
"being",
311
311
+
"belch",
312
312
+
"belie",
313
313
+
"belle",
314
314
+
"belly",
315
315
+
"below",
316
316
+
"bench",
317
317
+
"beret",
318
318
+
"berry",
319
319
+
"berth",
320
320
+
"beset",
321
321
+
"betel",
322
322
+
"bevel",
323
323
+
"bezel",
324
324
+
"bible",
325
325
+
"bicep",
326
326
+
"biddy",
327
327
+
"bigot",
328
328
+
"bilge",
329
329
+
"billy",
330
330
+
"binge",
331
331
+
"bingo",
332
332
+
"biome",
333
333
+
"birch",
334
334
+
"birth",
335
335
+
"bison",
336
336
+
"bitty",
337
337
+
"black",
338
338
+
"blade",
339
339
+
"blame",
340
340
+
"bland",
341
341
+
"blank",
342
342
+
"blare",
343
343
+
"blast",
344
344
+
"blaze",
345
345
+
"bleak",
346
346
+
"bleat",
347
347
+
"bleed",
348
348
+
"bleep",
349
349
+
"blend",
350
350
+
"bless",
351
351
+
"blimp",
352
352
+
"blind",
353
353
+
"blink",
354
354
+
"bliss",
355
355
+
"blitz",
356
356
+
"bloat",
357
357
+
"block",
358
358
+
"bloke",
359
359
+
"blond",
360
360
+
"blood",
361
361
+
"bloom",
362
362
+
"blown",
363
363
+
"bluer",
364
364
+
"bluff",
365
365
+
"blunt",
366
366
+
"blurb",
367
367
+
"blurt",
368
368
+
"blush",
369
369
+
"board",
370
370
+
"boast",
371
371
+
"bobby",
372
372
+
"boney",
373
373
+
"bongo",
374
374
+
"bonus",
375
375
+
"booby",
376
376
+
"boost",
377
377
+
"booth",
378
378
+
"booty",
379
379
+
"booze",
380
380
+
"boozy",
381
381
+
"borax",
382
382
+
"borne",
383
383
+
"bosom",
384
384
+
"bossy",
385
385
+
"botch",
386
386
+
"bough",
387
387
+
"boule",
388
388
+
"bound",
389
389
+
"bowel",
390
390
+
"boxer",
391
391
+
"brace",
392
392
+
"braid",
393
393
+
"brain",
394
394
+
"brake",
395
395
+
"brand",
396
396
+
"brash",
397
397
+
"brass",
398
398
+
"brave",
399
399
+
"bravo",
400
400
+
"brawl",
401
401
+
"brawn",
402
402
+
"bread",
403
403
+
"break",
404
404
+
"breed",
405
405
+
"briar",
406
406
+
"bribe",
407
407
+
"brick",
408
408
+
"bride",
409
409
+
"brief",
410
410
+
"brine",
411
411
+
"bring",
412
412
+
"brink",
413
413
+
"briny",
414
414
+
"brisk",
415
415
+
"broad",
416
416
+
"broil",
417
417
+
"broke",
418
418
+
"brood",
419
419
+
"brook",
420
420
+
"broom",
421
421
+
"broth",
422
422
+
"brown",
423
423
+
"brunt",
424
424
+
"brush",
425
425
+
"brute",
426
426
+
"buddy",
427
427
+
"budge",
428
428
+
"buggy",
429
429
+
"bugle",
430
430
+
"build",
431
431
+
"built",
432
432
+
"bulge",
433
433
+
"bulky",
434
434
+
"bully",
435
435
+
"bunch",
436
436
+
"bunny",
437
437
+
"burly",
438
438
+
"burnt",
439
439
+
"burst",
440
440
+
"bused",
441
441
+
"bushy",
442
442
+
"butch",
443
443
+
"butte",
444
444
+
"buxom",
445
445
+
"buyer",
446
446
+
"bylaw",
447
447
+
"cabal",
448
448
+
"cabby",
449
449
+
"cabin",
450
450
+
"cable",
451
451
+
"cacao",
452
452
+
"cache",
453
453
+
"cacti",
454
454
+
"caddy",
455
455
+
"cadet",
456
456
+
"cagey",
457
457
+
"cairn",
458
458
+
"camel",
459
459
+
"cameo",
460
460
+
"canal",
461
461
+
"candy",
462
462
+
"canny",
463
463
+
"canoe",
464
464
+
"canon",
465
465
+
"caper",
466
466
+
"caput",
467
467
+
"carat",
468
468
+
"cargo",
469
469
+
"carol",
470
470
+
"carry",
471
471
+
"carve",
472
472
+
"caste",
473
473
+
"catch",
474
474
+
"cater",
475
475
+
"catty",
476
476
+
"caulk",
477
477
+
"cause",
478
478
+
"cavil",
479
479
+
"cease",
480
480
+
"cedar",
481
481
+
"cello",
482
482
+
"chafe",
483
483
+
"chaff",
484
484
+
"chain",
485
485
+
"chair",
486
486
+
"chalk",
487
487
+
"champ",
488
488
+
"chant",
489
489
+
"chaos",
490
490
+
"chard",
491
491
+
"charm",
492
492
+
"chart",
493
493
+
"chase",
494
494
+
"chasm",
495
495
+
"cheap",
496
496
+
"cheat",
497
497
+
"check",
498
498
+
"cheek",
499
499
+
"cheer",
500
500
+
"chess",
501
501
+
"chest",
502
502
+
"chick",
503
503
+
"chide",
504
504
+
"chief",
505
505
+
"child",
506
506
+
"chili",
507
507
+
"chill",
508
508
+
"chime",
509
509
+
"china",
510
510
+
"chirp",
511
511
+
"chock",
512
512
+
"choir",
513
513
+
"choke",
514
514
+
"chord",
515
515
+
"chore",
516
516
+
"chose",
517
517
+
"chuck",
518
518
+
"chump",
519
519
+
"chunk",
520
520
+
"churn",
521
521
+
"chute",
522
522
+
"cider",
523
523
+
"cigar",
524
524
+
"cinch",
525
525
+
"circa",
526
526
+
"civic",
527
527
+
"civil",
528
528
+
"clack",
529
529
+
"claim",
530
530
+
"clamp",
531
531
+
"clang",
532
532
+
"clank",
533
533
+
"clash",
534
534
+
"clasp",
535
535
+
"class",
536
536
+
"clean",
537
537
+
"clear",
538
538
+
"cleat",
539
539
+
"cleft",
540
540
+
"clerk",
541
541
+
"click",
542
542
+
"cliff",
543
543
+
"climb",
544
544
+
"cling",
545
545
+
"clink",
546
546
+
"cloak",
547
547
+
"clock",
548
548
+
"clone",
549
549
+
"close",
550
550
+
"cloth",
551
551
+
"cloud",
552
552
+
"clout",
553
553
+
"clove",
554
554
+
"clown",
555
555
+
"cluck",
556
556
+
"clued",
557
557
+
"clump",
558
558
+
"clung",
559
559
+
"coach",
560
560
+
"coast",
561
561
+
"cobra",
562
562
+
"cocoa",
563
563
+
"colon",
564
564
+
"color",
565
565
+
"comet",
566
566
+
"comfy",
567
567
+
"comic",
568
568
+
"comma",
569
569
+
"conch",
570
570
+
"condo",
571
571
+
"conic",
572
572
+
"copse",
573
573
+
"coral",
574
574
+
"corer",
575
575
+
"corny",
576
576
+
"couch",
577
577
+
"cough",
578
578
+
"could",
579
579
+
"count",
580
580
+
"coupe",
581
581
+
"court",
582
582
+
"coven",
583
583
+
"cover",
584
584
+
"covet",
585
585
+
"covey",
586
586
+
"cower",
587
587
+
"coyly",
588
588
+
"crack",
589
589
+
"craft",
590
590
+
"cramp",
591
591
+
"crane",
592
592
+
"crank",
593
593
+
"crash",
594
594
+
"crass",
595
595
+
"crate",
596
596
+
"crave",
597
597
+
"crawl",
598
598
+
"craze",
599
599
+
"crazy",
600
600
+
"creak",
601
601
+
"cream",
602
602
+
"credo",
603
603
+
"creed",
604
604
+
"creek",
605
605
+
"creep",
606
606
+
"creme",
607
607
+
"crepe",
608
608
+
"crept",
609
609
+
"cress",
610
610
+
"crest",
611
611
+
"crick",
612
612
+
"cried",
613
613
+
"crier",
614
614
+
"crime",
615
615
+
"crimp",
616
616
+
"crisp",
617
617
+
"croak",
618
618
+
"crock",
619
619
+
"crone",
620
620
+
"crony",
621
621
+
"crook",
622
622
+
"cross",
623
623
+
"croup",
624
624
+
"crowd",
625
625
+
"crown",
626
626
+
"crude",
627
627
+
"cruel",
628
628
+
"crumb",
629
629
+
"crump",
630
630
+
"crush",
631
631
+
"crust",
632
632
+
"crypt",
633
633
+
"cubic",
634
634
+
"cumin",
635
635
+
"curio",
636
636
+
"curly",
637
637
+
"curry",
638
638
+
"curse",
639
639
+
"curve",
640
640
+
"curvy",
641
641
+
"cutie",
642
642
+
"cyber",
643
643
+
"cycle",
644
644
+
"cynic",
645
645
+
"daddy",
646
646
+
"daily",
647
647
+
"dairy",
648
648
+
"daisy",
649
649
+
"dally",
650
650
+
"dance",
651
651
+
"dandy",
652
652
+
"datum",
653
653
+
"daunt",
654
654
+
"dealt",
655
655
+
"death",
656
656
+
"debar",
657
657
+
"debit",
658
658
+
"debug",
659
659
+
"debut",
660
660
+
"decal",
661
661
+
"decay",
662
662
+
"decor",
663
663
+
"decoy",
664
664
+
"decry",
665
665
+
"defer",
666
666
+
"deign",
667
667
+
"deity",
668
668
+
"delay",
669
669
+
"delta",
670
670
+
"delve",
671
671
+
"demon",
672
672
+
"demur",
673
673
+
"denim",
674
674
+
"dense",
675
675
+
"depot",
676
676
+
"depth",
677
677
+
"derby",
678
678
+
"deter",
679
679
+
"detox",
680
680
+
"deuce",
681
681
+
"devil",
682
682
+
"diary",
683
683
+
"dicey",
684
684
+
"digit",
685
685
+
"dilly",
686
686
+
"dimly",
687
687
+
"diner",
688
688
+
"dingo",
689
689
+
"dingy",
690
690
+
"diode",
691
691
+
"dirge",
692
692
+
"dirty",
693
693
+
"disco",
694
694
+
"ditch",
695
695
+
"ditto",
696
696
+
"ditty",
697
697
+
"diver",
698
698
+
"dizzy",
699
699
+
"dodge",
700
700
+
"dodgy",
701
701
+
"dogma",
702
702
+
"doing",
703
703
+
"dolly",
704
704
+
"donor",
705
705
+
"donut",
706
706
+
"dopey",
707
707
+
"doubt",
708
708
+
"dough",
709
709
+
"dowdy",
710
710
+
"dowel",
711
711
+
"downy",
712
712
+
"dowry",
713
713
+
"dozen",
714
714
+
"draft",
715
715
+
"drain",
716
716
+
"drake",
717
717
+
"drama",
718
718
+
"drank",
719
719
+
"drape",
720
720
+
"drawl",
721
721
+
"drawn",
722
722
+
"dread",
723
723
+
"dream",
724
724
+
"dress",
725
725
+
"dried",
726
726
+
"drier",
727
727
+
"drift",
728
728
+
"drill",
729
729
+
"drink",
730
730
+
"drive",
731
731
+
"droit",
732
732
+
"droll",
733
733
+
"drone",
734
734
+
"drool",
735
735
+
"droop",
736
736
+
"dross",
737
737
+
"drove",
738
738
+
"drown",
739
739
+
"druid",
740
740
+
"drunk",
741
741
+
"dryer",
742
742
+
"dryly",
743
743
+
"duchy",
744
744
+
"dully",
745
745
+
"dummy",
746
746
+
"dumpy",
747
747
+
"dunce",
748
748
+
"dusky",
749
749
+
"dusty",
750
750
+
"dutch",
751
751
+
"duvet",
752
752
+
"dwarf",
753
753
+
"dwell",
754
754
+
"dwelt",
755
755
+
"dying",
756
756
+
"eager",
757
757
+
"eagle",
758
758
+
"early",
759
759
+
"earth",
760
760
+
"easel",
761
761
+
"eaten",
762
762
+
"eater",
763
763
+
"ebony",
764
764
+
"eclat",
765
765
+
"edict",
766
766
+
"edify",
767
767
+
"eerie",
768
768
+
"egret",
769
769
+
"eight",
770
770
+
"eject",
771
771
+
"eking",
772
772
+
"elate",
773
773
+
"elbow",
774
774
+
"elder",
775
775
+
"elect",
776
776
+
"elegy",
777
777
+
"elfin",
778
778
+
"elide",
779
779
+
"elite",
780
780
+
"elope",
781
781
+
"elude",
782
782
+
"email",
783
783
+
"embed",
784
784
+
"ember",
785
785
+
"emcee",
786
786
+
"empty",
787
787
+
"enact",
788
788
+
"endow",
789
789
+
"enema",
790
790
+
"enemy",
791
791
+
"enjoy",
792
792
+
"ennui",
793
793
+
"ensue",
794
794
+
"enter",
795
795
+
"entry",
796
796
+
"envoy",
797
797
+
"epoch",
798
798
+
"epoxy",
799
799
+
"equal",
800
800
+
"equip",
801
801
+
"erase",
802
802
+
"erect",
803
803
+
"erode",
804
804
+
"error",
805
805
+
"erupt",
806
806
+
"essay",
807
807
+
"ester",
808
808
+
"ether",
809
809
+
"ethic",
810
810
+
"ethos",
811
811
+
"etude",
812
812
+
"evade",
813
813
+
"event",
814
814
+
"every",
815
815
+
"evict",
816
816
+
"evoke",
817
817
+
"exact",
818
818
+
"exalt",
819
819
+
"excel",
820
820
+
"exert",
821
821
+
"exile",
822
822
+
"exist",
823
823
+
"expel",
824
824
+
"extol",
825
825
+
"extra",
826
826
+
"exult",
827
827
+
"eying",
828
828
+
"fable",
829
829
+
"facet",
830
830
+
"faint",
831
831
+
"fairy",
832
832
+
"faith",
833
833
+
"false",
834
834
+
"fancy",
835
835
+
"fanny",
836
836
+
"farce",
837
837
+
"fatal",
838
838
+
"fatty",
839
839
+
"fault",
840
840
+
"fauna",
841
841
+
"favor",
842
842
+
"feast",
843
843
+
"fecal",
844
844
+
"feign",
845
845
+
"fella",
846
846
+
"felon",
847
847
+
"femme",
848
848
+
"femur",
849
849
+
"fence",
850
850
+
"feral",
851
851
+
"ferry",
852
852
+
"fetal",
853
853
+
"fetch",
854
854
+
"fetid",
855
855
+
"fetus",
856
856
+
"fever",
857
857
+
"fewer",
858
858
+
"fiber",
859
859
+
"ficus",
860
860
+
"field",
861
861
+
"fiend",
862
862
+
"fiery",
863
863
+
"fifth",
864
864
+
"fifty",
865
865
+
"fight",
866
866
+
"filer",
867
867
+
"filet",
868
868
+
"filly",
869
869
+
"filmy",
870
870
+
"filth",
871
871
+
"final",
872
872
+
"finch",
873
873
+
"finer",
874
874
+
"first",
875
875
+
"fishy",
876
876
+
"fixer",
877
877
+
"fizzy",
878
878
+
"fjord",
879
879
+
"flack",
880
880
+
"flail",
881
881
+
"flair",
882
882
+
"flake",
883
883
+
"flaky",
884
884
+
"flame",
885
885
+
"flank",
886
886
+
"flare",
887
887
+
"flash",
888
888
+
"flask",
889
889
+
"fleck",
890
890
+
"fleet",
891
891
+
"flesh",
892
892
+
"flick",
893
893
+
"flier",
894
894
+
"fling",
895
895
+
"flint",
896
896
+
"flirt",
897
897
+
"float",
898
898
+
"flock",
899
899
+
"flood",
900
900
+
"floor",
901
901
+
"flora",
902
902
+
"floss",
903
903
+
"flour",
904
904
+
"flout",
905
905
+
"flown",
906
906
+
"fluff",
907
907
+
"fluid",
908
908
+
"fluke",
909
909
+
"flume",
910
910
+
"flung",
911
911
+
"flunk",
912
912
+
"flush",
913
913
+
"flute",
914
914
+
"flyer",
915
915
+
"foamy",
916
916
+
"focal",
917
917
+
"focus",
918
918
+
"foggy",
919
919
+
"foist",
920
920
+
"folio",
921
921
+
"folly",
922
922
+
"foray",
923
923
+
"force",
924
924
+
"forge",
925
925
+
"forgo",
926
926
+
"forte",
927
927
+
"forth",
928
928
+
"forty",
929
929
+
"forum",
930
930
+
"found",
931
931
+
"foyer",
932
932
+
"frail",
933
933
+
"frame",
934
934
+
"frank",
935
935
+
"fraud",
936
936
+
"freak",
937
937
+
"freed",
938
938
+
"freer",
939
939
+
"fresh",
940
940
+
"friar",
941
941
+
"fried",
942
942
+
"frill",
943
943
+
"frisk",
944
944
+
"fritz",
945
945
+
"frock",
946
946
+
"frond",
947
947
+
"front",
948
948
+
"frost",
949
949
+
"froth",
950
950
+
"frown",
951
951
+
"froze",
952
952
+
"fruit",
953
953
+
"fudge",
954
954
+
"fugue",
955
955
+
"fully",
956
956
+
"fungi",
957
957
+
"funky",
958
958
+
"funny",
959
959
+
"furor",
960
960
+
"furry",
961
961
+
"fussy",
962
962
+
"fuzzy",
963
963
+
"gaffe",
964
964
+
"gaily",
965
965
+
"gamer",
966
966
+
"gamma",
967
967
+
"gamut",
968
968
+
"gassy",
969
969
+
"gaudy",
970
970
+
"gauge",
971
971
+
"gaunt",
972
972
+
"gauze",
973
973
+
"gavel",
974
974
+
"gawky",
975
975
+
"gayer",
976
976
+
"gayly",
977
977
+
"gazer",
978
978
+
"gecko",
979
979
+
"geeky",
980
980
+
"geese",
981
981
+
"genie",
982
982
+
"genre",
983
983
+
"ghost",
984
984
+
"ghoul",
985
985
+
"giant",
986
986
+
"giddy",
987
987
+
"gipsy",
988
988
+
"girly",
989
989
+
"girth",
990
990
+
"given",
991
991
+
"giver",
992
992
+
"glade",
993
993
+
"gland",
994
994
+
"glare",
995
995
+
"glass",
996
996
+
"glaze",
997
997
+
"gleam",
998
998
+
"glean",
999
999
+
"glide",
1000
1000
+
"glint",
1001
1001
+
"gloat",
1002
1002
+
"globe",
1003
1003
+
"gloom",
1004
1004
+
"glory",
1005
1005
+
"gloss",
1006
1006
+
"glove",
1007
1007
+
"glyph",
1008
1008
+
"gnash",
1009
1009
+
"gnome",
1010
1010
+
"godly",
1011
1011
+
"going",
1012
1012
+
"golem",
1013
1013
+
"golly",
1014
1014
+
"gonad",
1015
1015
+
"goner",
1016
1016
+
"goody",
1017
1017
+
"gooey",
1018
1018
+
"goofy",
1019
1019
+
"goose",
1020
1020
+
"gorge",
1021
1021
+
"gouge",
1022
1022
+
"gourd",
1023
1023
+
"grace",
1024
1024
+
"grade",
1025
1025
+
"graft",
1026
1026
+
"grail",
1027
1027
+
"grain",
1028
1028
+
"grand",
1029
1029
+
"grant",
1030
1030
+
"grape",
1031
1031
+
"graph",
1032
1032
+
"grasp",
1033
1033
+
"grass",
1034
1034
+
"grate",
1035
1035
+
"grave",
1036
1036
+
"gravy",
1037
1037
+
"graze",
1038
1038
+
"great",
1039
1039
+
"greed",
1040
1040
+
"green",
1041
1041
+
"greet",
1042
1042
+
"grief",
1043
1043
+
"grill",
1044
1044
+
"grime",
1045
1045
+
"grimy",
1046
1046
+
"grind",
1047
1047
+
"gripe",
1048
1048
+
"groan",
1049
1049
+
"groin",
1050
1050
+
"groom",
1051
1051
+
"grope",
1052
1052
+
"gross",
1053
1053
+
"group",
1054
1054
+
"grout",
1055
1055
+
"grove",
1056
1056
+
"growl",
1057
1057
+
"grown",
1058
1058
+
"gruel",
1059
1059
+
"gruff",
1060
1060
+
"grunt",
1061
1061
+
"guard",
1062
1062
+
"guava",
1063
1063
+
"guess",
1064
1064
+
"guest",
1065
1065
+
"guide",
1066
1066
+
"guild",
1067
1067
+
"guile",
1068
1068
+
"guilt",
1069
1069
+
"guise",
1070
1070
+
"gulch",
1071
1071
+
"gully",
1072
1072
+
"gumbo",
1073
1073
+
"gummy",
1074
1074
+
"guppy",
1075
1075
+
"gusto",
1076
1076
+
"gusty",
1077
1077
+
"gypsy",
1078
1078
+
"habit",
1079
1079
+
"hairy",
1080
1080
+
"halve",
1081
1081
+
"handy",
1082
1082
+
"happy",
1083
1083
+
"hardy",
1084
1084
+
"harem",
1085
1085
+
"harpy",
1086
1086
+
"harry",
1087
1087
+
"harsh",
1088
1088
+
"haste",
1089
1089
+
"hasty",
1090
1090
+
"hatch",
1091
1091
+
"hater",
1092
1092
+
"haunt",
1093
1093
+
"haute",
1094
1094
+
"haven",
1095
1095
+
"havoc",
1096
1096
+
"hazel",
1097
1097
+
"heady",
1098
1098
+
"heard",
1099
1099
+
"heart",
1100
1100
+
"heath",
1101
1101
+
"heave",
1102
1102
+
"heavy",
1103
1103
+
"hedge",
1104
1104
+
"hefty",
1105
1105
+
"heist",
1106
1106
+
"helix",
1107
1107
+
"hello",
1108
1108
+
"hence",
1109
1109
+
"heron",
1110
1110
+
"hilly",
1111
1111
+
"hinge",
1112
1112
+
"hippo",
1113
1113
+
"hippy",
1114
1114
+
"hitch",
1115
1115
+
"hoard",
1116
1116
+
"hobby",
1117
1117
+
"hoist",
1118
1118
+
"holly",
1119
1119
+
"homer",
1120
1120
+
"honey",
1121
1121
+
"honor",
1122
1122
+
"horde",
1123
1123
+
"horny",
1124
1124
+
"horse",
1125
1125
+
"hotel",
1126
1126
+
"hotly",
1127
1127
+
"hound",
1128
1128
+
"house",
1129
1129
+
"hovel",
1130
1130
+
"hover",
1131
1131
+
"howdy",
1132
1132
+
"human",
1133
1133
+
"humid",
1134
1134
+
"humor",
1135
1135
+
"humph",
1136
1136
+
"humus",
1137
1137
+
"hunch",
1138
1138
+
"hunky",
1139
1139
+
"hurry",
1140
1140
+
"husky",
1141
1141
+
"hussy",
1142
1142
+
"hutch",
1143
1143
+
"hydro",
1144
1144
+
"hyena",
1145
1145
+
"hymen",
1146
1146
+
"hyper",
1147
1147
+
"icily",
1148
1148
+
"icing",
1149
1149
+
"ideal",
1150
1150
+
"idiom",
1151
1151
+
"idiot",
1152
1152
+
"idler",
1153
1153
+
"idyll",
1154
1154
+
"igloo",
1155
1155
+
"iliac",
1156
1156
+
"image",
1157
1157
+
"imbue",
1158
1158
+
"impel",
1159
1159
+
"imply",
1160
1160
+
"inane",
1161
1161
+
"inbox",
1162
1162
+
"incur",
1163
1163
+
"index",
1164
1164
+
"inept",
1165
1165
+
"inert",
1166
1166
+
"infer",
1167
1167
+
"ingot",
1168
1168
+
"inlay",
1169
1169
+
"inlet",
1170
1170
+
"inner",
1171
1171
+
"input",
1172
1172
+
"inter",
1173
1173
+
"intro",
1174
1174
+
"ionic",
1175
1175
+
"irate",
1176
1176
+
"irony",
1177
1177
+
"islet",
1178
1178
+
"issue",
1179
1179
+
"itchy",
1180
1180
+
"ivory",
1181
1181
+
"jaunt",
1182
1182
+
"jazzy",
1183
1183
+
"jelly",
1184
1184
+
"jerky",
1185
1185
+
"jetty",
1186
1186
+
"jewel",
1187
1187
+
"jiffy",
1188
1188
+
"joint",
1189
1189
+
"joist",
1190
1190
+
"joker",
1191
1191
+
"jolly",
1192
1192
+
"joust",
1193
1193
+
"judge",
1194
1194
+
"juice",
1195
1195
+
"juicy",
1196
1196
+
"jumbo",
1197
1197
+
"jumpy",
1198
1198
+
"junta",
1199
1199
+
"junto",
1200
1200
+
"juror",
1201
1201
+
"kappa",
1202
1202
+
"karma",
1203
1203
+
"kayak",
1204
1204
+
"kebab",
1205
1205
+
"khaki",
1206
1206
+
"kinky",
1207
1207
+
"kiosk",
1208
1208
+
"kitty",
1209
1209
+
"knack",
1210
1210
+
"knave",
1211
1211
+
"knead",
1212
1212
+
"kneed",
1213
1213
+
"kneel",
1214
1214
+
"knelt",
1215
1215
+
"knife",
1216
1216
+
"knock",
1217
1217
+
"knoll",
1218
1218
+
"known",
1219
1219
+
"koala",
1220
1220
+
"krill",
1221
1221
+
"label",
1222
1222
+
"labor",
1223
1223
+
"laden",
1224
1224
+
"ladle",
1225
1225
+
"lager",
1226
1226
+
"lance",
1227
1227
+
"lanky",
1228
1228
+
"lapel",
1229
1229
+
"lapse",
1230
1230
+
"large",
1231
1231
+
"larva",
1232
1232
+
"lasso",
1233
1233
+
"latch",
1234
1234
+
"later",
1235
1235
+
"lathe",
1236
1236
+
"latte",
1237
1237
+
"laugh",
1238
1238
+
"layer",
1239
1239
+
"leach",
1240
1240
+
"leafy",
1241
1241
+
"leaky",
1242
1242
+
"leant",
1243
1243
+
"leapt",
1244
1244
+
"learn",
1245
1245
+
"lease",
1246
1246
+
"leash",
1247
1247
+
"least",
1248
1248
+
"leave",
1249
1249
+
"ledge",
1250
1250
+
"leech",
1251
1251
+
"leery",
1252
1252
+
"lefty",
1253
1253
+
"legal",
1254
1254
+
"leggy",
1255
1255
+
"lemon",
1256
1256
+
"lemur",
1257
1257
+
"leper",
1258
1258
+
"level",
1259
1259
+
"lever",
1260
1260
+
"libel",
1261
1261
+
"liege",
1262
1262
+
"light",
1263
1263
+
"liken",
1264
1264
+
"lilac",
1265
1265
+
"limbo",
1266
1266
+
"limit",
1267
1267
+
"linen",
1268
1268
+
"liner",
1269
1269
+
"lingo",
1270
1270
+
"lipid",
1271
1271
+
"lithe",
1272
1272
+
"liver",
1273
1273
+
"livid",
1274
1274
+
"llama",
1275
1275
+
"loamy",
1276
1276
+
"loath",
1277
1277
+
"lobby",
1278
1278
+
"local",
1279
1279
+
"locus",
1280
1280
+
"lodge",
1281
1281
+
"lofty",
1282
1282
+
"logic",
1283
1283
+
"login",
1284
1284
+
"loopy",
1285
1285
+
"loose",
1286
1286
+
"lorry",
1287
1287
+
"loser",
1288
1288
+
"louse",
1289
1289
+
"lousy",
1290
1290
+
"lover",
1291
1291
+
"lower",
1292
1292
+
"lowly",
1293
1293
+
"loyal",
1294
1294
+
"lucid",
1295
1295
+
"lucky",
1296
1296
+
"lumen",
1297
1297
+
"lumpy",
1298
1298
+
"lunar",
1299
1299
+
"lunch",
1300
1300
+
"lunge",
1301
1301
+
"lupus",
1302
1302
+
"lurch",
1303
1303
+
"lurid",
1304
1304
+
"lusty",
1305
1305
+
"lying",
1306
1306
+
"lymph",
1307
1307
+
"lyric",
1308
1308
+
"macaw",
1309
1309
+
"macho",
1310
1310
+
"macro",
1311
1311
+
"madam",
1312
1312
+
"madly",
1313
1313
+
"mafia",
1314
1314
+
"magic",
1315
1315
+
"magma",
1316
1316
+
"maize",
1317
1317
+
"major",
1318
1318
+
"maker",
1319
1319
+
"mambo",
1320
1320
+
"mamma",
1321
1321
+
"mammy",
1322
1322
+
"manga",
1323
1323
+
"mange",
1324
1324
+
"mango",
1325
1325
+
"mangy",
1326
1326
+
"mania",
1327
1327
+
"manic",
1328
1328
+
"manly",
1329
1329
+
"manor",
1330
1330
+
"maple",
1331
1331
+
"march",
1332
1332
+
"marry",
1333
1333
+
"marsh",
1334
1334
+
"mason",
1335
1335
+
"masse",
1336
1336
+
"match",
1337
1337
+
"matey",
1338
1338
+
"mauve",
1339
1339
+
"maxim",
1340
1340
+
"maybe",
1341
1341
+
"mayor",
1342
1342
+
"mealy",
1343
1343
+
"meant",
1344
1344
+
"meaty",
1345
1345
+
"mecca",
1346
1346
+
"medal",
1347
1347
+
"media",
1348
1348
+
"medic",
1349
1349
+
"melee",
1350
1350
+
"melon",
1351
1351
+
"mercy",
1352
1352
+
"merge",
1353
1353
+
"merit",
1354
1354
+
"merry",
1355
1355
+
"metal",
1356
1356
+
"meter",
1357
1357
+
"metro",
1358
1358
+
"micro",
1359
1359
+
"midge",
1360
1360
+
"midst",
1361
1361
+
"might",
1362
1362
+
"milky",
1363
1363
+
"mimic",
1364
1364
+
"mince",
1365
1365
+
"miner",
1366
1366
+
"minim",
1367
1367
+
"minor",
1368
1368
+
"minty",
1369
1369
+
"minus",
1370
1370
+
"mirth",
1371
1371
+
"miser",
1372
1372
+
"missy",
1373
1373
+
"mocha",
1374
1374
+
"modal",
1375
1375
+
"model",
1376
1376
+
"modem",
1377
1377
+
"mogul",
1378
1378
+
"moist",
1379
1379
+
"molar",
1380
1380
+
"moldy",
1381
1381
+
"money",
1382
1382
+
"month",
1383
1383
+
"moody",
1384
1384
+
"moose",
1385
1385
+
"moral",
1386
1386
+
"moron",
1387
1387
+
"morph",
1388
1388
+
"mossy",
1389
1389
+
"motel",
1390
1390
+
"motif",
1391
1391
+
"motor",
1392
1392
+
"motto",
1393
1393
+
"moult",
1394
1394
+
"mound",
1395
1395
+
"mount",
1396
1396
+
"mourn",
1397
1397
+
"mouse",
1398
1398
+
"mouth",
1399
1399
+
"mover",
1400
1400
+
"movie",
1401
1401
+
"mower",
1402
1402
+
"mucky",
1403
1403
+
"mucus",
1404
1404
+
"muddy",
1405
1405
+
"mulch",
1406
1406
+
"mummy",
1407
1407
+
"munch",
1408
1408
+
"mural",
1409
1409
+
"murky",
1410
1410
+
"mushy",
1411
1411
+
"music",
1412
1412
+
"musky",
1413
1413
+
"musty",
1414
1414
+
"myrrh",
1415
1415
+
"nadir",
1416
1416
+
"naive",
1417
1417
+
"nanny",
1418
1418
+
"nasal",
1419
1419
+
"nasty",
1420
1420
+
"natal",
1421
1421
+
"naval",
1422
1422
+
"navel",
1423
1423
+
"needy",
1424
1424
+
"neigh",
1425
1425
+
"nerdy",
1426
1426
+
"nerve",
1427
1427
+
"never",
1428
1428
+
"newer",
1429
1429
+
"newly",
1430
1430
+
"nicer",
1431
1431
+
"niche",
1432
1432
+
"niece",
1433
1433
+
"night",
1434
1434
+
"ninja",
1435
1435
+
"ninny",
1436
1436
+
"ninth",
1437
1437
+
"noble",
1438
1438
+
"nobly",
1439
1439
+
"noise",
1440
1440
+
"noisy",
1441
1441
+
"nomad",
1442
1442
+
"noose",
1443
1443
+
"north",
1444
1444
+
"nosey",
1445
1445
+
"notch",
1446
1446
+
"novel",
1447
1447
+
"nudge",
1448
1448
+
"nurse",
1449
1449
+
"nutty",
1450
1450
+
"nylon",
1451
1451
+
"nymph",
1452
1452
+
"oaken",
1453
1453
+
"obese",
1454
1454
+
"occur",
1455
1455
+
"ocean",
1456
1456
+
"octal",
1457
1457
+
"octet",
1458
1458
+
"odder",
1459
1459
+
"oddly",
1460
1460
+
"offal",
1461
1461
+
"offer",
1462
1462
+
"often",
1463
1463
+
"olden",
1464
1464
+
"older",
1465
1465
+
"olive",
1466
1466
+
"ombre",
1467
1467
+
"omega",
1468
1468
+
"onion",
1469
1469
+
"onset",
1470
1470
+
"opera",
1471
1471
+
"opine",
1472
1472
+
"opium",
1473
1473
+
"optic",
1474
1474
+
"orbit",
1475
1475
+
"order",
1476
1476
+
"organ",
1477
1477
+
"other",
1478
1478
+
"otter",
1479
1479
+
"ought",
1480
1480
+
"ounce",
1481
1481
+
"outdo",
1482
1482
+
"outer",
1483
1483
+
"outgo",
1484
1484
+
"ovary",
1485
1485
+
"ovate",
1486
1486
+
"overt",
1487
1487
+
"ovine",
1488
1488
+
"ovoid",
1489
1489
+
"owing",
1490
1490
+
"owner",
1491
1491
+
"oxide",
1492
1492
+
"ozone",
1493
1493
+
"paddy",
1494
1494
+
"pagan",
1495
1495
+
"paint",
1496
1496
+
"paler",
1497
1497
+
"palsy",
1498
1498
+
"panel",
1499
1499
+
"panic",
1500
1500
+
"pansy",
1501
1501
+
"papal",
1502
1502
+
"paper",
1503
1503
+
"parer",
1504
1504
+
"parka",
1505
1505
+
"parry",
1506
1506
+
"parse",
1507
1507
+
"party",
1508
1508
+
"pasta",
1509
1509
+
"paste",
1510
1510
+
"pasty",
1511
1511
+
"patch",
1512
1512
+
"patio",
1513
1513
+
"patsy",
1514
1514
+
"patty",
1515
1515
+
"pause",
1516
1516
+
"payee",
1517
1517
+
"payer",
1518
1518
+
"peace",
1519
1519
+
"peach",
1520
1520
+
"pearl",
1521
1521
+
"pecan",
1522
1522
+
"pedal",
1523
1523
+
"penal",
1524
1524
+
"pence",
1525
1525
+
"penne",
1526
1526
+
"penny",
1527
1527
+
"perch",
1528
1528
+
"peril",
1529
1529
+
"perky",
1530
1530
+
"pesky",
1531
1531
+
"pesto",
1532
1532
+
"petal",
1533
1533
+
"petty",
1534
1534
+
"phase",
1535
1535
+
"phone",
1536
1536
+
"phony",
1537
1537
+
"photo",
1538
1538
+
"piano",
1539
1539
+
"picky",
1540
1540
+
"piece",
1541
1541
+
"piety",
1542
1542
+
"piggy",
1543
1543
+
"pilot",
1544
1544
+
"pinch",
1545
1545
+
"piney",
1546
1546
+
"pinky",
1547
1547
+
"pinto",
1548
1548
+
"piper",
1549
1549
+
"pique",
1550
1550
+
"pitch",
1551
1551
+
"pithy",
1552
1552
+
"pivot",
1553
1553
+
"pixel",
1554
1554
+
"pixie",
1555
1555
+
"pizza",
1556
1556
+
"place",
1557
1557
+
"plaid",
1558
1558
+
"plain",
1559
1559
+
"plait",
1560
1560
+
"plane",
1561
1561
+
"plank",
1562
1562
+
"plant",
1563
1563
+
"plate",
1564
1564
+
"plaza",
1565
1565
+
"plead",
1566
1566
+
"pleat",
1567
1567
+
"plied",
1568
1568
+
"plier",
1569
1569
+
"pluck",
1570
1570
+
"plumb",
1571
1571
+
"plume",
1572
1572
+
"plump",
1573
1573
+
"plunk",
1574
1574
+
"plush",
1575
1575
+
"poesy",
1576
1576
+
"point",
1577
1577
+
"poise",
1578
1578
+
"poker",
1579
1579
+
"polar",
1580
1580
+
"polka",
1581
1581
+
"polyp",
1582
1582
+
"pooch",
1583
1583
+
"poppy",
1584
1584
+
"porch",
1585
1585
+
"poser",
1586
1586
+
"posit",
1587
1587
+
"posse",
1588
1588
+
"pouch",
1589
1589
+
"pound",
1590
1590
+
"pouty",
1591
1591
+
"power",
1592
1592
+
"prank",
1593
1593
+
"prawn",
1594
1594
+
"preen",
1595
1595
+
"press",
1596
1596
+
"price",
1597
1597
+
"prick",
1598
1598
+
"pride",
1599
1599
+
"pried",
1600
1600
+
"prime",
1601
1601
+
"primo",
1602
1602
+
"print",
1603
1603
+
"prior",
1604
1604
+
"prism",
1605
1605
+
"privy",
1606
1606
+
"prize",
1607
1607
+
"probe",
1608
1608
+
"prone",
1609
1609
+
"prong",
1610
1610
+
"proof",
1611
1611
+
"prose",
1612
1612
+
"proud",
1613
1613
+
"prove",
1614
1614
+
"prowl",
1615
1615
+
"proxy",
1616
1616
+
"prude",
1617
1617
+
"prune",
1618
1618
+
"psalm",
1619
1619
+
"pubic",
1620
1620
+
"pudgy",
1621
1621
+
"puffy",
1622
1622
+
"pulpy",
1623
1623
+
"pulse",
1624
1624
+
"punch",
1625
1625
+
"pupil",
1626
1626
+
"puppy",
1627
1627
+
"puree",
1628
1628
+
"purer",
1629
1629
+
"purge",
1630
1630
+
"purse",
1631
1631
+
"pushy",
1632
1632
+
"putty",
1633
1633
+
"pygmy",
1634
1634
+
"quack",
1635
1635
+
"quail",
1636
1636
+
"quake",
1637
1637
+
"qualm",
1638
1638
+
"quark",
1639
1639
+
"quart",
1640
1640
+
"quash",
1641
1641
+
"quasi",
1642
1642
+
"queen",
1643
1643
+
"queer",
1644
1644
+
"quell",
1645
1645
+
"query",
1646
1646
+
"quest",
1647
1647
+
"queue",
1648
1648
+
"quick",
1649
1649
+
"quiet",
1650
1650
+
"quill",
1651
1651
+
"quilt",
1652
1652
+
"quirk",
1653
1653
+
"quite",
1654
1654
+
"quota",
1655
1655
+
"quote",
1656
1656
+
"quoth",
1657
1657
+
"rabbi",
1658
1658
+
"rabid",
1659
1659
+
"racer",
1660
1660
+
"radar",
1661
1661
+
"radii",
1662
1662
+
"radio",
1663
1663
+
"rainy",
1664
1664
+
"raise",
1665
1665
+
"rajah",
1666
1666
+
"rally",
1667
1667
+
"ralph",
1668
1668
+
"ramen",
1669
1669
+
"ranch",
1670
1670
+
"randy",
1671
1671
+
"range",
1672
1672
+
"rapid",
1673
1673
+
"rarer",
1674
1674
+
"raspy",
1675
1675
+
"ratio",
1676
1676
+
"ratty",
1677
1677
+
"raven",
1678
1678
+
"rayon",
1679
1679
+
"razor",
1680
1680
+
"reach",
1681
1681
+
"react",
1682
1682
+
"ready",
1683
1683
+
"realm",
1684
1684
+
"rearm",
1685
1685
+
"rebar",
1686
1686
+
"rebel",
1687
1687
+
"rebus",
1688
1688
+
"rebut",
1689
1689
+
"recap",
1690
1690
+
"recur",
1691
1691
+
"recut",
1692
1692
+
"reedy",
1693
1693
+
"refer",
1694
1694
+
"refit",
1695
1695
+
"regal",
1696
1696
+
"rehab",
1697
1697
+
"reign",
1698
1698
+
"relax",
1699
1699
+
"relay",
1700
1700
+
"relic",
1701
1701
+
"remit",
1702
1702
+
"renal",
1703
1703
+
"renew",
1704
1704
+
"repay",
1705
1705
+
"repel",
1706
1706
+
"reply",
1707
1707
+
"rerun",
1708
1708
+
"reset",
1709
1709
+
"resin",
1710
1710
+
"retch",
1711
1711
+
"retro",
1712
1712
+
"retry",
1713
1713
+
"reuse",
1714
1714
+
"revel",
1715
1715
+
"revue",
1716
1716
+
"rhino",
1717
1717
+
"rhyme",
1718
1718
+
"rider",
1719
1719
+
"ridge",
1720
1720
+
"rifle",
1721
1721
+
"right",
1722
1722
+
"rigid",
1723
1723
+
"rigor",
1724
1724
+
"rinse",
1725
1725
+
"ripen",
1726
1726
+
"riper",
1727
1727
+
"risen",
1728
1728
+
"riser",
1729
1729
+
"risky",
1730
1730
+
"rival",
1731
1731
+
"river",
1732
1732
+
"rivet",
1733
1733
+
"roach",
1734
1734
+
"roast",
1735
1735
+
"robin",
1736
1736
+
"robot",
1737
1737
+
"rocky",
1738
1738
+
"rodeo",
1739
1739
+
"roger",
1740
1740
+
"rogue",
1741
1741
+
"roomy",
1742
1742
+
"roost",
1743
1743
+
"rotor",
1744
1744
+
"rouge",
1745
1745
+
"rough",
1746
1746
+
"round",
1747
1747
+
"rouse",
1748
1748
+
"route",
1749
1749
+
"rover",
1750
1750
+
"rowdy",
1751
1751
+
"rower",
1752
1752
+
"royal",
1753
1753
+
"ruddy",
1754
1754
+
"ruder",
1755
1755
+
"rugby",
1756
1756
+
"ruler",
1757
1757
+
"rumba",
1758
1758
+
"rumor",
1759
1759
+
"rupee",
1760
1760
+
"rural",
1761
1761
+
"rusty",
1762
1762
+
"sadly",
1763
1763
+
"safer",
1764
1764
+
"saint",
1765
1765
+
"salad",
1766
1766
+
"sally",
1767
1767
+
"salon",
1768
1768
+
"salsa",
1769
1769
+
"salty",
1770
1770
+
"salve",
1771
1771
+
"salvo",
1772
1772
+
"sandy",
1773
1773
+
"saner",
1774
1774
+
"sappy",
1775
1775
+
"sassy",
1776
1776
+
"satin",
1777
1777
+
"satyr",
1778
1778
+
"sauce",
1779
1779
+
"saucy",
1780
1780
+
"sauna",
1781
1781
+
"saute",
1782
1782
+
"savor",
1783
1783
+
"savoy",
1784
1784
+
"savvy",
1785
1785
+
"scald",
1786
1786
+
"scale",
1787
1787
+
"scalp",
1788
1788
+
"scaly",
1789
1789
+
"scamp",
1790
1790
+
"scant",
1791
1791
+
"scare",
1792
1792
+
"scarf",
1793
1793
+
"scary",
1794
1794
+
"scene",
1795
1795
+
"scent",
1796
1796
+
"scion",
1797
1797
+
"scoff",
1798
1798
+
"scold",
1799
1799
+
"scone",
1800
1800
+
"scoop",
1801
1801
+
"scope",
1802
1802
+
"score",
1803
1803
+
"scorn",
1804
1804
+
"scour",
1805
1805
+
"scout",
1806
1806
+
"scowl",
1807
1807
+
"scram",
1808
1808
+
"scrap",
1809
1809
+
"scree",
1810
1810
+
"screw",
1811
1811
+
"scrub",
1812
1812
+
"scrum",
1813
1813
+
"scuba",
1814
1814
+
"sedan",
1815
1815
+
"seedy",
1816
1816
+
"segue",
1817
1817
+
"seize",
1818
1818
+
"semen",
1819
1819
+
"sense",
1820
1820
+
"sepia",
1821
1821
+
"serif",
1822
1822
+
"serum",
1823
1823
+
"serve",
1824
1824
+
"setup",
1825
1825
+
"seven",
1826
1826
+
"sever",
1827
1827
+
"sewer",
1828
1828
+
"shack",
1829
1829
+
"shade",
1830
1830
+
"shady",
1831
1831
+
"shaft",
1832
1832
+
"shake",
1833
1833
+
"shaky",
1834
1834
+
"shale",
1835
1835
+
"shall",
1836
1836
+
"shalt",
1837
1837
+
"shame",
1838
1838
+
"shank",
1839
1839
+
"shape",
1840
1840
+
"shard",
1841
1841
+
"share",
1842
1842
+
"shark",
1843
1843
+
"sharp",
1844
1844
+
"shave",
1845
1845
+
"shawl",
1846
1846
+
"shear",
1847
1847
+
"sheen",
1848
1848
+
"sheep",
1849
1849
+
"sheer",
1850
1850
+
"sheet",
1851
1851
+
"sheik",
1852
1852
+
"shelf",
1853
1853
+
"shell",
1854
1854
+
"shied",
1855
1855
+
"shift",
1856
1856
+
"shine",
1857
1857
+
"shiny",
1858
1858
+
"shire",
1859
1859
+
"shirk",
1860
1860
+
"shirt",
1861
1861
+
"shoal",
1862
1862
+
"shock",
1863
1863
+
"shone",
1864
1864
+
"shook",
1865
1865
+
"shoot",
1866
1866
+
"shore",
1867
1867
+
"shorn",
1868
1868
+
"short",
1869
1869
+
"shout",
1870
1870
+
"shove",
1871
1871
+
"shown",
1872
1872
+
"showy",
1873
1873
+
"shrew",
1874
1874
+
"shrub",
1875
1875
+
"shrug",
1876
1876
+
"shuck",
1877
1877
+
"shunt",
1878
1878
+
"shush",
1879
1879
+
"shyly",
1880
1880
+
"siege",
1881
1881
+
"sieve",
1882
1882
+
"sight",
1883
1883
+
"sigma",
1884
1884
+
"silky",
1885
1885
+
"silly",
1886
1886
+
"since",
1887
1887
+
"sinew",
1888
1888
+
"singe",
1889
1889
+
"siren",
1890
1890
+
"sissy",
1891
1891
+
"sixth",
1892
1892
+
"sixty",
1893
1893
+
"skate",
1894
1894
+
"skier",
1895
1895
+
"skiff",
1896
1896
+
"skill",
1897
1897
+
"skimp",
1898
1898
+
"skirt",
1899
1899
+
"skulk",
1900
1900
+
"skull",
1901
1901
+
"skunk",
1902
1902
+
"slack",
1903
1903
+
"slain",
1904
1904
+
"slang",
1905
1905
+
"slant",
1906
1906
+
"slash",
1907
1907
+
"slate",
1908
1908
+
"sleek",
1909
1909
+
"sleep",
1910
1910
+
"sleet",
1911
1911
+
"slept",
1912
1912
+
"slice",
1913
1913
+
"slick",
1914
1914
+
"slide",
1915
1915
+
"slime",
1916
1916
+
"slimy",
1917
1917
+
"sling",
1918
1918
+
"slink",
1919
1919
+
"sloop",
1920
1920
+
"slope",
1921
1921
+
"slosh",
1922
1922
+
"sloth",
1923
1923
+
"slump",
1924
1924
+
"slung",
1925
1925
+
"slunk",
1926
1926
+
"slurp",
1927
1927
+
"slush",
1928
1928
+
"slyly",
1929
1929
+
"smack",
1930
1930
+
"small",
1931
1931
+
"smart",
1932
1932
+
"smash",
1933
1933
+
"smear",
1934
1934
+
"smell",
1935
1935
+
"smelt",
1936
1936
+
"smile",
1937
1937
+
"smirk",
1938
1938
+
"smite",
1939
1939
+
"smith",
1940
1940
+
"smock",
1941
1941
+
"smoke",
1942
1942
+
"smoky",
1943
1943
+
"smote",
1944
1944
+
"snack",
1945
1945
+
"snail",
1946
1946
+
"snake",
1947
1947
+
"snaky",
1948
1948
+
"snare",
1949
1949
+
"snarl",
1950
1950
+
"sneak",
1951
1951
+
"sneer",
1952
1952
+
"snide",
1953
1953
+
"sniff",
1954
1954
+
"snipe",
1955
1955
+
"snoop",
1956
1956
+
"snore",
1957
1957
+
"snort",
1958
1958
+
"snout",
1959
1959
+
"snowy",
1960
1960
+
"snuck",
1961
1961
+
"snuff",
1962
1962
+
"soapy",
1963
1963
+
"sober",
1964
1964
+
"soggy",
1965
1965
+
"solar",
1966
1966
+
"solid",
1967
1967
+
"solve",
1968
1968
+
"sonar",
1969
1969
+
"sonic",
1970
1970
+
"sooth",
1971
1971
+
"sooty",
1972
1972
+
"sorry",
1973
1973
+
"sound",
1974
1974
+
"south",
1975
1975
+
"sower",
1976
1976
+
"space",
1977
1977
+
"spade",
1978
1978
+
"spank",
1979
1979
+
"spare",
1980
1980
+
"spark",
1981
1981
+
"spasm",
1982
1982
+
"spawn",
1983
1983
+
"speak",
1984
1984
+
"spear",
1985
1985
+
"speck",
1986
1986
+
"speed",
1987
1987
+
"spell",
1988
1988
+
"spelt",
1989
1989
+
"spend",
1990
1990
+
"spent",
1991
1991
+
"sperm",
1992
1992
+
"spice",
1993
1993
+
"spicy",
1994
1994
+
"spied",
1995
1995
+
"spiel",
1996
1996
+
"spike",
1997
1997
+
"spiky",
1998
1998
+
"spill",
1999
1999
+
"spilt",
2000
2000
+
"spine",
2001
2001
+
"spiny",
2002
2002
+
"spire",
2003
2003
+
"spite",
2004
2004
+
"splat",
2005
2005
+
"split",
2006
2006
+
"spoil",
2007
2007
+
"spoke",
2008
2008
+
"spoof",
2009
2009
+
"spook",
2010
2010
+
"spool",
2011
2011
+
"spoon",
2012
2012
+
"spore",
2013
2013
+
"sport",
2014
2014
+
"spout",
2015
2015
+
"spray",
2016
2016
+
"spree",
2017
2017
+
"sprig",
2018
2018
+
"spunk",
2019
2019
+
"spurn",
2020
2020
+
"spurt",
2021
2021
+
"squad",
2022
2022
+
"squat",
2023
2023
+
"squib",
2024
2024
+
"stack",
2025
2025
+
"staff",
2026
2026
+
"stage",
2027
2027
+
"staid",
2028
2028
+
"stain",
2029
2029
+
"stair",
2030
2030
+
"stake",
2031
2031
+
"stale",
2032
2032
+
"stalk",
2033
2033
+
"stall",
2034
2034
+
"stamp",
2035
2035
+
"stand",
2036
2036
+
"stank",
2037
2037
+
"stare",
2038
2038
+
"stark",
2039
2039
+
"start",
2040
2040
+
"stash",
2041
2041
+
"state",
2042
2042
+
"stave",
2043
2043
+
"stead",
2044
2044
+
"steak",
2045
2045
+
"steal",
2046
2046
+
"steam",
2047
2047
+
"steed",
2048
2048
+
"steel",
2049
2049
+
"steep",
2050
2050
+
"steer",
2051
2051
+
"stein",
2052
2052
+
"stern",
2053
2053
+
"stick",
2054
2054
+
"stiff",
2055
2055
+
"still",
2056
2056
+
"stilt",
2057
2057
+
"sting",
2058
2058
+
"stink",
2059
2059
+
"stint",
2060
2060
+
"stock",
2061
2061
+
"stoic",
2062
2062
+
"stoke",
2063
2063
+
"stole",
2064
2064
+
"stomp",
2065
2065
+
"stone",
2066
2066
+
"stony",
2067
2067
+
"stood",
2068
2068
+
"stool",
2069
2069
+
"stoop",
2070
2070
+
"store",
2071
2071
+
"stork",
2072
2072
+
"storm",
2073
2073
+
"story",
2074
2074
+
"stout",
2075
2075
+
"stove",
2076
2076
+
"strap",
2077
2077
+
"straw",
2078
2078
+
"stray",
2079
2079
+
"strip",
2080
2080
+
"strut",
2081
2081
+
"stuck",
2082
2082
+
"study",
2083
2083
+
"stuff",
2084
2084
+
"stump",
2085
2085
+
"stung",
2086
2086
+
"stunk",
2087
2087
+
"stunt",
2088
2088
+
"style",
2089
2089
+
"suave",
2090
2090
+
"sugar",
2091
2091
+
"suing",
2092
2092
+
"suite",
2093
2093
+
"sulky",
2094
2094
+
"sully",
2095
2095
+
"sumac",
2096
2096
+
"sunny",
2097
2097
+
"super",
2098
2098
+
"surer",
2099
2099
+
"surge",
2100
2100
+
"surly",
2101
2101
+
"sushi",
2102
2102
+
"swami",
2103
2103
+
"swamp",
2104
2104
+
"swarm",
2105
2105
+
"swash",
2106
2106
+
"swath",
2107
2107
+
"swear",
2108
2108
+
"sweat",
2109
2109
+
"sweep",
2110
2110
+
"sweet",
2111
2111
+
"swell",
2112
2112
+
"swept",
2113
2113
+
"swift",
2114
2114
+
"swill",
2115
2115
+
"swine",
2116
2116
+
"swing",
2117
2117
+
"swirl",
2118
2118
+
"swish",
2119
2119
+
"swoon",
2120
2120
+
"swoop",
2121
2121
+
"sword",
2122
2122
+
"swore",
2123
2123
+
"sworn",
2124
2124
+
"swung",
2125
2125
+
"synod",
2126
2126
+
"syrup",
2127
2127
+
"tabby",
2128
2128
+
"table",
2129
2129
+
"taboo",
2130
2130
+
"tacit",
2131
2131
+
"tacky",
2132
2132
+
"taffy",
2133
2133
+
"taint",
2134
2134
+
"taken",
2135
2135
+
"taker",
2136
2136
+
"tally",
2137
2137
+
"talon",
2138
2138
+
"tamer",
2139
2139
+
"tango",
2140
2140
+
"tangy",
2141
2141
+
"taper",
2142
2142
+
"tapir",
2143
2143
+
"tardy",
2144
2144
+
"tarot",
2145
2145
+
"taste",
2146
2146
+
"tasty",
2147
2147
+
"tatty",
2148
2148
+
"taunt",
2149
2149
+
"tawny",
2150
2150
+
"teach",
2151
2151
+
"teary",
2152
2152
+
"tease",
2153
2153
+
"teddy",
2154
2154
+
"teeth",
2155
2155
+
"tempo",
2156
2156
+
"tenet",
2157
2157
+
"tenor",
2158
2158
+
"tense",
2159
2159
+
"tenth",
2160
2160
+
"tepee",
2161
2161
+
"tepid",
2162
2162
+
"terra",
2163
2163
+
"terse",
2164
2164
+
"testy",
2165
2165
+
"thank",
2166
2166
+
"theft",
2167
2167
+
"their",
2168
2168
+
"theme",
2169
2169
+
"there",
2170
2170
+
"these",
2171
2171
+
"theta",
2172
2172
+
"thick",
2173
2173
+
"thief",
2174
2174
+
"thigh",
2175
2175
+
"thing",
2176
2176
+
"think",
2177
2177
+
"third",
2178
2178
+
"thong",
2179
2179
+
"thorn",
2180
2180
+
"those",
2181
2181
+
"three",
2182
2182
+
"threw",
2183
2183
+
"throb",
2184
2184
+
"throw",
2185
2185
+
"thrum",
2186
2186
+
"thumb",
2187
2187
+
"thump",
2188
2188
+
"thyme",
2189
2189
+
"tiara",
2190
2190
+
"tibia",
2191
2191
+
"tidal",
2192
2192
+
"tiger",
2193
2193
+
"tight",
2194
2194
+
"tilde",
2195
2195
+
"timer",
2196
2196
+
"timid",
2197
2197
+
"tipsy",
2198
2198
+
"titan",
2199
2199
+
"tithe",
2200
2200
+
"title",
2201
2201
+
"toast",
2202
2202
+
"today",
2203
2203
+
"toddy",
2204
2204
+
"token",
2205
2205
+
"tonal",
2206
2206
+
"tonga",
2207
2207
+
"tonic",
2208
2208
+
"tooth",
2209
2209
+
"topaz",
2210
2210
+
"topic",
2211
2211
+
"torch",
2212
2212
+
"torso",
2213
2213
+
"torus",
2214
2214
+
"total",
2215
2215
+
"totem",
2216
2216
+
"touch",
2217
2217
+
"tough",
2218
2218
+
"towel",
2219
2219
+
"tower",
2220
2220
+
"toxic",
2221
2221
+
"toxin",
2222
2222
+
"trace",
2223
2223
+
"track",
2224
2224
+
"tract",
2225
2225
+
"trade",
2226
2226
+
"trail",
2227
2227
+
"train",
2228
2228
+
"trait",
2229
2229
+
"tramp",
2230
2230
+
"trash",
2231
2231
+
"trawl",
2232
2232
+
"tread",
2233
2233
+
"treat",
2234
2234
+
"trend",
2235
2235
+
"triad",
2236
2236
+
"trial",
2237
2237
+
"tribe",
2238
2238
+
"trice",
2239
2239
+
"trick",
2240
2240
+
"tried",
2241
2241
+
"tripe",
2242
2242
+
"trite",
2243
2243
+
"troll",
2244
2244
+
"troop",
2245
2245
+
"trope",
2246
2246
+
"trout",
2247
2247
+
"trove",
2248
2248
+
"truce",
2249
2249
+
"truck",
2250
2250
+
"truer",
2251
2251
+
"truly",
2252
2252
+
"trump",
2253
2253
+
"trunk",
2254
2254
+
"truss",
2255
2255
+
"trust",
2256
2256
+
"truth",
2257
2257
+
"tryst",
2258
2258
+
"tubal",
2259
2259
+
"tuber",
2260
2260
+
"tulip",
2261
2261
+
"tulle",
2262
2262
+
"tumor",
2263
2263
+
"tunic",
2264
2264
+
"turbo",
2265
2265
+
"tutor",
2266
2266
+
"twang",
2267
2267
+
"tweak",
2268
2268
+
"tweed",
2269
2269
+
"tweet",
2270
2270
+
"twice",
2271
2271
+
"twine",
2272
2272
+
"twirl",
2273
2273
+
"twist",
2274
2274
+
"twixt",
2275
2275
+
"tying",
2276
2276
+
"udder",
2277
2277
+
"ulcer",
2278
2278
+
"ultra",
2279
2279
+
"umbra",
2280
2280
+
"uncle",
2281
2281
+
"uncut",
2282
2282
+
"under",
2283
2283
+
"undid",
2284
2284
+
"undue",
2285
2285
+
"unfed",
2286
2286
+
"unfit",
2287
2287
+
"unify",
2288
2288
+
"union",
2289
2289
+
"unite",
2290
2290
+
"unity",
2291
2291
+
"unlit",
2292
2292
+
"unmet",
2293
2293
+
"unset",
2294
2294
+
"untie",
2295
2295
+
"until",
2296
2296
+
"unwed",
2297
2297
+
"unzip",
2298
2298
+
"upper",
2299
2299
+
"upset",
2300
2300
+
"urban",
2301
2301
+
"urine",
2302
2302
+
"usage",
2303
2303
+
"usher",
2304
2304
+
"using",
2305
2305
+
"usual",
2306
2306
+
"usurp",
2307
2307
+
"utile",
2308
2308
+
"utter",
2309
2309
+
"vague",
2310
2310
+
"valet",
2311
2311
+
"valid",
2312
2312
+
"valor",
2313
2313
+
"value",
2314
2314
+
"valve",
2315
2315
+
"vapid",
2316
2316
+
"vapor",
2317
2317
+
"vault",
2318
2318
+
"vaunt",
2319
2319
+
"vegan",
2320
2320
+
"venom",
2321
2321
+
"venue",
2322
2322
+
"verge",
2323
2323
+
"verse",
2324
2324
+
"verso",
2325
2325
+
"verve",
2326
2326
+
"vicar",
2327
2327
+
"video",
2328
2328
+
"vigil",
2329
2329
+
"vigor",
2330
2330
+
"villa",
2331
2331
+
"vinyl",
2332
2332
+
"viola",
2333
2333
+
"viper",
2334
2334
+
"viral",
2335
2335
+
"virus",
2336
2336
+
"visit",
2337
2337
+
"visor",
2338
2338
+
"vista",
2339
2339
+
"vital",
2340
2340
+
"vivid",
2341
2341
+
"vixen",
2342
2342
+
"vocal",
2343
2343
+
"vodka",
2344
2344
+
"vogue",
2345
2345
+
"voice",
2346
2346
+
"voila",
2347
2347
+
"vomit",
2348
2348
+
"voter",
2349
2349
+
"vouch",
2350
2350
+
"vowel",
2351
2351
+
"vying",
2352
2352
+
"wacky",
2353
2353
+
"wafer",
2354
2354
+
"wager",
2355
2355
+
"wagon",
2356
2356
+
"waist",
2357
2357
+
"waive",
2358
2358
+
"waltz",
2359
2359
+
"warty",
2360
2360
+
"waste",
2361
2361
+
"watch",
2362
2362
+
"water",
2363
2363
+
"waver",
2364
2364
+
"waxen",
2365
2365
+
"weary",
2366
2366
+
"weave",
2367
2367
+
"wedge",
2368
2368
+
"weedy",
2369
2369
+
"weigh",
2370
2370
+
"weird",
2371
2371
+
"welch",
2372
2372
+
"welsh",
2373
2373
+
"whack",
2374
2374
+
"whale",
2375
2375
+
"wharf",
2376
2376
+
"wheat",
2377
2377
+
"wheel",
2378
2378
+
"whelp",
2379
2379
+
"where",
2380
2380
+
"which",
2381
2381
+
"whiff",
2382
2382
+
"while",
2383
2383
+
"whine",
2384
2384
+
"whiny",
2385
2385
+
"whirl",
2386
2386
+
"whisk",
2387
2387
+
"white",
2388
2388
+
"whole",
2389
2389
+
"whoop",
2390
2390
+
"whose",
2391
2391
+
"widen",
2392
2392
+
"wider",
2393
2393
+
"widow",
2394
2394
+
"width",
2395
2395
+
"wield",
2396
2396
+
"wight",
2397
2397
+
"willy",
2398
2398
+
"wimpy",
2399
2399
+
"wince",
2400
2400
+
"winch",
2401
2401
+
"windy",
2402
2402
+
"wiser",
2403
2403
+
"wispy",
2404
2404
+
"witch",
2405
2405
+
"witty",
2406
2406
+
"woken",
2407
2407
+
"woman",
2408
2408
+
"women",
2409
2409
+
"woody",
2410
2410
+
"wooer",
2411
2411
+
"wooly",
2412
2412
+
"woozy",
2413
2413
+
"wordy",
2414
2414
+
"world",
2415
2415
+
"worry",
2416
2416
+
"worse",
2417
2417
+
"worst",
2418
2418
+
"worth",
2419
2419
+
"would",
2420
2420
+
"wound",
2421
2421
+
"woven",
2422
2422
+
"wrack",
2423
2423
+
"wrath",
2424
2424
+
"wreak",
2425
2425
+
"wreck",
2426
2426
+
"wrest",
2427
2427
+
"wring",
2428
2428
+
"wrist",
2429
2429
+
"write",
2430
2430
+
"wrong",
2431
2431
+
"wrote",
2432
2432
+
"wrung",
2433
2433
+
"wryly",
2434
2434
+
"yacht",
2435
2435
+
"yearn",
2436
2436
+
"yeast",
2437
2437
+
"yield",
2438
2438
+
"young",
2439
2439
+
"youth",
2440
2440
+
"zebra",
2441
2441
+
"zesty",
2442
2442
+
"zonal",
2443
2443
+
]
2444
2444
+
return words
2445
2445
+
2446
2446
+
2447
2447
+
def main():
2448
2448
+
runApp()
2449
2449
+
2450
2450
+
2451
2451
+
main()