previndexinfonext

code guessing, round #9 (completed)

started at ; stage 2 at ; ended at

specification

code guessing, code guessing, come get your code guessing! today we're doing something a little different.

the challenge for round 9 of code guessing is to create a game.
submissions may be written in javascript, bash, c or brainfuck.

there isn't much of a spec this time, as you have a lot of flexibility in how you do this. it could just be a text adventure played on the command line, it could be a card game, or it could be something graphical based on OpenGL or HTML.
the only requirements are that it:

  1. fits a reasonable person's understanding of what constitutes a computer game,
  2. is portable, defined as: theoretically capable of running properly on at least two operating systems which actually exist, assuming a reasonable set of dependencies are installed, and
  3. doesn't simply launch an existing game which is assumed to exist on a user's system (so nethack would not be a valid bash solution).

have fun! P.S. note from the event manager: please make your games fun, because I have to play all of them.

results

  1. 👑 quintopia +6 -3 = 3
    1. LyricLy
    2. sporeball (was Olivia)
    3. Kit
    4. Camto
    5. Olivia (was sporeball)
    6. razetime
    7. IFcoltransG
    8. Yuwuko
  2. sporeball +2 -0 = 2
    1. quintopia (was LyricLy)
    2. Camto (was Olivia)
    3. Kit (was quintopia)
    4. IFcoltransG (was Kit)
    5. LyricLy (was Camto)
    6. razetime
    7. Olivia (was IFcoltransG)
    8. Yuwuko
  3. Camto +2 -1 = 1
    1. razetime (was LyricLy)
    2. quintopia (was Olivia)
    3. sporeball (was quintopia)
    4. Kit
    5. LyricLy (was sporeball)
    6. IFcoltransG (was razetime)
    7. Olivia (was IFcoltransG)
    8. Yuwuko
  4. LyricLy +3 -3 = 0
    1. sporeball (was Olivia)
    2. quintopia
    3. Kit
    4. Yuwuko (was Camto)
    5. Olivia (was sporeball)
    6. Camto (was razetime)
    7. IFcoltransG
    8. razetime (was Yuwuko)
  5. Olivia +1 -1 = 0
    1. sporeball (was LyricLy)
    2. Camto (was quintopia)
    3. razetime (was Kit)
    4. Kit (was Camto)
    5. LyricLy (was sporeball)
    6. Yuwuko (was razetime)
    7. IFcoltransG
    8. quintopia (was Yuwuko)
  6. razetime +2 -3 = -1
    1. LyricLy
    2. sporeball (was Olivia)
    3. quintopia
    4. IFcoltransG (was Kit)
    5. Kit (was Camto)
    6. Yuwuko (was sporeball)
    7. Olivia (was IFcoltransG)
    8. Camto (was Yuwuko)
  7. Yuwuko +2 -3 = -1
    1. LyricLy
    2. Olivia
    3. Kit (was quintopia)
    4. razetime (was Kit)
    5. IFcoltransG (was Camto)
    6. quintopia (was sporeball)
    7. Camto (was razetime)
    8. sporeball (was IFcoltransG)
  8. IFcoltransG +1 -3 = -2
    1. sporeball (was LyricLy)
    2. razetime (was Olivia)
    3. quintopia
    4. Camto (was Kit)
    5. Yuwuko (was Camto)
    6. Kit (was sporeball)
    7. LyricLy (was razetime)
    8. Olivia (was Yuwuko)
  9. Kit +1 -3 = -2
    1. IFcoltransG (was LyricLy)
    2. sporeball (was Olivia)
    3. Camto (was quintopia)
    4. Yuwuko (was Camto)
    5. LyricLy (was sporeball)
    6. razetime
    7. Olivia (was IFcoltransG)
    8. quintopia (was Yuwuko)

entries

you can download all the entries

entry #1

written by LyricLy

guesses
comments 0

post a comment


pacman.c ASCII text
  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
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
// a pac-man game in curses that tries to be somewhat faithful to the original
// starts at level 21 for no reason and also you can go inside the ghost house!
// please enjoy
// build with -lncurses -lm
// requires ncurses
// please enjoy
// you may want to decrease your initial key repeat delay using xkbset or control panel to make input work gooder

#include <ncurses.h>
#include <locale.h>
#include <stdbool.h>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
#include <math.h>

typedef struct {
    int dx;
    int dy;
} Dir;

static const Dir LEFT = {.dx = -1, .dy = 0 };
static const Dir UP = { .dx = 0, .dy = -1 };
static const Dir RIGHT = { .dx = 1, .dy = 0 };
static const Dir DOWN = { .dx = 0, .dy = 1 };

#define board_width 28
#define board_height 31
static const char board_init[] =
"\
############################\
#............##............#\
#.####.#####.##.#####.####.#\
#O#  #.#   #.##.#   #.#  #O#\
#.####.#####.##.#####.####.#\
#..........................#\
#.####.##.########.##.####.#\
#.####.##.########.##.####.#\
#......##....##....##......#\
######.##### ## #####.######\
     #.##### ## #####.#     \
     #.##   '  '   ##.#     \
     #.## ###--### ##.#     \
######.## #      # ##.######\
TTTTTT.   #  B   #   .TTTTTT\
######.## #      # ##.######\
     #.## ######## ##.#     \
     #.##          ##.#     \
     #.## ######## ##.#     \
######.## ######## ##.######\
#............##............#\
#.####.#####.##.#####.####.#\
#.####.#####.##.#####.####.#\
#O..##......:> :......##..O#\
###.##.##.########.##.##.###\
###.##.##.########.##.##.###\
#......##....##....##......#\
#.##########.##.##########.#\
#.##########.##.##########.#\
#..........................#\
############################";

typedef struct {
    int x;
    int y;
    Dir dir;
    double subpoint;
} Entity;

typedef enum {
    Scatter,
    Chase,
    Frightened,
} AIState;

typedef struct {
    Entity e;
    AIState state;
} Ghost;

typedef struct {
    unsigned long score;
    unsigned short lvl, lives;
    unsigned short remaining;
    char board[board_height][board_width];
    bool xlife;
    Entity pacman;
    Ghost blinky, pinky, inky, clyde;
    AIState default_state;
    int fruit_x, fruit_y, ghost_x, ghost_y;
    unsigned long fruit_timer, scatter_timer, frightened_timer;
    int elroy;
    int inp_buffer, buffered_inp;
} Game;

void advance(Game *game, Entity *e, double speed) {
    int nx = e->x + e->dir.dx;
    if (nx == -1) nx = board_width-1;
    if (nx == board_width) nx = 0;
    int ny = e->y + e->dir.dy;
    e->subpoint += speed/6.0;
    if (game->board[ny][nx] == '#' && e->subpoint > 0.5) {
        e->subpoint = 0.5;
        return;
    }
    if (e->subpoint >= 1.0) {
        e->subpoint -= 1.0;
        e->x = nx;
        e->y = ny;
    }
}

bool turn(Game *game, Entity *e, Dir dir) {
    if (game->board[e->y+dir.dy][e->x+dir.dx] == '#') {
        // can't turn
        return false;
    } else if (dir.dx != e->dir.dx && dir.dy != e->dir.dy) {
        // turn
        e->subpoint = 0.5 - 0.414214*fabs(0.5-e->subpoint);
    } else if (dir.dx != e->dir.dx || dir.dy != e->dir.dy) {
        // reverse
        e->subpoint = 1-e->subpoint;
    }
    e->dir = dir;
    return true;
}

void change_state(Ghost *g, AIState state) {
    g->e.dir.dx *= -1;
    g->e.dir.dy *= -1;
    g->state = state;
}

void change_all_states(Game *game, AIState state) {
    change_state(&game->blinky, state);
    change_state(&game->pinky, state);
    change_state(&game->inky, state);
    change_state(&game->clyde, state);
}

int ghost_colour(Ghost *g, int pair) {
    if (g->state == Frightened) {
        return COLOR_PAIR(6);
    }
    return COLOR_PAIR(pair);
}

void spawn_ghosts(Game *game) {
    game->blinky.e.x = game->ghost_x;
    game->blinky.e.y = game->ghost_y;
    game->blinky.e.dir = LEFT;
    game->pinky.e.x = game->ghost_x;
    game->pinky.e.y = game->ghost_y;
    game->pinky.e.dir = LEFT;
    game->inky.e.x = game->ghost_x;
    game->inky.e.y = game->ghost_y;
    game->inky.e.dir = RIGHT;
    game->clyde.e.x = game->ghost_x;
    game->clyde.e.y = game->ghost_y-3;
    game->clyde.e.dir = RIGHT;
}

void init_game_board(Game *game) {
    for (int y = 0; y < board_height; y++) {
        for (int x = 0; x < board_width; x++) {
            char c = board_init[y*board_width+x];
            switch (c) {
                case '>':
                    game->pacman.x = x;
                    game->pacman.y = y;
                    game->pacman.dir = LEFT;
                    game->fruit_x = x;
                    game->fruit_y = y;
                    c = ' ';
                    break;
                case 'B':
                    game->ghost_x = x;
                    game->ghost_y = y;
                    spawn_ghosts(game);
                    c = ' ';
                    break;
                case '.': case 'O': case ':':
                    game->remaining++;
                    break;
            }
            game->board[y][x] = c;
        }
    }
}

Game init_game() {
    Game game = {0};
    game.lvl = 21;
    game.lives = 2;
    init_game_board(&game);
    return game;
}

void print_board(Game *game) {
    mvprintw(0, 0, "%lu\n", game->score);

    for (int y = 0; y < board_height; y++) {
        for (int x = 0; x < board_width; x++) {
            int c = game->board[y][x];
            if (c == ':') c = '.';
            if (game->pacman.x == x && game->pacman.y == y) {
                #define if_dir(d) (game->pacman.dir.dx == d.dx && game->pacman.dir.dy == d.dy) ?
                if (game->pacman.subpoint > 0.25 && game->pacman.subpoint < 0.75) {
                    c = (if_dir(LEFT) '>' : if_dir(UP) 'v' : if_dir(RIGHT) '<' : if_dir(DOWN) '^' : 0) | A_BOLD | COLOR_PAIR(1);
                } else {
                    c = (if_dir(LEFT) '-' : if_dir(UP) 'v' : if_dir(RIGHT) '-' : if_dir(DOWN) '^' : 0) | A_BOLD | COLOR_PAIR(1);
                }
            } else if (game->blinky.e.x == x && game->blinky.e.y == y) {
                c = 'B' | A_BOLD | ghost_colour(&game->blinky, 2);
            } else if (game->pinky.e.x == x && game->pinky.e.y == y) {
                c = 'P' | A_BOLD | ghost_colour(&game->pinky, 3);
            } else if (game->inky.e.x == x && game->inky.e.y == y) {
                c = 'I' | A_BOLD | ghost_colour(&game->inky, 4);
            } else if (game->clyde.e.x == x && game->clyde.e.y == y) {
                c = 'C' | A_BOLD | ghost_colour(&game->clyde, 5);
            } else if (c == '#') {
                c |= A_DIM | COLOR_PAIR(6);
            } else if (c == '.' || c == 'O') {
                c |= A_DIM | COLOR_PAIR(7);
            } else if (c == 'T' || c == '\'') {
                c = ' ';
            } else if (c == 'K') {
                c |= A_BOLD | COLOR_PAIR(8);
            }

            addch(c);
            addch(' ');
        }
        addch('\n');
    }

    printw("lvl: %hu, lives: %hu\n", game->lvl, game->lives);

    refresh();
}

void process_input(Game *game) {
    int inp = getch();

    bool manual = true;
    if (inp == ERR && game->inp_buffer) {
        game->inp_buffer--;
        inp = game->buffered_inp;
        manual = false;
    }

    bool satisfied = false;
    switch (inp) {
        case KEY_LEFT:
            satisfied = turn(game, &game->pacman, LEFT);
            break;
        case KEY_UP:
            satisfied = turn(game, &game->pacman, UP);
            break;
        case KEY_RIGHT:
            satisfied = turn(game, &game->pacman, RIGHT);
            break;
        case KEY_DOWN:
            satisfied = turn(game, &game->pacman, DOWN);
            break;
    }

    if (satisfied) {
        game->inp_buffer = 0;
    } else if (manual) {
        game->inp_buffer = 16;
        game->buffered_inp = inp;
    }
}

typedef enum {
    Oikake,
    Machibuse,
    Kimagure,
    Otoboke,
} AIType;

void do_ghost(Game *game, Ghost *g, AIType ai) {
    int tx, ty;

    if (g->state == Chase || (ai == Oikake && game->elroy)) {
        switch (ai) {
            case Oikake:
                tx = game->pacman.x;
                ty = game->pacman.y;
                break;
            case Machibuse:
                tx = game->pacman.x + game->pacman.dir.dx*4;
                ty = game->pacman.y + game->pacman.dir.dy*4;
                // uncomment for the overflow bug from the original game
                //short dirs = *(short*)&game->pacman.dir * 4;
                //Dir dir = *(Dir*)&dirs;
                //tx = game->pacman.x + dir.dx;
                //ty = game->pacman.y + dir.dy;
                break;
            case Kimagure:
                tx = game->blinky.e.x + (game->pacman.x + game->pacman.dir.dx*2 - game->blinky.e.x)*2;
                ty = game->blinky.e.y + (game->pacman.y + game->pacman.dir.dy*2 - game->blinky.e.y)*2;
                //short dirs = *(short*)&game->pacman.dir * 2;
                //Dir dir = *(Dir*)&dirs;
                //tx = game->blinky.e.x + (game->pacman.x + dir.dx - game->blinky.e.x)*2;
                //ty = game->blinky.e.y + (game->pacman.y + dir.dy - game->blinky.e.y)*2;
                break;
            case Otoboke:
                int dx = game->pacman.x-g->e.x;
                int dy = game->pacman.y-g->e.y;
                if (dx*dx+dy*dy <= 8*8) {
                    tx = 0;
                    ty = 31;
                } else {
                    tx = game->pacman.x;
                    ty = game->pacman.y;
                }
                break;
        }
    } else if (g->state == Scatter) {
        switch (ai) {
            case Oikake:
                tx = board_width-3;
                ty = -2;
                break;
            case Machibuse:
                tx = 2;
                ty = -2;
                break;
            case Kimagure:
                tx = board_width-1;
                ty = board_height;
                break;
            case Otoboke:
                tx = 0;
                ty = board_height;
                break;
        }
    }

    double last = g->e.subpoint;
    double elroy_bonus = ai == Oikake ? 0.05*game->elroy : 0;
    advance(game, &g->e, elroy_bonus + (game->frightened_timer ? 0.60 : game->board[g->e.y][g->e.x] == 'T' ? 0.50 : 0.95));

    if ((g->e.subpoint >= 0.5 && last < 0.5) || g->e.subpoint == last) {
        Dir dir;
        int d = -1;

        Dir dirs[4] = {UP, LEFT, DOWN, RIGHT};
        if (g->state == Frightened) {
            d = 0;
            int r = rand()%4, s = r;
            while (true) {
                if (--r == -1) r = 3;
                if (r == s) break;
                dir = dirs[r];
                if (dir.dx == -g->e.dir.dx && dir.dy == -g->e.dir.dy) continue;
                if (game->board[g->e.y+dir.dy][g->e.x+dir.dx] == '#') continue;
                break;
            }
        } else {
            for (int i = 0; i < 4; i++) {
                Dir ndir = dirs[i];
                int nx = g->e.x + ndir.dx;
                int ny = g->e.y + ndir.dy;

                if (ndir.dx == -g->e.dir.dx && ndir.dy == -g->e.dir.dy) continue;
                if (game->board[ny][nx] == '#' || (i == 2 && game->board[ny][nx] == '-')) continue;
                if (i == 0 && (game->board[g->e.y][g->e.x] == '\'' || game->board[g->e.y][g->e.x] == ':')) continue;

                int nd = (nx-tx)*(nx-tx)+(ny-ty)*(ny-ty);
                if (d == -1 || nd<d) {
                    dir = ndir;
                    d = nd;
                }
            }
        }

        if (d != -1) {
            g->e.dir = dir;
        }
    }

    if (g->e.x == game->pacman.x && g->e.y == game->pacman.y) {
        if (!game->lives) {
            endwin();
            printf("game over\n\n%lu points\n", game->score);
            exit(0);
        }
        game->lives--;
        game->pacman.x = game->fruit_x;
        game->pacman.y = game->fruit_y;
        change_all_states(game, Scatter);
        game->default_state = Scatter;
        game->scatter_timer = 0;
        spawn_ghosts(game);
    }
}

void do_tick(Game *game) {
    process_input(game);

    char *h = &game->board[game->pacman.y][game->pacman.x];
    if (*h == 'K') {
        *h = ' ';
        game->score += 5000;
    } else if (*h == '.' || *h == ':' || *h == 'O') {
        game->remaining--;
        if (game->remaining == 120 || game->remaining == 60) {
            game->elroy++;
        }
        if (game->remaining == 174 || game->remaining == 74) {
            game->board[game->fruit_y][game->fruit_x] = 'K';
            game->fruit_timer = 9*60 + rand()%60;
        }
        if (!game->remaining) {
            change_all_states(game, Scatter);
            game->default_state = Scatter;
            game->scatter_timer = 0;
            game->fruit_timer = 0;
            game->lvl++;
            init_game_board(game);
        }
    }
    if (*h == '.' || *h == ':') {
        game->score += 10;
    } else if (*h == 'O') {
        *h = ' ';
        game->score += 50;
        change_all_states(game, Frightened);
        game->frightened_timer = 1;
    } else {
        advance(game, &game->pacman, 0.9);
    }
    if (*h == '.') {
        *h = ' ';
    } else if (*h == ':') {
        *h = '\'';
    }

    if (!game->xlife && game->score >= 10000) {
        game->xlife = true;
        game->lives++;
    }

    if (game->fruit_timer) {
        game->fruit_timer--;
        if (!game->fruit_timer) {
            game->board[game->fruit_y][game->fruit_x] = ' ';
        }
    }

    if (game->frightened_timer) {
        game->frightened_timer--;
        if (!game->frightened_timer) {
            game->blinky.state = game->default_state;
            game->pinky.state = game->default_state;
            game->inky.state = game->default_state;
            game->clyde.state = game->default_state;
        }
    } else {
        game->scatter_timer++;
        if (game->scatter_timer == 5*60 || game->scatter_timer == 30*60 || game->scatter_timer == 55*60 || game->scatter_timer == 1092*60+1) {
            game->default_state = Chase;
            change_all_states(game, Chase);
        } else if (game->scatter_timer == 25*60 || game->scatter_timer == 50*60 || game->scatter_timer == 1092*60) {
            game->default_state = Scatter;
            change_all_states(game, Scatter);
        }
    }

    do_ghost(game, &game->blinky, Oikake);
    do_ghost(game, &game->pinky, Machibuse);
    do_ghost(game, &game->inky, Kimagure);
    do_ghost(game, &game->clyde, Otoboke);
}

int main() {
    setlocale(LC_ALL, "");
    initscr();
    start_color();
    cbreak();
    keypad(stdscr, TRUE);
    noecho();
    timeout(0);
    curs_set(0);

    init_pair(1, COLOR_YELLOW, COLOR_BLACK);
    init_pair(2, COLOR_RED, COLOR_BLACK);
    init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
    init_pair(4, COLOR_BLUE, COLOR_BLACK);
    init_pair(5, 172, COLOR_BLACK);
    init_pair(6, 19, COLOR_BLACK);
    init_pair(7, 223, COLOR_BLACK);
    init_pair(8, COLOR_CYAN, COLOR_BLACK);

    Game game = init_game();

    clock_t last_frame = clock();
    double ft = CLOCKS_PER_SEC / 60;
    while (true) {
        do_tick(&game);
        print_board(&game);
        clock_t target = last_frame + ft;
        while (clock() < target);
        last_frame = target;
    }
}

entry #2

written by Olivia

guesses
comments 0

post a comment


minesweeper2.js ASCII text
  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
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
// Minesweeper 2.0
var readline = require("readline")
var crypto = require("crypto")
var readline = require("readline")
readline.emitKeypressEvents(process.stdin);
var stdin = process.stdin
var stdout = process.stdout
stdin.setRawMode(true);
var width = 35
var height = 15
var minesCount = 75
var started = false
var lost = false
var won = false
var cheated = false
var zoom = false
var currentSpeed = 1
var zoomSpeed = 5
var normalSpeed = 1
var bonuses = 0
var pos = {x:0, y:0}
var mines = Array()
var flags = Array()
var unknowns = Array()
var revealed = Array()
var firstMove = false
var start = null
var moves = 0
var actions = 0
for (var i = 0; i < height; i++) {
  var line = Array()
  for (let j = 0; j < width; j++) {
    line.push(false)
  }
  flags.push(line)
}
for (var i = 0; i < height; i++) {
  var line = Array()
  for (let j = 0; j < width; j++) {
    line.push(false)
  }
  unknowns.push(line)
}
for (var i = 0; i < height; i++) {
  var line = Array()
  for (let j = 0; j < width; j++) {
    line.push(false)
  }
  revealed.push(line)
}
function totalCount() {
  return width * height
}
function mineCount() {
  var count = 0;
  for (var i = 0; i < height; i++) {
    for (let j = 0; j < width; j++) {
      if (mines[i][j]) {
        count += 1
      }
    }
  }
  return count
}
function flagCount() {
  var count = 0;
  for (var i = 0; i < height; i++) {
    for (let j = 0; j < width; j++) {
      if (flags[i][j]) {
        count += 1
      }
    }
  }
  return count
}
function revealedCount() {
  var count = 0;
  for (var i = 0; i < height; i++) {
    for (let j = 0; j < width; j++) {
      if (revealed[i][j]) {
        count += 1
      }
    }
  }
  return count
}
function blankCount() {
  return totalCount() - flagCount() - revealedCount()
}
function show() {
  var string = ""
  string += mineCount().toString() + " mines " + flagCount().toString() + " flags (" + (mineCount() - flagCount()).toString() + " unflagged) " + revealedCount().toString() + " revealed " + blankCount().toString() + " blank \n"
  string += moves + " moves " + time(Date.now() - start) + " " + stat().toString() + " m/s " + stat2().toString() + " a/s\n"
  for (var i = 0; i < height; i++) {
    for (let j = 0; j < width; j++) {
      var value = "."
      if (revealed[i][j]) {
        var nearby = minesNearby({x:j, y:i}).toString()
        if (nearby == "0") {
          value = " "
        } else {
          value = nearby
        }
      } else if (flags[i][j]) {
        value = "F"
      } else if (unknowns[i][j]) {
        value = "?"
      }
      string += color(value);
      if (pos.x == j && pos.y == i) {
        string += "[" + value + "]\x1b[0m"
      } else {
        string += " " + value + " \x1b[0m"
      }
    }
    string += "\n"
  }
  stdout.write(string)
}
function showEmpty() {
  var string = ""
  string += minesCount.toString() + " mines " + flagCount().toString() + " flags (" + minesCount.toString() + " unflagged) 0 revealed " + blankCount().toString() + " blank \n"
  if (firstMove) {
    string += moves + " moves " + time(Date.now() - start) + " " + stat().toString() + " m/s " + stat2().toString() + " a/s\n"
  }
  for (var i = 0; i < height; i++) {
    for (let j = 0; j < width; j++) {
      var value = "."
      if (flags[i][j]) {
        value = "F"
      } else if (unknowns[i][j]) {
        value = "?"
      }
      string += color(value);
      if (pos.x == j && pos.y == i) {
        string += "[" + value + "]\x1b[0m"
      } else {
        string += " " + value + " \x1b[0m"
      }
    }
    string += "\n"
  }
  stdout.write(string)
}
function showLose() {
  if (cheated) {
    stdout.write("You lost (and you cheated)\n")
  } else {
    stdout.write("You lost\n")
  }
  var string = ""
  string += moves + " moves " + time(Date.now() - start) + " " + stat().toString() + " m/s " + stat2().toString() + " a/s\n"
  for (var i = 0; i < height; i++) {
    for (let j = 0; j < width; j++) {
      var value = "."
      if (revealed[i][j]) {
        var nearby = minesNearby({x:j, y:i}).toString()
        if (nearby == "0") {
          value = " "
        } else {
          value = nearby
        }
      } else if (flags[i][j] && !mines[i][j]) {
        value = "X"
      } else if (flags[i][j]) {
        value = "F"
      } else if (mines[i][j]) {
        value = "*"
      }
      string += color(value);
      if (pos.x == j && pos.y == i) {
        string += "[" + value + "]\x1b[0m"
      } else {
        string += " " + value + " \x1b[0m"
      }
    }
    string += "\n"
  }
  stdout.write(string)
}
function showWin() {
  if (cheated) {
    stdout.write("You win (but you cheated)\n")
  } else if (bonuses > 0) {
    stdout.write("You win with " + bonuses.toString() + " extra challenges\n")
  } else {
    stdout.write("You win\n")
  }
  var string = ""
  string += moves + " moves " + time(Date.now() - start) + " " + stat().toString() + " m/s " + stat2().toString() + " a/s\n"
  for (var i = 0; i < height; i++) {
    for (let j = 0; j < width; j++) {
      var value = "."
      if (revealed[i][j]) {
        var nearby = minesNearby({x:j, y:i}).toString()
        if (nearby == "0") {
          value = " "
        } else {
          value = nearby
        }
      } else if (mines[i][j]) {
        value = "*"
      }
      string += color(value) + " " + value + " \x1b[0m"
    }
    string += "\n"
  }
  stdout.write(string)
}
function minesNearby(position) {
  var sum = 0
  if (position.x > 0) {
    if (mines[position.y][position.x - 1]) {
      sum += 1;
    }
    if (position.y > 0) {
      if (mines[position.y - 1][position.x - 1]) {
        sum += 1;
      }   
    }
    if (position.y < height - 1) {
      if (mines[position.y + 1][position.x - 1]) {
        sum += 1;
      }   
    }
  }
  if (position.x < width - 1) {
    if (mines[position.y][position.x + 1]) {
      sum += 1;
    }
    if (position.y > 0) {
      if (mines[position.y - 1][position.x + 1]) {
        sum += 1;
      }   
    }
    if (position.y < height - 1) {
      if (mines[position.y + 1][position.x + 1]) {
        sum += 1;
      }   
    }
  }
  if (position.y > 0) {
    if (mines[position.y - 1][position.x]) {
      sum += 1;
    }   
  }
  if (position.y < height - 1) {
    if (mines[position.y + 1][position.x]) {
      sum += 1;
    }   
  }
  return sum
}
function flagsNearby() {
  var sum = 0
  if (pos.x > 0) {
    if (flags[pos.y][pos.x - 1]) {
      sum += 1;
    }
    if (pos.y > 0) {
      if (flags[pos.y - 1][pos.x - 1]) {
        sum += 1;
      }   
    }
    if (pos.y < height - 1) {
      if (flags[pos.y + 1][pos.x - 1]) {
        sum += 1;
      }   
    }
  }
  if (pos.x < width - 1) {
    if (flags[pos.y][pos.x + 1]) {
      sum += 1;
    }
    if (pos.y > 0) {
      if (flags[pos.y - 1][pos.x + 1]) {
        sum += 1;
      }   
    }
    if (pos.y < height - 1) {
      if (flags[pos.y + 1][pos.x + 1]) {
        sum += 1;
      }   
    }
  }
  if (pos.y > 0) {
    if (flags[pos.y - 1][pos.x]) {
      sum += 1;
    }   
  }
  if (pos.y < height - 1) {
    if (flags[pos.y + 1][pos.x]) {
      sum += 1;
    }   
  }
  return sum
}
function blanksNearby() {
  var sum = 0
  if (pos.x > 0) {
    if (!flags[pos.y][pos.x - 1] && !revealed[pos.y][pos.x - 1]) {
      sum += 1;
    }
    if (pos.y > 0) {
      if (!flags[pos.y - 1][pos.x - 1] && !revealed[pos.y - 1][pos.x - 1]) {
        sum += 1;
      }   
    }
    if (pos.y < height - 1) {
      if (!flags[pos.y + 1][pos.x - 1] && !revealed[pos.y + 1][pos.x - 1]) {
        sum += 1;
      }   
    }
  }
  if (pos.x < width - 1) {
    if (!flags[pos.y][pos.x + 1] && !revealed[pos.y][pos.x + 1]) {
      sum += 1;
    }
    if (pos.y > 0) {
      if (!flags[pos.y - 1][pos.x + 1] && !revealed[pos.y - 1][pos.x + 1]) {
        sum += 1;
      }   
    }
    if (pos.y < height - 1) {
      if (!flags[pos.y + 1][pos.x + 1] && !revealed[pos.y + 1][pos.x + 1]) {
        sum += 1;
      }   
    }
  }
  if (pos.y > 0) {
    if (!flags[pos.y - 1][pos.x] && !revealed[pos.y - 1][pos.x]) {
      sum += 1;
    }   
  }
  if (pos.y < height - 1) {
    if (!flags[pos.y + 1][pos.x] && !revealed[pos.y + 1][pos.x]) {
      sum += 1;
    }   
  }
  return sum
}
function color(string) {
  switch (string) {
    case " ":
      return "\x1b[48;5;238m";
    case "1":
      return "\x1b[48;5;240;38;5;45m";
    case "2":
      return "\x1b[48;5;240;38;5;46m";
    case "3":
      return "\x1b[48;5;240;38;5;208m";
    case "4":
      return "\x1b[48;5;240;38;5;33m";
    case "5":
      return "\x1b[48;5;240;38;5;160m";
    case "6":
      return "\x1b[48;5;240;38;5;43m";
    case "7":
      return "\x1b[48;5;240;38;5;15m";
    case "8":
      return "\x1b[48;5;240;38;5;242m";
    case "F":
      return "\x1b[48;5;236;38;5;220m";
    case "?":
      return "\x1b[48;5;236;38;5;183m";
    case ".":
      return "\x1b[48;5;236m";
    case "X":
      return "\x1b[48;5;88m";
    case "*":
      if (lost) {
        return "\x1b[48;5;88m";
      } else {
        return "\x1b[48;5;236;38;5;196m";
      }
    default:
      break;
  }
}
function pass() {}
function makeGrid() {
  var notReady = true
  while (notReady) {
    for (var i = 0; i < height; i++) {
      var line = Array()
      var bytes = crypto.randomBytes(width)
      for (let j = 0; j < width; j++) {
        var byte = bytes[j];
        if (byte > 256 * minesCount / totalCount()) {
          line.push(false);
        } else {
          if (-1 <= (pos.x - j) && (pos.x - j) <= 1 && -1 <= (pos.y - i) && (pos.y - i) <= 1) {
            line.push(false);
          } else {
            line.push(true);
          }
        }
      }
      mines.push(line)
    }
    if (mineCount() == minesCount) {
      notReady = false;
    } else {
      mines = Array()
    }
  }
}
function reveal() {
  revealArg(pos);
}
function revealArg(position) {
  if (revealed[position.y][position.x]) {
    pass()
  } else if (flags[position.y][position.x]) {
    pass()
  } else {
    if (mines[position.y][position.x]) {
      lost = true
    } else {
      revealed[position.y][position.x] = true;
      if (revealedCount() + minesCount == totalCount()) {
        won = true;
        return;
      }
      if (minesNearby(position) == 0) {
        if (position.x > 0) {
          revealArg({x:position.x - 1, y:position.y})
          if (position.y > 0) {
            revealArg({x:position.x - 1, y:position.y - 1})
          }
          if (position.y < height - 1) {
            revealArg({x:position.x - 1, y:position.y + 1})
          }
        }
        if (position.x < width - 1) {
          revealArg({x:position.x + 1, y:position.y})
          if (position.y > 0) {
            revealArg({x:position.x + 1, y:position.y - 1})
          }
          if (position.y < height - 1) {
            revealArg({x:position.x + 1, y:position.y + 1})
          }
        }
        if (position.y > 0) {
          revealArg({x:position.x, y:position.y - 1})
        }
        if (position.y < height - 1) {
          revealArg({x:position.x, y:position.y + 1})
        }
      }
    }
  }
}
function flag() {
  if (!revealed[pos.y][pos.x]) {
    var currentFlag = flags[pos.y][pos.x]
    if (currentFlag) {
      flagUnset(pos)
    } else {
      flagSet(pos)
    }
  }
}
function flagSet(position) {
  if (!revealed[position.y][position.x]) {
    flags[position.y][position.x] = true
    unknowns[position.y][position.x] = false
  }
}
function flagUnset(position) {
  if (!revealed[position.y][position.x]) {
    flags[position.y][position.x] = false
  }
}
function cord() {
  if (revealed[pos.y][pos.x]) {
    if (minesNearby(pos) == flagsNearby()) {
      if (pos.x > 0) {
        revealArg({x:pos.x - 1, y:pos.y})
        if (pos.y > 0) {
          revealArg({x:pos.x - 1, y:pos.y - 1})
        }
        if (pos.y < height - 1) {
          revealArg({x:pos.x - 1, y:pos.y + 1})
        }
      }
      if (pos.x < width - 1) {
        revealArg({x:pos.x + 1, y:pos.y})
        if (pos.y > 0) {
          revealArg({x:pos.x + 1, y:pos.y - 1})
        }
        if (pos.y < height - 1) {
          revealArg({x:pos.x + 1, y:pos.y + 1})
        }
      }
      if (pos.y > 0) {
        revealArg({x:pos.x, y:pos.y - 1})
      }
      if (pos.y < height - 1) {
        revealArg({x:pos.x, y:pos.y + 1})
      }
    }
  } else {
    flag()
  }
}
function extra() {
  if (revealed[pos.y][pos.x]) {
    if (flagCount() != 0 && blanksNearby() == 0) {
      if (pos.x > 0) {
        flagUnset({x:pos.x - 1, y:pos.y})
        if (pos.y > 0) {
          flagUnset({x:pos.x - 1, y:pos.y - 1})
        }
        if (pos.y < height - 1) {
          flagUnset({x:pos.x - 1, y:pos.y + 1})
        }
      }
      if (pos.x < width - 1) {
        flagUnset({x:pos.x + 1, y:pos.y})
        if (pos.y > 0) {
          flagUnset({x:pos.x + 1, y:pos.y - 1})
        }
        if (pos.y < height - 1) {
          flagUnset({x:pos.x + 1, y:pos.y + 1})
        }
      }
      if (pos.y > 0) {
        flagUnset({x:pos.x, y:pos.y - 1})
      }
      if (pos.y < height - 1) {
        flagUnset({x:pos.x, y:pos.y + 1})
      }
    } else if (blanksNearby() + flagsNearby() == minesNearby(pos)) {
      if (pos.x > 0) {
        flagSet({x:pos.x - 1, y:pos.y})
        if (pos.y > 0) {
          flagSet({x:pos.x - 1, y:pos.y - 1})
        }
        if (pos.y < height - 1) {
          flagSet({x:pos.x - 1, y:pos.y + 1})
        }
      }
      if (pos.x < width - 1) {
        flagSet({x:pos.x + 1, y:pos.y})
        if (pos.y > 0) {
          flagSet({x:pos.x + 1, y:pos.y - 1})
        }
        if (pos.y < height - 1) {
          flagSet({x:pos.x + 1, y:pos.y + 1})
        }
      }
      if (pos.y > 0) {
        flagSet({x:pos.x, y:pos.y - 1})
      }
      if (pos.y < height - 1) {
        flagSet({x:pos.x, y:pos.y + 1})
      }
    }
  } else {
    flag()
  }
}
function unknown() {
  if (!revealed[pos.y][pos.x] && !flags[pos.y][pos.x]) {
    var currentUnknown = unknowns[pos.y][pos.x]
    if (currentUnknown) {
      unknowns[pos.y][pos.x] = false
    } else {
      unknowns[pos.y][pos.x] = true
    }
  }
}
function blank() {
  if (flags[pos.y][pos.x]) {
    flags[pos.y][pos.x] = false
  }
  if (unknowns[pos.y][pos.x]) {
    unknowns[pos.y][pos.x] = false
  }
}
function please() {
  if (!revealed[pos.y][pos.x] && !flags[pos.y][pos.x]) {
    if (unknowns[pos.y][pos.x]) {
      if (!started) {
        makeGrid()
        started = true
      }
      cheated = true
      if (mines[pos.y][pos.x]) {
        flag()
      } else {
        reveal()
      }
    } else {
      unknown()
    }
  }
}
function moreMines() {
  var mineRate = minesCount / totalCount()
  if (started) {
    for (var i = 0; i < height; i++) {
      for (let j = 0; j < width; j++) {
        if (!mines[i][j] & !flags[i][j] & !revealed[i][j]) {
          if (crypto.randomInt(100) < 33.333 * mineRate) {
            mines[i][j] = true;
          }
        }
      }
    }
    if (revealedCount() + mineCount() == totalCount()) {
      won = true;
      cheated = true;
    }
  } else {
    minesCount += crypto.randomInt(Math.floor(mineRate * (totalCount() - minesCount) / 3))
    if (revealedCount() + minesCount == totalCount()) {
      won = true;
      cheated = true;
    }
  }
}
function time(seconds) {
  var seconds = seconds / 1000
  var hours = Math.floor(seconds / 60 / 60)
  var minutes = Math.floor((seconds - hours * 60 * 60) / 60)
  var seconds = seconds - hours * 60 * 60 - minutes * 60
  var string = seconds.toString() + "s"
  if (minutes != 0 || hours != 0) {
    string = minutes.toString() + "m " + string
  }
  if (hours != 0) {
    hours.toString() + "h " + string
  }
  return string
}
function stat() {
  var now = Date.now()
  var seconds = (now - start) / 1000
  var rate = moves / seconds
  if (rate > 100 || isNaN(rate)) {
    return "X"
  } else {
    return Math.round(rate * 10) / 10
  }
}
function stat2() {
  var now = Date.now()
  var seconds = (now - start) / 1000
  var rate = actions / seconds
  if (rate > 100 || isNaN(rate)) {
    return "X"
  } else {
    return Math.round(rate * 10) / 10
  }
}
function quit() {
  process.exit()
}
function controls() {
  stdout.write("Minesweeper 2.0\n")
  stdout.write("Controls:\n")
  stdout.write("WASD: Move\n")
  stdout.write("R: Reveal\n")
  stdout.write("F: Flag\n")
  stdout.write("C: Cord\n")
  stdout.write("E: Extra\n")
  stdout.write("U: Unknown\n")
  stdout.write("B: Blank\n")
  stdout.write("P: Please (cheats)\n")
  stdout.write("IJKL: Move to blank\n")
  stdout.write("N: Move to nearest blank\n")
  stdout.write("N: Move to middle\n")
  stdout.write("Z: Zoom mode (toggle)\n")
  stdout.write("X: Xtra challenge\n")
  stdout.write("H: Help\n")
  stdout.write("Q: Quit\n")
  stdout.write("\n")
}
stdin.on("keypress", (data, key) => {
  input = key.name
  if (input.length == 1) {
    switch (input.toLowerCase()) {
      case "w":
        moves += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        pos.y-=currentSpeed
        if (pos.y <= -1) {
          pos.y = pos.y + height
        }
        break;
      case "a":
        moves += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        pos.x-=currentSpeed
        if (pos.x <= -1) {
          pos.x = pos.x + width
        }
        break;
      case "s":
        moves += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        pos.y+=currentSpeed
        if (pos.y >= height) {
          pos.y = pos.y - height
        }
        break;
      case "d":
        moves += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        pos.x+=currentSpeed
        if (pos.x >= width) {
          pos.x = pos.x - width
        }
        break;
      case "r":
        moves += 1
        actions += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        if (started) {
          reveal()
        } else {
          makeGrid()
          started = true
          reveal()
        }
        break;
      case "f":
        moves += 1
        actions += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        flag()
        break;
      case "c":
        moves += 1
        actions += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        cord()
        break;
      case "e":
        moves += 1
        actions += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        extra()
        break;
      case "u":
        moves += 1
        actions += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        unknown()
        break;
      case "b":
        moves += 1
        actions += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        blank()
        break;
      case "p":
        moves += 1
        actions += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        please()
        break;
      case "i":
        moves += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        var y = pos.y - 1;
        if (y == -1) {
          pos.y = height - 1;
          break;
        }
        while (y != pos.y) {
          if (y == -1) {
            pos.y = 0;
            break;
          }
          if (!revealed[y][pos.x] && !flags[y][pos.x]) {
            pos.y = y;
            break;
          }
          y -= 1;
        }
        break;
      case "j":
        moves += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        var x = pos.x - 1;
        if (x == -1) {
          pos.x = width - 1;
          break;
        }
        while (x != pos.x) {
          if (x == -1) {
            pos.x = 0;
            break;
          }
          if (!revealed[pos.y][x] && !flags[pos.y][x]) {
            pos.x = x;
            break;
          }
          x -= 1;
        }
        break;
      case "k":
        moves += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        var y = pos.y + 1;
        if (y == height) {
          pos.y = 0;
          break;
        }
        while (y != pos.y) {
          if (y == height) {
            pos.y = height - 1;
            break;
          }
          if (!revealed[y][pos.x] && !flags[y][pos.x]) {
            pos.y = y;
            break;
          }
          y += 1;
        }
        break;
      case "l":
        moves += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        var x = pos.x + 1;
        if (x == width) {
          pos.x = 0;
          break;
        }
        while (x != pos.x) {
          if (x == width) {
            pos.x = width - 1;
            break;
          }
          if (!revealed[pos.y][x] && !flags[pos.y][x]) {
            pos.x = x;
            break;
          }
          x += 1;
        }
        break;
      case "m":
        moves += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        pos.x = Math.floor(width / 2)
        pos.y = Math.floor(height / 2)
        break;
      case "n":
        moves += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        if (blankCount() == 1) {
          for (var i = 0; i < height; i++) {
            for (let j = 0; j < width; j++) {
              if (!revealed[j][i] && !flags[j][i]) {
                pos.x = j;
                pos.y = i;
              }
            }
          }
        } else {
          var distance = 1;
          var done = false
          while (!done) {
            for (var i = 0; i < height; i++) {
              if (!done) {
                for (let j = 0; j < width; j++) {
                  if (!revealed[i][j] && !flags[i][j]) {
                    if (1 <= Math.abs(i - pos.y) + Math.abs(j - pos.x) && Math.abs(i - pos.y) + Math.abs(j - pos.x) <= distance) {
                      pos.x = j;
                      pos.y = i;
                      done = true;
                      break;
                    }
                  }
                }
              }
            }
            distance += 1
          }
        }
        break;
      case "x":
        moves += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        moreMines();
        bonuses += 1;
        break;
      case "z":
        moves += 1
        if (start == null) {
          start = Date.now()
          firstMove = true
        }
        if (zoom) {
          zoom = false
          currentSpeed = normalSpeed
        } else {
          zoom = true
          currentSpeed = zoomSpeed
        }
        break;
      case "h":
        controls()
        return;
      case "q":
        quit()
        return;
      default:
        break;
    }
    if (lost) {
      showLose();
      quit();
      return;
    } else if (won) {
      showWin();
      quit();
      return;
    }
    if (started) {
      show();
    } else {
      showEmpty();
    }
  }
})
controls();
showEmpty();

entry #3

written by quintopia

guesses
comments 0

post a comment


nooseman.html ASCII text, with very long lines (64582)
  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
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
    <title>Nooseman</title>
    <style>
      canvas { border: 1px solid black; }
      #correct { font: bold 20px monospace;
                 letter-spacing: 2px;
               }
      #replay {visibility:hidden;}
      #letter {width: 1ch;}
    </style>
  </head>
  <body onload="update();">
    <h1>Nooseman</h1>
    <canvas id="nooseman" width="150" height="150"></canvas>
    <p id="correct"></p>
    <p>Bad Letters:&nbsp;<span id="bad"></span></p>
    <span id="ui">Enter letter: <input id="letter"></span><input type="button" id="replay" value="Play Again">
    <h4>Past Wins:</h4>
    <div id="pastwins"></div>
    <script>
        var pastwins = '';
        if (localStorage.getItem('pastwins')) {
            pastwins = localStorage.getItem('pastwins');
            document.getElementById("pastwins").innerText=pastwins;
        }
        document.getElementById("letter").focus();
        var words=["aardvark", "aardwolf", "aasvogel", "abacuses", "abalones", "abampere", "abandons", "abapical", "abasedly", "abashing", "abatable", "abatises", "abattoir", "abbacies", "abbatial", "abbesses", "abdicate", "abdomens", "abdomina", "abducens", "abducent", "abducing", "abducted", "abductee", "abductor", "abegging", "abelmosk", "aberrant", "abetment", "abettals", "abetters", "abetting", "abettors", "abeyance", "abeyancy", "abfarads", "abhenrys", "abhorred", "abhorrer", "abidance", "abigails", "abjectly", "abjurers", "abjuring", "ablating", "ablation", "ablative", "ablators", "ablegate", "ableisms", "ableists", "abluents", "ablution", "abnegate", "abnormal", "aboideau", "aboiteau", "abomasal", "abomasum", "abomasus", "aborally", "aborning", "aborters", "aborting", "abortion", "abortive", "aboulias", "abounded", "abrachia", "abradant", "abraders", "abrading", "abrasion", "abrasive", "abreacts", "abridged", "abridger", "abridges", "abrogate", "abrosias", "abrupter", "abruptly", "abscised", "abscises", "abscisin", "abscissa", "absconds", "abseiled", "absences", "absented", "absentee", "absenter", "absently", "absinthe", "absinths", "absolute", "absolved", "absolver", "absolves", "absonant", "absorbed", "absorber", "abstains", "absterge", "abstract", "abstrict", "abstruse", "absurder", "absurdly", "abundant", "abusable", "abutilon", "abutment", "abuttals", "abutters", "abutting", "academes", "academia", "academic", "acalephe", "acalephs", "acanthae", "acanthus", "acapnias", "acarbose", "acaridan", "acarines", "acarpous", "acaudate", "acauline", "acaulose", "acaulous", "acceders", "acceding", "accented", "accentor", "accepted", "acceptee", "accepter", "acceptor", "accessed", "accesses", "accident", "accidias", "accidies", "acclaims", "accolade", "accorded", "accorder", "accosted", "accounts", "accouter", "accoutre", "accredit", "accreted", "accretes", "accruals", "accruing", "accuracy", "accurate", "accursed", "accusals", "accusant", "accusers", "accusing", "accustom", "aceldama", "acentric", "acequias", "acerated", "acerbate", "acerbest", "acerbity", "acerolas", "acervate", "acervuli", "acescent", "acetamid", "acetated", "acetates", "acetones", "acetonic", "acetoxyl", "acetylic", "achenial", "achieved", "achiever", "achieves", "achillea", "achiness", "achingly", "achiotes", "acholias", "achromat", "achromic", "aciculae", "acicular", "aciculas", "aciculum", "acidemia", "acidhead", "acidness", "acidoses", "acidosis", "acidotic", "aciduria", "acierate", "acoelous", "acolytes", "aconites", "aconitic", "aconitum", "acoustic", "acquaint", "acquests", "acquired", "acquiree", "acquirer", "acquires", "acrasias", "acrasins", "acreages", "acridest", "acridine", "acridity", "acrimony", "acrobats", "acrodont", "acrogens", "acrolect", "acrolein", "acrolith", "acromial", "acromion", "acronyms", "acrosome", "acrostic", "acrotism", "acrylate", "acrylics", "actiniae", "actinian", "actinias", "actinide", "actinism", "actinium", "actinoid", "actinons", "actioner", "activate", "actively", "activism", "activist", "activity", "activize", "actorish", "actressy", "actually", "actuated", "actuates", "actuator", "acuities", "aculeate", "acutance", "acylated", "acylates", "acyloins", "adamance", "adamancy", "adamants", "adamsite", "adapters", "adapting", "adaption", "adaptive", "adaptors", "addendum", "addicted", "addition", "additive", "additory", "adducent", "adducers", "adducing", "adducted", "adductor", "adeeming", "adenines", "adenitis", "adenoids", "adenomas", "adenoses", "adenosis", "adeptest", "adequacy", "adequate", "adherend", "adherent", "adherers", "adhering", "adhesion", "adhesive", "adhibits", "adiposes", "adiposis", "adjacent", "adjoined", "adjoints", "adjourns", "adjudged", "adjudges", "adjuncts", "adjurers", "adjuring", "adjurors", "adjusted", "adjuster", "adjustor", "adjutant", "adjuvant", "admasses", "admirals", "admirers", "admiring", "admitted", "admittee", "admitter", "admixing", "admonish", "adnation", "adonises", "adoptees", "adopters", "adopting", "adoption", "adoptive", "adorable", "adorably", "adorners", "adorning", "adrenals", "adroiter", "adroitly", "adscript", "adsorbed", "adsorber", "adularia", "adulated", "adulates", "adulator", "adultery", "adumbral", "aduncate", "aduncous", "advanced", "advancer", "advances", "advected", "adverted", "advisees", "advisers", "advising", "advisors", "advisory", "advocacy", "advocate", "advowson", "adynamia", "adynamic", "aecidial", "aecidium", "aequorin", "aerating", "aeration", "aerators", "aerially", "aerified", "aerifies", "aeriform", "aerobats", "aerobics", "aerobium", "aeroduct", "aerodyne", "aerofoil", "aerogels", "aerogram", "aerolite", "aerolith", "aerology", "aeronaut", "aeronomy", "aerosats", "aerosols", "aerostat", "aesthete", "aestival", "aetheric", "afebrile", "affaires", "affected", "affecter", "afferent", "affiance", "affiants", "affiches", "affinely", "affinity", "affirmed", "affirmer", "affixers", "affixial", "affixing", "afflatus", "afflicts", "affluent", "affluxes", "afforded", "afforest", "affrayed", "affrayer", "affright", "affronts", "affusion", "afghanis", "aflutter", "aftertax", "agalloch", "agalwood", "agametes", "agaroses", "agatized", "agatizes", "agedness", "agemates", "agencies", "agendums", "ageneses", "agenesia", "agenesis", "agenetic", "agenized", "agenizes", "agential", "agenting", "agentive", "ageratum", "aggadahs", "aggadoth", "aggraded", "aggrades", "aggrieve", "aginners", "agiotage", "agisting", "agitable", "agitated", "agitates", "agitator", "agitprop", "aglimmer", "aglitter", "aglycone", "aglycons", "agminate", "agnation", "agnizing", "agnomens", "agnomina", "agnosias", "agnostic", "agonised", "agonises", "agonists", "agonized", "agonizes", "agouties", "agraffes", "agraphia", "agraphic", "agrarian", "agreeing", "agrestal", "agrestic", "agrimony", "agrology", "agronomy", "agrypnia", "aguacate", "aguelike", "agueweed", "aguishly", "aigrette", "aiguille", "ailerons", "ailments", "aimfully", "ainsells", "airboats", "airborne", "airbound", "airbrush", "airburst", "airbuses", "aircheck", "aircoach", "aircraft", "aircrews", "airdates", "airdrome", "airdrops", "airfares", "airfield", "airflows", "airfoils", "airframe", "airglows", "airheads", "airholes", "airiness", "airlifts", "airliner", "airlines", "airmails", "airparks", "airplane", "airplays", "airports", "airposts", "airpower", "airproof", "airscape", "airscrew", "airsheds", "airships", "airshots", "airshows", "airspace", "airspeed", "airstrip", "airthing", "airtight", "airtimes", "airwaves", "airwoman", "airwomen", "aisleway", "akinesia", "akinetic", "akvavits", "alachlor", "alacrity", "alamedas", "alamodes", "alanines", "alarming", "alarmism", "alarmist", "alarumed", "alastors", "alations", "albacore", "albedoes", "albicore", "albinism", "albizias", "albizzia", "albumens", "albumins", "albumose", "alburnum", "alcahest", "alcaides", "alcaldes", "alcaydes", "alcazars", "alchemic", "alcidine", "alcohols", "aldehyde", "alderfly", "alderman", "aldermen", "aldicarb", "aldolase", "aleatory", "alehouse", "alembics", "alencons", "alertest", "alerting", "aleurone", "aleurons", "alewives", "alexines", "alfalfas", "alfaquin", "alfaquis", "alforjas", "alfresco", "algaroba", "algebras", "algerine", "algicide", "algidity", "alginate", "algology", "algorism", "aliasing", "alibiing", "alidades", "alienage", "alienate", "alienees", "alieners", "aliening", "alienism", "alienist", "alienors", "alighted", "aligners", "aligning", "aliments", "aliquant", "aliquots", "alizarin", "alkahest", "alkalies", "alkalify", "alkaline", "alkalise", "alkalize", "alkaloid", "alkanets", "alkoxide", "alkylate", "allanite", "allayers", "allaying", "allegers", "alleging", "allegory", "allegros", "allelism", "alleluia", "allergen", "allergic", "allergin", "alleyway", "allheals", "alliable", "alliance", "allicins", "allobars", "allocate", "allodial", "allodium", "allogamy", "allonges", "allonyms", "allopath", "allosaur", "allotted", "allottee", "allotter", "allotype", "allotypy", "allovers", "allowing", "alloxans", "alloying", "allseeds", "allsorts", "allspice", "alluding", "allurers", "alluring", "allusion", "allusive", "alluvial", "alluvion", "alluvium", "almagest", "almanack", "almanacs", "almemars", "almighty", "almoners", "alogical", "alopecia", "alopecic", "alphabet", "alphorns", "alphosis", "alpinely", "alpinism", "alpinist", "alterant", "alterers", "altering", "alterity", "althaeas", "althorns", "although", "altitude", "altoists", "altruism", "altruist", "aluminas", "alumines", "aluminic", "aluminum", "alumroot", "alunites", "alveolar", "alveolus", "alyssums", "amadavat", "amalgams", "amandine", "amanitas", "amanitin", "amaranth", "amarelle", "amaretti", "amaretto", "amarones", "amassers", "amassing", "amateurs", "amazedly", "ambaries", "amberies", "amberina", "amberoid", "ambiance", "ambience", "ambients", "ambition", "ambivert", "amboinas", "amboynas", "ambroids", "ambrosia", "ambsaces", "ambulant", "ambulate", "ambushed", "ambusher", "ambushes", "ameerate", "amelcorn", "amenable", "amenably", "amenders", "amending", "amentias", "amercers", "amercing", "amesaces", "amethyst", "amiantus", "amicable", "amicably", "amidases", "amidines", "amidogen", "amidones", "amidship", "amirates", "amitoses", "amitosis", "amitotic", "amitrole", "ammeters", "ammocete", "ammonals", "ammoniac", "ammonias", "ammonify", "ammonite", "ammonium", "ammonoid", "amnesiac", "amnesias", "amnesics", "amnestic", "amnionic", "amniotes", "amniotic", "amoebean", "amoeboid", "amorally", "amoretti", "amoretto", "amorists", "amortise", "amortize", "amosites", "amotions", "amounted", "amperage", "amphibia", "amphioxi", "amphipod", "amphorae", "amphoral", "amphoras", "amplexus", "ampoules", "ampullae", "ampullar", "amputate", "amputees", "amreetas", "amtracks", "amusable", "amusedly", "amygdala", "amygdale", "amygdule", "amylases", "amylenes", "amylogen", "amyloids", "amyloses", "anabaena", "anabases", "anabasis", "anabatic", "anableps", "anabolic", "anaconda", "anaemias", "anaerobe", "anaglyph", "anagoges", "anagogic", "anagrams", "analcime", "analcite", "analecta", "analects", "analemma", "analgias", "analogic", "analogue", "analysed", "analyser", "analyses", "analysis", "analysts", "analytes", "analytic", "analyzed", "analyzer", "analyzes", "anapaest", "anapests", "anaphase", "anaphora", "anaphors", "anarchic", "anasarca", "anatases", "anathema", "anatomic", "anatoxin", "ancestor", "ancestry", "anchored", "anchoret", "anchusas", "anchusin", "ancients", "ancillae", "ancillas", "anconeal", "anconoid", "andantes", "andesite", "andesyte", "andirons", "androgen", "androids", "anearing", "anecdota", "anecdote", "anechoic", "anemones", "anemoses", "anemosis", "anergias", "anergies", "aneroids", "anestrus", "anethole", "anethols", "aneurins", "aneurism", "aneurysm", "angakoks", "angarias", "angaries", "angelica", "angeling", "angering", "anginose", "anginous", "angiomas", "anglepod", "anglings", "angriest", "angstrom", "angulate", "angulose", "angulous", "anhingas", "anilines", "animalic", "animally", "animated", "animater", "animates", "animator", "animisms", "animists", "animuses", "aniseeds", "anisette", "anisoles", "ankerite", "ankushes", "ankylose", "annalist", "annattos", "annealed", "annealer", "annelids", "annexing", "annotate", "announce", "annoyers", "annoying", "annually", "annulate", "annulets", "annulled", "annulose", "anodally", "anodized", "anodizes", "anodynes", "anodynic", "anointed", "anointer", "anolytes", "anoopsia", "anopsias", "anoretic", "anorexia", "anorexic", "anorthic", "anosmias", "anovular", "anoxemia", "anoxemic", "anserine", "anserous", "answered", "answerer", "antacids", "antalgic", "antbears", "anteater", "antecede", "antedate", "antefixa", "antelope", "antennae", "antennal", "antennas", "antepast", "anterior", "anteroom", "antetype", "antevert", "anthelia", "anthelix", "anthemed", "anthemia", "anthemic", "antheral", "antherid", "antheses", "anthesis", "anthills", "anthodia", "antiacne", "antiarin", "antiatom", "antibias", "antibody", "antiboss", "anticity", "anticked", "anticold", "anticult", "antidora", "antidote", "antidrug", "antifoam", "antigang", "antigene", "antigens", "antihero", "antiking", "antileak", "antileft", "antilife", "antilock", "antilogs", "antilogy", "antimale", "antimask", "antimere", "antimine", "antimony", "antinode", "antinome", "antinomy", "antinuke", "antiphon", "antipill", "antipode", "antipole", "antipope", "antiporn", "antipyic", "antiqued", "antiquer", "antiques", "antirape", "antiriot", "antirock", "antiroll", "antirust", "antisera", "antiship", "antiskid", "antislip", "antismog", "antismut", "antisnob", "antispam", "antistat", "antitank", "antitype", "antiwear", "antiweed", "antlered", "antlions", "antonyms", "antonymy", "antrorse", "antsiest", "anureses", "anuresis", "anuretic", "anviling", "anvilled", "anviltop", "anyplace", "anything", "anywhere", "aoristic", "apagoges", "apagogic", "apanages", "aparejos", "apatetic", "apathies", "apatites", "aperient", "aperitif", "aperture", "aphagias", "aphanite", "aphasiac", "aphasias", "aphasics", "aphelian", "aphelion", "aphidian", "apholate", "aphonias", "aphonics", "aphorise", "aphorism", "aphorist", "aphorize", "aphthous", "apiarian", "apiaries", "apiarist", "apically", "apiculus", "apimania", "apiology", "aplasias", "aplastic", "apoapses", "apoapsis", "apocarps", "apocarpy", "apocopes", "apocopic", "apocrine", "apodoses", "apodosis", "apogamic", "apologal", "apologia", "apologue", "apolunes", "apomicts", "apomixes", "apomixis", "apophony", "apophyge", "apoplexy", "apospory", "apostacy", "apostasy", "apostate", "apostils", "apostles", "apothece", "apothegm", "apothems", "appalled", "appanage", "apparats", "apparels", "apparent", "appealed", "appealer", "appeared", "appeased", "appeaser", "appeases", "appellee", "appellor", "appended", "appendix", "appestat", "appetent", "appetite", "applauds", "applause", "appliers", "applique", "applying", "appoints", "apposers", "apposing", "apposite", "appraise", "apprised", "appriser", "apprises", "apprized", "apprizer", "apprizes", "approach", "approval", "approved", "approver", "approves", "appulses", "apractic", "apraxias", "apricots", "aproning", "apterium", "apterous", "aptitude", "apyrases", "apyretic", "aquacade", "aquafarm", "aqualung", "aquanaut", "aquarial", "aquarian", "aquarist", "aquarium", "aquatics", "aquatint", "aquatone", "aquavits", "aqueduct", "aquifers", "aquiline", "arabesks", "arabicas", "arabized", "arabizes", "araceous", "arachnid", "araneids", "arapaima", "ararobas", "arbalest", "arbalist", "arbelest", "arbiters", "arbitral", "arboreal", "arboreta", "arborist", "arborize", "arborous", "arboured", "arbuscle", "arbutean", "arcadian", "arcadias", "arcading", "arcanums", "arcature", "archaeal", "archaean", "archaeon", "archaise", "archaism", "archaist", "archaize", "archduke", "archfoes", "archines", "archings", "archival", "archived", "archives", "archness", "archways", "arciform", "arcsines", "arcuated", "ardently", "areaways", "arenites", "areolate", "areology", "arethusa", "argental", "argentic", "argentum", "arginase", "arginine", "argonaut", "argosies", "arguable", "arguably", "argufied", "argufier", "argufies", "argument", "aridness", "ariettas", "ariettes", "arillate", "arillode", "arilloid", "aristate", "armagnac", "armament", "armature", "armbands", "armchair", "armholes", "armigero", "armigers", "armillae", "armillas", "armloads", "armlocks", "armoires", "armonica", "armorers", "armorial", "armories", "armoring", "armoured", "armourer", "armrests", "armyworm", "arnattos", "arnottos", "arointed", "aromatic", "arousals", "arousers", "arousing", "aroynted", "arpeggio", "arquebus", "arraigns", "arranged", "arranger", "arranges", "arrantly", "arrayals", "arrayers", "arraying", "arrested", "arrestee", "arrester", "arrestor", "arrhizal", "arrivals", "arrivers", "arriving", "arrogant", "arrogate", "arrowing", "arsenals", "arsenate", "arsenics", "arsenide", "arsenite", "arsenous", "arsonist", "arsonous", "artefact", "arterial", "arteries", "artfully", "articled", "articles", "artifact", "artifice", "artiness", "artisans", "artistes", "artistic", "artistry", "artsiest", "artworks", "arugolas", "arugulas", "arythmia", "arythmic", "asbestic", "asbestos", "asbestus", "ascarids", "ascended", "ascender", "ascetics", "ascidian", "ascidium", "ascocarp", "ascorbic", "ascribed", "ascribes", "ashcakes", "ashfalls", "ashiness", "ashlared", "ashlered", "ashplant", "ashtrays", "asocials", "asparkle", "asperate", "asperges", "asperity", "aspersed", "asperser", "asperses", "aspersor", "asphalts", "aspheric", "asphodel", "asphyxia", "aspirant", "aspirata", "aspirate", "aspirers", "aspiring", "aspirins", "assagais", "assailed", "assailer", "assassin", "assaults", "assayers", "assaying", "assegais", "assemble", "assembly", "assented", "assenter", "assentor", "asserted", "asserter", "assertor", "assessed", "assesses", "assessor", "assholes", "assignat", "assigned", "assignee", "assigner", "assignor", "assisted", "assister", "assistor", "assoiled", "assonant", "assorted", "assorter", "assuaged", "assuager", "assuages", "assumers", "assuming", "assureds", "assurers", "assuring", "assurors", "asswaged", "asswages", "astasias", "astatine", "asterias", "asterisk", "asterism", "asternal", "asteroid", "asthenia", "asthenic", "astigmia", "astilbes", "astomous", "astonied", "astonies", "astonish", "astounds", "astragal", "astrally", "astricts", "astringe", "astutely", "asyndeta", "atabrine", "ataghans", "atalayas", "atamasco", "ataraxia", "ataraxic", "atavisms", "atavists", "atechnic", "ateliers", "atemoyas", "atenolol", "athanasy", "atheisms", "atheists", "atheling", "atheneum", "atheroma", "athetoid", "athletes", "athletic", "athodyds", "atlantes", "atomical", "atomised", "atomiser", "atomises", "atomisms", "atomists", "atomized", "atomizer", "atomizes", "atonable", "atonally", "atrazine", "atremble", "atresias", "atrocity", "atrophia", "atrophic", "atropine", "atropins", "atropism", "attached", "attacher", "attaches", "attacked", "attacker", "attagirl", "attained", "attainer", "attaints", "attemper", "attempts", "attended", "attendee", "attender", "attested", "attester", "attestor", "atticism", "atticist", "atticize", "attiring", "attitude", "attorned", "attorney", "attracts", "attrited", "attrites", "attuning", "atwitter", "atypical", "auberges", "aubretia", "aubrieta", "auctions", "audacity", "audibled", "audibles", "audience", "audients", "auditees", "auditing", "audition", "auditive", "auditors", "auditory", "augments", "augurers", "auguries", "auguring", "auguster", "augustly", "aunthood", "auntlier", "auntlike", "aurality", "aureolae", "aureolas", "aureoled", "aureoles", "auricled", "auricles", "auricula", "auriform", "aurorean", "ausforms", "auspices", "austerer", "australs", "autacoid", "autarchs", "autarchy", "autarkic", "autecism", "authored", "autistic", "autobahn", "autocade", "autocoid", "autocrat", "autodyne", "autogamy", "autogeny", "autogiro", "autogyro", "autoharp", "autolyse", "autolyze", "automata", "automate", "automats", "autonomy", "autonyms", "autopens", "autopsic", "autosome", "autotomy", "autotype", "autotypy", "autumnal", "autunite", "auxetics", "avadavat", "availing", "avarices", "avellane", "avengers", "avenging", "aventail", "averaged", "averages", "averment", "averring", "aversely", "aversion", "aversive", "averters", "averting", "avgasses", "avianize", "aviaries", "aviarist", "aviating", "aviation", "aviators", "aviatrix", "avicular", "avidness", "avifauna", "avigator", "avionics", "avocados", "avodires", "avoiders", "avoiding", "avouched", "avoucher", "avouches", "avowable", "avowably", "avowedly", "avulsing", "avulsion", "awaiters", "awaiting", "awakened", "awakener", "awardees", "awarders", "awarding", "awayness", "aweather", "awfuller", "awlworts", "awninged", "axiality", "axillars", "axillary", "axiology", "axletree", "axolotls", "axonemal", "axonemes", "axoplasm", "ayurveda", "azimuths", "azotemia", "azotemic", "azotised", "azotises", "azotized", "azotizes", "azoturia", "azulejos", "azurites", "azygoses", "baalisms", "baaskaap", "baaskaps", "baasskap", "babassus", "babbitry", "babbitts", "babblers", "babbling", "babesias", "babiches", "babirusa", "babushka", "babydoll", "babyhood", "babysits", "bacalaos", "baccaras", "baccarat", "baccated", "bacchant", "bacchius", "bachelor", "bacillar", "bacillus", "backache", "backbeat", "backbend", "backbite", "backbone", "backcast", "backchat", "backdate", "backdoor", "backdrop", "backfill", "backfire", "backfits", "backflip", "backflow", "backhand", "backhaul", "backhoed", "backhoes", "backings", "backland", "backlash", "backless", "backlist", "backload", "backlogs", "backmost", "backouts", "backpack", "backrest", "backroom", "backrush", "backsaws", "backseat", "backsets", "backside", "backslap", "backslid", "backspin", "backstab", "backstay", "backstop", "backward", "backwash", "backwood", "backwrap", "backyard", "baclofen", "bacteria", "bacterin", "baculine", "baculums", "badassed", "badasses", "badgered", "badgerly", "badinage", "badlands", "badmouth", "bafflers", "baffling", "bagasses", "baggages", "baggiest", "baggings", "baghouse", "bagpiped", "bagpiper", "bagpipes", "baguette", "bagworms", "bahadurs", "baidarka", "bailable", "bailiffs", "bailment", "bailouts", "bailsman", "bailsmen", "bairnish", "baitfish", "bakelite", "bakemeat", "bakeries", "bakeshop", "bakeware", "baklavas", "baklawas", "bakshish", "balanced", "balancer", "balances", "baldhead", "baldness", "baldpate", "baldrick", "baldrics", "balefire", "balisaur", "balkiest", "balkline", "ballades", "balladic", "balladry", "ballasts", "balletic", "ballgame", "ballhawk", "ballista", "ballonet", "ballonne", "balloons", "balloted", "balloter", "ballpark", "ballroom", "ballsier", "ballutes", "ballyard", "ballyhoo", "ballyrag", "balmiest", "balmlike", "balmoral", "baloneys", "balsamed", "balsamic", "baluster", "bambinos", "banality", "banalize", "banausic", "bandaged", "bandager", "bandages", "bandanas", "bandanna", "bandeaus", "bandeaux", "banderol", "banditos", "banditry", "banditti", "bandmate", "bandoras", "bandores", "bandsaws", "bandsman", "bandsmen", "bandying", "bangkoks", "bangtail", "banished", "banisher", "banishes", "banister", "banjaxed", "banjaxes", "banjoist", "bankable", "bankbook", "bankcard", "bankerly", "bankings", "banknote", "bankroll", "bankrupt", "banksias", "bankside", "bannable", "bannered", "banneret", "bannerol", "bannocks", "banquets", "banshees", "banshies", "bantengs", "bantered", "banterer", "bantling", "baptised", "baptises", "baptisia", "baptisms", "baptists", "baptized", "baptizer", "baptizes", "barathea", "barbaric", "barbasco", "barbecue", "barbells", "barbeque", "barbered", "barberry", "barbette", "barbican", "barbicel", "barbital", "barbless", "barbules", "barbwire", "barchans", "bareback", "bareboat", "barefoot", "barehand", "barehead", "bareness", "baresark", "barflies", "bargains", "bargello", "bargeman", "bargemen", "barghest", "barguest", "barillas", "baristas", "baritone", "barkeeps", "barkiest", "barkless", "barleduc", "barmaids", "barmiest", "barnacle", "barniest", "barnlike", "barnyard", "barogram", "baronage", "baroness", "baronets", "baronial", "baronies", "baronnes", "baroques", "barosaur", "barouche", "barrable", "barracks", "barraged", "barrages", "barranca", "barranco", "barrater", "barrator", "barratry", "barreled", "barrener", "barrenly", "barretor", "barretry", "barrette", "barriers", "barrooms", "barstool", "bartends", "bartered", "barterer", "bartisan", "bartizan", "barwares", "baryonic", "barytone", "barytons", "basaltes", "basaltic", "bascules", "baseball", "baseborn", "baseless", "baseline", "basement", "baseness", "basenjis", "bashings", "bashlyks", "basicity", "basidial", "basidium", "basified", "basifier", "basifies", "basilary", "basilect", "basilica", "basilisk", "basinets", "basinful", "basketry", "basmatis", "basophil", "basseted", "bassetts", "bassinet", "bassists", "bassness", "bassoons", "basswood", "bastards", "bastardy", "bastiles", "bastille", "bastings", "bastions", "batchers", "batching", "batfowls", "batgirls", "bathetic", "bathless", "bathmats", "bathoses", "bathrobe", "bathroom", "bathtubs", "batiking", "batistes", "battalia", "batteaux", "battened", "battener", "battered", "batterer", "batterie", "battiest", "battings", "battlers", "battling", "baudekin", "baudrons", "bauhinia", "baulkier", "baulking", "bauxites", "bauxitic", "bawcocks", "bawdiest", "bawdrics", "bawdries", "bayadeer", "bayadere", "bayberry", "bayonets", "baywoods", "bazookas", "bdellium", "beachboy", "beachier", "beaching", "beaconed", "beadiest", "beadings", "beadlike", "beadroll", "beadsman", "beadsmen", "beadwork", "beakiest", "beakless", "beaklike", "beamiest", "beamless", "beamlike", "beanbags", "beanball", "beanlike", "beanpole", "bearable", "bearably", "bearcats", "bearding", "bearhugs", "bearings", "bearlike", "bearskin", "bearwood", "beasties", "beatable", "beatific", "beatings", "beatless", "beatniks", "beaucoup", "beauties", "beautify", "beavered", "bebeerus", "bebloods", "bebopper", "becalmed", "becapped", "becarpet", "bechalks", "bechamel", "bechance", "becharms", "beckoned", "beckoner", "beclamor", "beclasps", "becloaks", "beclothe", "beclouds", "beclowns", "becoming", "becoward", "becrawls", "becrimed", "becrimes", "becrowds", "becrusts", "becudgel", "becursed", "becurses", "bedabble", "bedamned", "bedarken", "bedaubed", "bedazzle", "bedboard", "bedchair", "bedcover", "beddable", "beddings", "bedeafen", "bedecked", "bedesman", "bedesmen", "bedevils", "bedewing", "bedframe", "bedgowns", "bediaper", "bedights", "bedimmed", "bedimple", "bedizens", "bedlamps", "bedmaker", "bedmates", "bedotted", "bedouins", "bedplate", "bedposts", "bedquilt", "bedrails", "bedraped", "bedrapes", "bedrench", "bedrivel", "bedrocks", "bedrolls", "bedrooms", "bedsheet", "bedsides", "bedsonia", "bedsores", "bedstand", "bedstead", "bedstraw", "bedticks", "bedtimes", "bedumbed", "bedunced", "bedunces", "bedwards", "bedwarfs", "beebread", "beechier", "beechnut", "beefalos", "beefcake", "beefiest", "beefless", "beefwood", "beehives", "beelined", "beelines", "beeriest", "beeswing", "beetlers", "beetling", "beetroot", "beeyards", "befallen", "befinger", "befitted", "befleaed", "beflecks", "beflower", "befogged", "befooled", "befouled", "befouler", "befriend", "befringe", "befuddle", "begalled", "begazing", "begetter", "beggared", "beggarly", "beginner", "begirded", "begirdle", "beglamor", "beglooms", "begonias", "begorrah", "begotten", "begrimed", "begrimes", "begroans", "begrudge", "beguiled", "beguiler", "beguiles", "beguines", "begulfed", "behalves", "behavers", "behaving", "behavior", "beheadal", "beheaded", "beheader", "behemoth", "beholden", "beholder", "behooved", "behooves", "behoving", "behowled", "beignets", "bejabers", "bejeezus", "bejewels", "bejumble", "bekissed", "bekisses", "beknight", "belabors", "belabour", "beladied", "beladies", "belauded", "belayers", "belaying", "belchers", "belching", "beldames", "beleaped", "belfried", "belfries", "believed", "believer", "believes", "beliquor", "belittle", "bellbird", "bellboys", "belleeks", "bellhops", "bellings", "bellowed", "bellower", "bellpull", "bellwort", "bellyful", "bellying", "belonged", "beloveds", "beltings", "beltless", "beltline", "beltways", "bemadams", "bemadden", "bemeaned", "bemingle", "bemiring", "bemisted", "bemixing", "bemoaned", "bemocked", "bemuddle", "bemurmur", "bemusing", "bemuzzle", "benadryl", "benaming", "benchers", "benching", "benchtop", "bendable", "bendayed", "bendiest", "bendways", "bendwise", "benedick", "benedict", "benefice", "benefits", "benignly", "benisons", "benjamin", "benomyls", "benthons", "bentwood", "benumbed", "benzenes", "benzidin", "benzines", "benzoate", "benzoins", "benzoles", "benzoyls", "benzylic", "bepaints", "bepimple", "bequeath", "bequests", "beraking", "berascal", "berating", "berberin", "berberis", "berceuse", "berdache", "bereaved", "bereaver", "bereaves", "berettas", "bergamot", "bergeres", "berhymed", "berhymes", "beriberi", "berimbau", "beriming", "beringed", "berlines", "bermudas", "bernicle", "berouged", "berretta", "berrying", "berseems", "berserks", "berthing", "beryline", "bescorch", "bescours", "bescreen", "beseemed", "besetter", "beshadow", "beshamed", "beshames", "beshiver", "beshouts", "beshrews", "beshroud", "besieged", "besieger", "besieges", "beslaved", "beslimed", "beslimes", "besmears", "besmiled", "besmiles", "besmirch", "besmoked", "besmokes", "besmooth", "besmudge", "besnowed", "besoothe", "besotted", "besought", "bespeaks", "bespoken", "bespouse", "bespread", "besprent", "besteads", "bestiary", "bestowal", "bestowed", "bestower", "bestrewn", "bestrews", "bestride", "bestrode", "bestrown", "bestrows", "beswarms", "betaines", "betaking", "betatron", "betatter", "betelnut", "bethanks", "bethesda", "bethinks", "bethorns", "bethumps", "betiding", "betokens", "betonies", "betrayal", "betrayed", "betrayer", "betroths", "bettered", "beuncled", "bevatron", "bevelers", "beveling", "bevelled", "beveller", "beverage", "bevomits", "bewailed", "bewailer", "bewaring", "bewigged", "bewilder", "bewinged", "bewormed", "bewrayed", "bewrayer", "bezazzes", "beziques", "bezzants", "bhangras", "bheestie", "bhisties", "biacetyl", "biannual", "biasedly", "biasness", "biassing", "biathlon", "bibcocks", "bibelots", "biblical", "biblists", "bibulous", "bicaudal", "bicepses", "bichrome", "bickered", "bickerer", "bicolors", "bicolour", "biconvex", "bicornes", "bicuspid", "bicycled", "bicycler", "bicycles", "bicyclic", "bidarkas", "bidarkee", "biddable", "biddably", "biddings", "bidental", "bielding", "biennale", "biennial", "biennium", "bifacial", "bifidity", "bifocals", "biforate", "biforked", "biformed", "bigamies", "bigamist", "bigamous", "bigarade", "bigaroon", "bigeminy", "bigfoots", "biggings", "bigheads", "bighorns", "bighting", "bigmouth", "bignonia", "bigstick", "bihourly", "bijugate", "bijugous", "bikeways", "bikinied", "bilabial", "bilander", "bilayers", "bilberry", "bilevels", "bilgiest", "bilinear", "billable", "billbugs", "billeted", "billeter", "billfish", "billfold", "billhead", "billhook", "billiard", "billings", "billions", "billowed", "billycan", "bilobate", "bilsteds", "biltongs", "bimanous", "bimanual", "bimbette", "bimensal", "bimester", "bimetals", "bimethyl", "bimorphs", "binaries", "binarism", "binately", "binaural", "bindable", "bindings", "bindweed", "bingeing", "binnacle", "binocles", "binomial", "bioassay", "biochips", "biocidal", "biocides", "bioclean", "biocycle", "bioethic", "biofilms", "biofuels", "biogases", "biogenic", "bioherms", "biologic", "biolyses", "biolysis", "biolytic", "biometer", "biometry", "biomorph", "bionomic", "bioplasm", "biopsied", "biopsies", "bioscope", "bioscopy", "biosolid", "biotechs", "biotical", "biotites", "biotitic", "biotopes", "biotoxin", "biotrons", "biotypes", "biotypic", "biovular", "biparous", "biparted", "biphasic", "biphenyl", "biplanes", "biracial", "biradial", "biramose", "biramous", "birching", "birdbath", "birdcage", "birdcall", "birddogs", "birdfarm", "birdfeed", "birdings", "birdlife", "birdlike", "birdlime", "birdseed", "birdseye", "birdshot", "birdsong", "birettas", "birianis", "birlings", "birretta", "birrotch", "birthday", "birthing", "biryanis", "biscotti", "biscotto", "biscuits", "biscuity", "bisected", "bisector", "bisexual", "bishoped", "bismuths", "bisnagas", "bistered", "bistorts", "bistoury", "bistroic", "bitchery", "bitchier", "bitchily", "bitching", "biteable", "bitewing", "bitingly", "bitsiest", "bitstock", "bittered", "bitterer", "bitterly", "bitterns", "bittiest", "bittings", "bittocks", "bitumens", "biunique", "bivalent", "bivalved", "bivalves", "bivinyls", "bivouacs", "biweekly", "biyearly", "bizarres", "bizarros", "biznagas", "blabbers", "blabbing", "blackboy", "blackcap", "blackens", "blackest", "blackfin", "blackfly", "blackgum", "blacking", "blackish", "blackleg", "blackout", "blacktop", "bladders", "bladdery", "bladings", "blagging", "blamable", "blamably", "blameful", "blanched", "blancher", "blanches", "blandest", "blandish", "blankest", "blankets", "blanking", "blarneys", "blastema", "blasters", "blastier", "blasties", "blasting", "blastoff", "blastoma", "blastula", "blatancy", "blathers", "blatters", "blatting", "blauboks", "blazered", "blazoned", "blazoner", "blazonry", "bleached", "bleacher", "bleaches", "bleakest", "bleakish", "blearier", "blearily", "blearing", "bleaters", "bleating", "blebbing", "bleeders", "bleeding", "bleepers", "bleeping", "blellums", "blenched", "blencher", "blenches", "blenders", "blending", "blennies", "blesboks", "blesbuck", "blessers", "blessing", "blethers", "blighted", "blighter", "blimpish", "blindage", "blinders", "blindest", "blindgut", "blinding", "blinkard", "blinkers", "blinking", "blintzes", "blipping", "blissful", "blissing", "blisters", "blistery", "blithely", "blithers", "blithest", "blitzers", "blitzing", "blizzard", "bloaters", "bloating", "blobbing", "blockade", "blockage", "blockers", "blockier", "blocking", "blockish", "bloggers", "blogging", "blondest", "blondine", "blondish", "bloodfin", "bloodied", "bloodier", "bloodies", "bloodily", "blooding", "bloodred", "bloomers", "bloomery", "bloomier", "blooming", "bloopers", "blooping", "blossoms", "blossomy", "blotched", "blotches", "blotless", "blotters", "blottier", "blotting", "blousier", "blousily", "blousing", "blousons", "bloviate", "blowback", "blowball", "blowdown", "blowfish", "blowguns", "blowhard", "blowhole", "blowiest", "blowjobs", "blowoffs", "blowouts", "blowpipe", "blowsier", "blowsily", "blowtube", "blowzier", "blowzily", "blubbers", "blubbery", "blubbing", "bluchers", "bludgeon", "bludgers", "bludging", "blueball", "bluebeat", "bluebell", "bluebill", "bluebird", "bluebook", "bluecaps", "bluecoat", "bluefins", "bluefish", "bluegill", "bluegums", "bluehead", "blueings", "bluejack", "bluejays", "blueline", "blueness", "bluenose", "bluesier", "bluesman", "bluesmen", "bluestem", "bluetick", "blueweed", "bluewood", "bluffers", "bluffest", "bluffing", "blunders", "blungers", "blunging", "bluntest", "blunting", "blurbing", "blurbist", "blurrier", "blurrily", "blurring", "blurters", "blurting", "blushers", "blushful", "blushing", "blusters", "blustery", "boarders", "boarding", "boardman", "boardmen", "boarfish", "boasters", "boastful", "boasting", "boatable", "boatbill", "boatfuls", "boathook", "boatings", "boatlift", "boatlike", "boatload", "boatneck", "boatsman", "boatsmen", "boatyard", "bobbinet", "bobbling", "bobbysox", "bobeches", "bobolink", "bobsleds", "bobstays", "bobtails", "bobwhite", "bocaccio", "bodement", "bodhrans", "bodiless", "bodingly", "bodysuit", "bodysurf", "bodywork", "boehmite", "boffolas", "bogarted", "bogbeans", "bogeying", "bogeyman", "bogeymen", "boggiest", "bogglers", "boggling", "bogwoods", "bogyisms", "bohemian", "bohemias", "bohriums", "boilable", "boiloffs", "boilover", "boinking", "boiserie", "boldface", "boldness", "bolivars", "bolivias", "bollards", "bollixed", "bollixes", "bollocks", "bolloxed", "bolloxes", "bollworm", "bolognas", "boloneys", "bolshies", "bolsters", "bolthead", "bolthole", "boltless", "boltlike", "boltonia", "boltrope", "bombable", "bombards", "bombasts", "bombesin", "bombings", "bomblets", "bombload", "bombycid", "bombyxes", "bonanzas", "bondable", "bondages", "bondings", "bondless", "bondmaid", "bondsman", "bondsmen", "bonefish", "bonehead", "boneless", "bonemeal", "bonesets", "boneyard", "boneyest", "bonfires", "bongoist", "bonhomie", "boniatos", "boniface", "boniness", "bonitoes", "bonneted", "bonniest", "bonnocks", "bonspell", "bonspiel", "bontebok", "boobirds", "boodlers", "boodling", "boogeyed", "boogying", "boogyman", "boogymen", "boohooed", "bookable", "bookcase", "bookends", "bookfuls", "bookings", "booklets", "booklice", "booklore", "bookmark", "bookrack", "bookrest", "bookshop", "bookworm", "boomiest", "boomkins", "boomlets", "boomtown", "boondock", "boonless", "boosters", "boosting", "bootable", "bootjack", "bootlace", "bootlegs", "bootless", "bootlick", "booziest", "boracite", "borating", "bordeaux", "bordello", "bordered", "borderer", "bordures", "boreases", "borecole", "boredoms", "borehole", "boresome", "boringly", "borneols", "bornites", "bornitic", "boroughs", "borrelia", "borrowed", "borrower", "borsches", "borschts", "borstals", "boscages", "boschbok", "boshboks", "boshvark", "boskages", "boskiest", "bosoming", "bosquets", "bossdoms", "bossiest", "bossisms", "botanica", "botanies", "botanise", "botanist", "botanize", "botchers", "botchery", "botchier", "botchily", "botching", "botflies", "bothered", "bothrium", "botonnee", "botryoid", "botryose", "botrytis", "bottlers", "bottling", "bottomed", "bottomer", "bottomry", "botulins", "botulism", "bouchees", "boudoirs", "bouffant", "boughpot", "boughten", "bouillon", "boulders", "bouldery", "bouncers", "bouncier", "bouncily", "bouncing", "boundary", "bounders", "bounding", "bountied", "bounties", "bouquets", "bourbons", "bourdons", "bourgeon", "bourrees", "bourride", "boursins", "bourtree", "bousouki", "boutique", "bouviers", "bouzouki", "bovinely", "bovinity", "boweling", "bowelled", "boweries", "bowering", "bowfront", "bowheads", "bowingly", "bowknots", "bowlders", "bowlfuls", "bowlines", "bowlings", "bowllike", "bowshots", "bowsprit", "bowwowed", "boxballs", "boxberry", "boxboard", "boxhauls", "boxiness", "boxthorn", "boxwoods", "boyarism", "boychick", "boychiks", "boycotts", "boyhoods", "boyishly", "brabbled", "brabbler", "brabbles", "bracelet", "braceros", "brachets", "brachial", "brachium", "bracings", "braciola", "braciole", "brackens", "brackets", "brackish", "braconid", "bracteal", "bractlet", "bradawls", "bradding", "bradoons", "braggart", "braggers", "braggest", "braggier", "bragging", "braiders", "braiding", "brailing", "brailled", "brailler", "brailles", "brainiac", "brainier", "brainily", "braining", "brainish", "brainpan", "braising", "brakeage", "brakeman", "brakemen", "brakiest", "brambled", "brambles", "branched", "branches", "branchia", "branders", "brandied", "brandies", "branding", "brandish", "branners", "brannier", "branning", "brantail", "brashest", "brashier", "brasiers", "brasilin", "brassage", "brassard", "brassart", "brassica", "brassier", "brassies", "brassily", "brassing", "brassish", "brattice", "brattier", "brattish", "brattled", "brattles", "braunite", "bravados", "bravoing", "bravuras", "brawlers", "brawlier", "brawling", "brawnier", "brawnily", "brazened", "brazenly", "braziers", "brazilin", "breached", "breacher", "breaches", "breadbox", "breading", "breadnut", "breadths", "breakage", "breakers", "breaking", "breakout", "breakups", "breaming", "breasted", "breathed", "breather", "breathes", "breccial", "breccias", "brechams", "brechans", "breeched", "breeches", "breeders", "breeding", "breezier", "breezily", "breezing", "bregmata", "bregmate", "brethren", "brevetcy", "breveted", "breviary", "breviers", "brewages", "brewings", "brewises", "brewpubs", "brewskis", "bribable", "brickbat", "brickier", "bricking", "brickles", "bricoles", "bridally", "bridging", "bridlers", "bridling", "bridoons", "briefers", "briefest", "briefing", "brigaded", "brigades", "brigands", "brighten", "brighter", "brightly", "brimfull", "brimless", "brimmers", "brimming", "brindled", "brindles", "bringers", "bringing", "briniest", "brioches", "brionies", "briquets", "brisance", "briskest", "briskets", "brisking", "brisling", "bristled", "bristles", "bristols", "britches", "britskas", "brittled", "brittler", "brittles", "britzkas", "britzska", "broached", "broacher", "broaches", "broadaxe", "broadens", "broadest", "broadish", "brocaded", "brocades", "brocatel", "broccoli", "brochure", "brockage", "brockets", "brocolis", "broguery", "broguish", "broiders", "broidery", "broilers", "broiling", "brokages", "brokenly", "brokered", "brokings", "brollies", "bromated", "bromates", "bromelin", "bromides", "bromidic", "bromines", "bromisms", "bromized", "bromizes", "bronchia", "bronchos", "bronchus", "bronzers", "bronzier", "bronzing", "brooches", "brooders", "broodier", "broodily", "brooding", "brookies", "brooking", "brookite", "brooklet", "broomier", "brooming", "brothels", "brothers", "brougham", "brouhaha", "browband", "browbeat", "browless", "brownest", "brownier", "brownies", "browning", "brownish", "brownout", "browsers", "browsing", "brucella", "brucines", "bruisers", "bruising", "bruiters", "bruiting", "brulyies", "brulzies", "brumbies", "brunched", "bruncher", "brunches", "brunette", "brunizem", "brushers", "brushier", "brushing", "brushoff", "brushups", "bruskest", "brusquer", "brutally", "brutisms", "bruxisms", "bryology", "bryonies", "bryozoan", "bubaline", "bubblers", "bubblier", "bubblies", "bubbling", "bubingas", "buccally", "buckaroo", "buckayro", "buckbean", "buckeens", "buckeroo", "bucketed", "buckeyes", "bucklers", "buckling", "buckrams", "bucksaws", "buckshee", "buckshot", "buckskin", "bucktail", "bucolics", "buddings", "buddleia", "buddying", "budgeted", "budgeter", "budworms", "buffable", "buffalos", "buffered", "buffeted", "buffeter", "buffiest", "buffoons", "bugaboos", "bugbanes", "bugbears", "buggered", "buggiest", "bughouse", "bugseeds", "buhlwork", "builders", "building", "buildups", "bulblets", "bulghurs", "bulgiest", "bulimiac", "bulimias", "bulimics", "bulkages", "bulkhead", "bulkiest", "bullaces", "bullbats", "bulldogs", "bulldoze", "bulldyke", "bulleted", "bulletin", "bullfrog", "bullhead", "bullhorn", "bulliest", "bullions", "bullneck", "bullnose", "bullocks", "bullocky", "bullpens", "bullpout", "bullring", "bullrush", "bullshat", "bullshit", "bullshot", "bullweed", "bullwhip", "bullyboy", "bullying", "bullyrag", "bulwarks", "bumblers", "bumbling", "bumboats", "bumelias", "bummalos", "bumpered", "bumpiest", "bumpkins", "bunchier", "bunchily", "bunching", "buncoing", "buncombe", "bundists", "bundlers", "bundling", "bungalow", "bunghole", "bunglers", "bungling", "bunkered", "bunkmate", "bunkoing", "bunrakus", "buntings", "buntline", "buoyages", "buoyance", "buoyancy", "burblers", "burblier", "burbling", "burdened", "burdener", "burdocks", "burettes", "burgages", "burgeons", "burghers", "burglars", "burglary", "burgling", "burgonet", "burgouts", "burgrave", "burgundy", "burkites", "burlesks", "burliest", "burnable", "burnings", "burnoose", "burnouts", "burriest", "burritos", "burrowed", "burrower", "burseeds", "bursitis", "bursters", "bursting", "burstone", "burthens", "burweeds", "busgirls", "bushbuck", "busheled", "busheler", "bushfire", "bushgoat", "bushidos", "bushiest", "bushings", "bushland", "bushless", "bushlike", "bushpigs", "bushtits", "bushveld", "bushwahs", "business", "buskined", "busloads", "bussings", "bustards", "bustiers", "bustiest", "bustlers", "bustline", "bustling", "busulfan", "busybody", "busyness", "busywork", "butanols", "butanone", "butchers", "butchery", "buttered", "butthead", "buttocks", "buttoned", "buttoner", "buttress", "butylate", "butylene", "butyrals", "butyrate", "butyrins", "butyrous", "butyryls", "buxomest", "buybacks", "buzzards", "buzzcuts", "buzzwigs", "buzzword", "byliners", "bylining", "bypassed", "bypasses", "byssuses", "bystreet", "cabalism", "cabalist", "caballed", "cabarets", "cabbaged", "cabbages", "cabbagey", "cabbalah", "cabbalas", "cabernet", "cabestro", "cabezone", "cabezons", "cabildos", "cabinets", "cabining", "cableway", "caboched", "cabochon", "cabombas", "caboodle", "cabooses", "caboshed", "cabotage", "cabresta", "cabresto", "cabretta", "cabrilla", "cabriole", "cabstand", "cachalot", "cachepot", "cacheted", "cachexia", "cachexic", "cachucha", "caciques", "cacklers", "cackling", "cacodyls", "cacomixl", "caconyms", "caconymy", "cactuses", "cadaster", "cadastre", "cadavers", "caddices", "caddised", "caddises", "caddying", "cadelles", "cadenced", "cadences", "cadenzas", "cadmiums", "caducean", "caduceus", "caducity", "caducous", "caecally", "caesiums", "caesurae", "caesural", "caesuras", "caesuric", "caffeine", "caffeins", "caftaned", "cagefuls", "cagelike", "cageling", "caginess", "caissons", "caitiffs", "cajaputs", "cajeputs", "cajolers", "cajolery", "cajoling", "cajuputs", "cakewalk", "cakiness", "calabash", "calabaza", "caladium", "calamari", "calamars", "calamary", "calamata", "calamine", "calamint", "calamite", "calamity", "calashes", "calathos", "calathus", "calcanea", "calcanei", "calcaria", "calceate", "calcific", "calcined", "calcines", "calcites", "calcitic", "calciums", "calcspar", "calctufa", "calctuff", "calculus", "caldaria", "calderas", "caldrons", "caleches", "calendal", "calendar", "calender", "calflike", "calfskin", "calibers", "calibred", "calibres", "caliches", "calicles", "calicoes", "califate", "calipash", "calipees", "calipers", "caliphal", "calisaya", "calkings", "callable", "callaloo", "callants", "callback", "callboys", "callings", "calliope", "callipee", "calliper", "calloses", "callower", "callused", "calluses", "calmness", "calomels", "calorics", "calories", "calorize", "calottes", "calotype", "caloyers", "calpacks", "calpains", "calquing", "calthrop", "caltraps", "caltrops", "calumets", "calutron", "calvados", "calvaria", "calycate", "calyceal", "calycine", "calycles", "calyculi", "calypsos", "calypter", "calyptra", "calzones", "camailed", "camasses", "cambered", "cambisms", "cambists", "cambiums", "cambogia", "cambrics", "cameleer", "camelias", "camelids", "camellia", "cameoing", "camisade", "camisado", "camisias", "camisole", "camomile", "camorras", "campagna", "campagne", "campaign", "campfire", "camphene", "camphine", "camphire", "camphols", "camphors", "campiest", "campings", "campions", "campongs", "camporee", "campouts", "campsite", "campused", "campuses", "camshaft", "canaille", "canakins", "canaling", "canalise", "canalize", "canalled", "canaller", "canaries", "canastas", "canceled", "canceler", "cancered", "cancroid", "candelas", "candidal", "candidas", "candider", "candidly", "candlers", "candling", "candours", "candying", "canellas", "canephor", "caneware", "canfield", "canikins", "caninity", "canistel", "canister", "canities", "cankered", "cannabic", "cannabin", "cannabis", "cannelon", "cannibal", "canniest", "cannikin", "cannings", "cannolis", "cannoned", "cannonry", "cannulae", "cannular", "cannulas", "canoeing", "canoeist", "canoness", "canonise", "canonist", "canonize", "canoodle", "canopied", "canopies", "canorous", "cantalas", "cantatas", "cantdogs", "canteens", "cantered", "canticle", "cantinas", "cantonal", "cantoned", "cantraip", "cantraps", "cantrips", "canulate", "canvased", "canvaser", "canvases", "canzonas", "canzones", "canzonet", "capabler", "capacity", "capelans", "capelets", "capelins", "caperers", "capering", "capeskin", "capework", "capiases", "capitals", "capitate", "capitols", "capitula", "capmaker", "capoeira", "caponata", "caponier", "caponize", "caporals", "cappings", "capricci", "caprices", "caprifig", "capriole", "caprocks", "capsicin", "capsicum", "capsidal", "capsized", "capsizes", "capsomer", "capstans", "capstone", "capsular", "capsuled", "capsules", "captains", "captions", "captious", "captives", "captured", "capturer", "captures", "capuched", "capuches", "capuchin", "capybara", "carabaos", "carabids", "carabine", "carabins", "caracals", "caracara", "caracole", "caracols", "caraculs", "caragana", "carageen", "caramels", "carangid", "carapace", "carassow", "caravans", "caravels", "caraways", "carbamic", "carbamyl", "carbarns", "carbaryl", "carbides", "carbines", "carbinol", "carbolic", "carbonic", "carbonyl", "carboras", "carboxyl", "carboyed", "carburet", "carcajou", "carcanet", "carcases", "carceral", "cardamom", "cardamon", "cardamum", "cardcase", "cardiacs", "cardigan", "cardinal", "cardings", "cardioid", "carditic", "carditis", "cardoons", "careened", "careener", "careered", "careerer", "carefree", "careless", "caressed", "caresser", "caresses", "caretake", "caretook", "careworn", "carfares", "caribous", "carillon", "carinate", "cariocas", "carioles", "carjacks", "carlines", "carlings", "carloads", "carmaker", "carmines", "carnages", "carnally", "carnauba", "carnival", "caroches", "carolers", "caroling", "carolled", "caroller", "caroming", "carotene", "carotids", "carotins", "carousal", "caroused", "carousel", "carouser", "carouses", "carpalia", "carpeted", "carpings", "carpools", "carports", "carracks", "carrells", "carriage", "carriers", "carriole", "carrions", "carritch", "carromed", "carrotin", "carryall", "carrying", "carryons", "carryout", "cartable", "cartages", "cartload", "cartoned", "cartoons", "cartoony", "cartouch", "caruncle", "carvings", "caryatic", "caryatid", "caryotin", "cascabel", "cascable", "cascaded", "cascades", "cascaras", "caseases", "caseated", "caseates", "casebook", "casefied", "casefies", "caseload", "casemate", "casement", "caseoses", "casernes", "casettes", "casework", "caseworm", "cashable", "cashbook", "cashiers", "cashless", "cashmere", "casimere", "casimire", "casketed", "cassabas", "cassatas", "cassavas", "cassenas", "cassenes", "cassette", "cassinas", "cassines", "cassinos", "cassises", "cassocks", "castable", "castanet", "castaway", "casteism", "castings", "castling", "castoffs", "castrate", "castrati", "castrato", "casually", "casualty", "casuists", "catacomb", "catalase", "cataloes", "catalogs", "catalpas", "catalyst", "catalyze", "catamite", "catapult", "cataract", "catarrhs", "catawbas", "catbirds", "catboats", "catbrier", "catcalls", "catchall", "catchers", "catchfly", "catchier", "catching", "catchups", "catclaws", "catechin", "catechol", "catechus", "category", "catenary", "catenate", "catenoid", "caterans", "caterers", "cateress", "catering", "catfaces", "catfalls", "catfight", "catheads", "cathects", "cathedra", "catheter", "cathexes", "cathexis", "cathodal", "cathodes", "cathodic", "catholic", "cathouse", "cationic", "catjangs", "catlings", "catmints", "catnaper", "catspaws", "catsuits", "cattails", "cattalos", "cattiest", "cattleya", "catwalks", "caucused", "caucuses", "caudally", "caudated", "caudates", "caudexes", "caudices", "caudillo", "cauldron", "caulicle", "caulkers", "caulking", "causable", "causally", "causerie", "causeway", "caustics", "cautions", "cautious", "cavalero", "cavalier", "cavallas", "cavatina", "cavatine", "caveated", "caveator", "cavefish", "cavelike", "caverned", "cavettos", "caviares", "cavicorn", "cavilers", "caviling", "cavilled", "caviller", "cavitary", "cavitate", "cavitied", "cavities", "cavorted", "cavorter", "cayenned", "cayennes", "caziques", "cecities", "cecropia", "cedillas", "ceilidhs", "ceilings", "ceinture", "celadons", "celeriac", "celeries", "celerity", "celestas", "celestes", "celibacy", "celibate", "cellared", "cellarer", "cellaret", "cellists", "cellmate", "cellular", "cellules", "celomata", "celosias", "cembalos", "cemented", "cementer", "cementum", "cemetery", "cenacles", "cenobite", "cenotaph", "cenozoic", "censored", "censured", "censurer", "censures", "censused", "censuses", "centares", "centaurs", "centaury", "centavos", "centered", "centeses", "centesis", "centiare", "centiles", "centimes", "centimos", "centners", "centones", "centrals", "centring", "centrism", "centrist", "centroid", "centrums", "centuple", "ceorlish", "cephalad", "cephalic", "cephalin", "cepheids", "ceramals", "ceramics", "ceramide", "ceramist", "cerastes", "ceratins", "ceratoid", "cercaria", "cercises", "cerebral", "cerebric", "cerebrum", "cerement", "ceremony", "cereuses", "cernuous", "cerotype", "cerulean", "cerumens", "cerusite", "cervelas", "cervelat", "cervezas", "cervical", "cervices", "cervixes", "cesarean", "cesarian", "cessions", "cesspits", "cesspool", "cestodes", "cestoids", "cestuses", "cetacean", "cetology", "ceviches", "chabouks", "chachkas", "chaconne", "chadarim", "chadless", "chaebols", "chaffers", "chaffier", "chaffing", "chagrins", "chaining", "chainman", "chainmen", "chainsaw", "chairing", "chairman", "chairmen", "chalazae", "chalazal", "chalazas", "chalazia", "chalcids", "chaldron", "chaliced", "chalices", "chalkier", "chalking", "challahs", "challies", "challoth", "chalones", "chalupas", "chamades", "chambers", "chambray", "chamfers", "chamfron", "chamisas", "chamises", "chamisos", "chammied", "chammies", "champaca", "champacs", "champaks", "champers", "champing", "champion", "chancels", "chancers", "chancery", "chancier", "chancily", "chancing", "chancres", "chandler", "chanfron", "changers", "changeup", "changing", "channels", "chanoyus", "chansons", "chantage", "chanters", "chanteys", "chanties", "chanting", "chantors", "chapatis", "chapatti", "chapbook", "chapeaus", "chapeaux", "chaperon", "chapiter", "chaplain", "chaplets", "chappati", "chappies", "chapping", "chapters", "chaqueta", "characid", "characin", "charades", "charases", "charcoal", "chargers", "charging", "chariest", "chariots", "charisma", "charisms", "charkhas", "charking", "charlady", "charleys", "charlies", "charlock", "charmers", "charming", "charnels", "charpais", "charpoys", "charquid", "charquis", "charrier", "charring", "charters", "charting", "chartist", "chasings", "chasseur", "chastely", "chastens", "chastest", "chastise", "chastity", "chasuble", "chatchka", "chatchke", "chateaus", "chateaux", "chatroom", "chattels", "chatters", "chattery", "chattier", "chattily", "chatting", "chaufers", "chauffer", "chaunted", "chaunter", "chausses", "chayotes", "chazanim", "chazzans", "chazzens", "cheapens", "cheapest", "cheapies", "cheapish", "cheaters", "cheating", "chechako", "checkers", "checking", "checkoff", "checkout", "checkrow", "checksum", "checkups", "cheddars", "cheddary", "cheddite", "chedites", "cheekful", "cheekier", "cheekily", "cheeking", "cheepers", "cheeping", "cheerers", "cheerful", "cheerier", "cheerily", "cheering", "cheerios", "cheerled", "cheesier", "cheesily", "cheesing", "cheetahs", "chefdoms", "cheffing", "chelated", "chelates", "chelator", "cheliped", "cheloids", "chemical", "chemises", "chemisms", "chemists", "chemurgy", "chenille", "chenopod", "chequers", "cheroots", "cherries", "chertier", "cherubic", "cherubim", "chervils", "cheshire", "chessman", "chessmen", "chestful", "chestier", "chestily", "chestnut", "chetrums", "chevalet", "cheveron", "cheviots", "chevrets", "chevrons", "chevying", "chewable", "chewiest", "chewinks", "chiantis", "chiasmal", "chiasmas", "chiasmic", "chiasmus", "chiastic", "chiauses", "chibouks", "chicaned", "chicaner", "chicanes", "chicanos", "chiccory", "chichier", "chickees", "chickens", "chickory", "chickpea", "chicness", "chiefdom", "chiefest", "chiffons", "chigetai", "chiggers", "chignons", "childbed", "childing", "childish", "children", "chiliads", "chiliasm", "chiliast", "chilidog", "chillers", "chillest", "chillier", "chillies", "chillily", "chilling", "chillums", "chilopod", "chimaera", "chimbley", "chimeras", "chimeres", "chimeric", "chimleys", "chimneys", "chinbone", "chinches", "chinkier", "chinking", "chinless", "chinning", "chinones", "chinooks", "chintses", "chintzes", "chinwags", "chipmuck", "chipmunk", "chipotle", "chippers", "chippier", "chippies", "chipping", "chirkest", "chirking", "chirming", "chirpers", "chirpier", "chirpily", "chirping", "chirring", "chirrups", "chirrupy", "chiseled", "chiseler", "chitchat", "chitling", "chitlins", "chitosan", "chitters", "chitties", "chivalry", "chivaree", "chivvied", "chivvies", "chivying", "chloasma", "chlorals", "chlorate", "chlordan", "chloride", "chlorids", "chlorine", "chlorins", "chlorite", "chlorous", "chockful", "chocking", "choicely", "choicest", "choirboy", "choiring", "chokiest", "cholates", "cholents", "choleras", "choleric", "cholines", "chompers", "chomping", "choosers", "choosier", "choosing", "chopines", "choppers", "choppier", "choppily", "chopping", "choragic", "choragus", "chorales", "chorally", "chordate", "chording", "choregus", "choreman", "choremen", "choreoid", "choriamb", "chorines", "chorioid", "chorions", "chorizos", "choroids", "chortens", "chortled", "chortler", "chortles", "chorused", "choruses", "chousers", "choushes", "chousing", "chowchow", "chowders", "chowsing", "chowtime", "chresard", "chrismal", "chrismon", "chrisoms", "christen", "christie", "chromate", "chromide", "chromier", "chroming", "chromite", "chromium", "chromize", "chromous", "chromyls", "chronaxy", "chronics", "chronons", "chthonic", "chubasco", "chubbier", "chubbily", "chuckies", "chucking", "chuckled", "chuckler", "chuckles", "chuddahs", "chuddars", "chudders", "chuffest", "chuffier", "chuffing", "chugalug", "chuggers", "chugging", "chukkars", "chukkers", "chummier", "chummily", "chumming", "chumping", "chumship", "chunkier", "chunkily", "chunking", "chunnels", "chunters", "chuppahs", "churched", "churches", "churchly", "churlish", "churners", "churning", "churring", "chutists", "chutnees", "chutneys", "chutzpah", "chutzpas", "chymists", "chymosin", "chytrids", "ciborium", "ciboules", "cicatrix", "cicelies", "cicerone", "ciceroni", "cichlids", "cicisbei", "cicisbeo", "cicorees", "cigarets", "cilantro", "ciliated", "ciliates", "cimbalom", "cinching", "cinchona", "cincture", "cindered", "cineaste", "cineasts", "cineoles", "cinerary", "cinerins", "cingular", "cingulum", "cinnabar", "cinnamic", "cinnamon", "cinnamyl", "cinquain", "cioppino", "ciphered", "cipherer", "cipolins", "circlers", "circlets", "circling", "circuits", "circuity", "circular", "circuses", "cirriped", "cislunar", "cissoids", "cisterna", "cisterns", "cistrons", "cistuses", "citadels", "citation", "citators", "citatory", "citeable", "citharas", "citherns", "cithrens", "citified", "citifies", "citizens", "citrated", "citrates", "citreous", "citrines", "citrinin", "citruses", "citterns", "cityfied", "cityward", "citywide", "civicism", "civilian", "civilise", "civility", "civilize", "clabbers", "clachans", "clackers", "clacking", "claddagh", "cladding", "cladisms", "cladists", "cladodes", "clafouti", "clagging", "claimant", "claimers", "claiming", "clambake", "clambers", "clamlike", "clammers", "clammier", "clammily", "clamming", "clamored", "clamorer", "clamours", "clampers", "clamping", "clamworm", "clangers", "clanging", "clangors", "clangour", "clankier", "clanking", "clannish", "clansman", "clansmen", "clappers", "clapping", "claptrap", "claquers", "claqueur", "clarence", "clarinet", "clarions", "clarkias", "clashers", "clashing", "claspers", "clasping", "classers", "classico", "classics", "classier", "classify", "classily", "classing", "classism", "classist", "classons", "clastics", "clatters", "clattery", "claughts", "claustra", "clavered", "clavicle", "claviers", "clawback", "clawless", "clawlike", "claybank", "clayiest", "claylike", "claymore", "claypans", "clayware", "cleaners", "cleanest", "cleaning", "cleansed", "cleanser", "cleanses", "cleanups", "clearcut", "clearers", "clearest", "clearing", "cleating", "cleavage", "cleavers", "cleaving", "cleeking", "clefting", "cleidoic", "clematis", "clemency", "clenched", "clencher", "clenches", "clergies", "clerical", "clerihew", "clerkdom", "clerking", "clerkish", "cleveite", "cleverer", "cleverly", "clevises", "clickers", "clicking", "cliental", "cliffier", "climatal", "climates", "climatic", "climaxed", "climaxes", "climbers", "climbing", "clinally", "clinched", "clincher", "clinches", "clingers", "clingier", "clinging", "clinical", "clinkers", "clinking", "clippers", "clipping", "cliquier", "cliquing", "cliquish", "clitella", "clitoral", "clitoric", "clitoris", "cloaking", "clobbers", "clochard", "clockers", "clocking", "cloddier", "cloddish", "clodpate", "clodpole", "clodpoll", "cloggers", "cloggier", "cloggily", "clogging", "cloister", "clomping", "clonally", "clonings", "clonisms", "clonking", "clonuses", "clopping", "closable", "closeout", "closeted", "closeups", "closings", "closured", "closures", "clothier", "clothing", "clotting", "clotured", "clotures", "cloudier", "cloudily", "clouding", "cloudlet", "clouring", "clouters", "clouting", "clovered", "clowders", "clownery", "clowning", "clownish", "clubable", "clubbers", "clubbier", "clubbing", "clubbish", "clubface", "clubfeet", "clubfoot", "clubhand", "clubhaul", "clubhead", "clubroom", "clubroot", "clucking", "clueless", "clumbers", "clumpier", "clumping", "clumpish", "clumsier", "clumsily", "clunkers", "clunkier", "clunking", "clupeids", "clupeoid", "clusters", "clustery", "clutched", "clutches", "clutters", "cluttery", "clypeate", "clysters", "coachers", "coaching", "coachman", "coachmen", "coacting", "coaction", "coactive", "coactors", "coadmire", "coadmits", "coaevals", "coagency", "coagents", "coagulum", "coalbins", "coalesce", "coalfish", "coalhole", "coaliest", "coalless", "coalpits", "coalsack", "coalshed", "coalyard", "coamings", "coanchor", "coappear", "coapting", "coarsely", "coarsens", "coarsest", "coassist", "coassume", "coasters", "coasting", "coatings", "coatless", "coatrack", "coatroom", "coattail", "coattend", "coattest", "coauthor", "cobaltic", "cobbiest", "cobblers", "cobbling", "cobwebby", "cocaines", "coccidia", "coccoids", "coccyges", "coccyxes", "cochairs", "cochleae", "cochlear", "cochleas", "cocinera", "cockaded", "cockades", "cockapoo", "cockatoo", "cockbill", "cockboat", "cockcrow", "cockered", "cockerel", "cockeyed", "cockeyes", "cockiest", "cocklike", "cockling", "cockloft", "cockneys", "cockpits", "cockshut", "cockspur", "cocksure", "cocktail", "cocoanut", "cocobola", "cocobolo", "cocomats", "coconuts", "cocooned", "cocoplum", "cocottes", "cocoyams", "cocreate", "coddlers", "coddling", "codebook", "codebtor", "codeinas", "codeines", "codeless", "coderive", "codesign", "codicils", "codified", "codifier", "codifies", "codirect", "codlings", "codpiece", "codriven", "codriver", "codrives", "coedited", "coeditor", "coeffect", "coelomes", "coelomic", "coembody", "coemploy", "coempted", "coenacts", "coenamor", "coendure", "coenures", "coenurus", "coenzyme", "coequals", "coequate", "coercers", "coercing", "coercion", "coercive", "coerects", "coesites", "coevally", "coevolve", "coexerts", "coexists", "coextend", "cofactor", "coffered", "coffined", "coffling", "coffrets", "cofounds", "cogently", "cogitate", "cognates", "cognised", "cognises", "cognized", "cognizer", "cognizes", "cognomen", "cognovit", "cogwheel", "cohabits", "coheaded", "coherent", "coherers", "cohering", "cohesion", "cohesive", "cohobate", "coholder", "cohoshes", "cohosted", "coiffeur", "coiffing", "coiffure", "coigning", "coinable", "coinages", "coincide", "coinfect", "coinfers", "coinhere", "coinmate", "coinsure", "cointers", "coinvent", "coistrel", "coistril", "coitally", "coitions", "coituses", "cojoined", "cokehead", "cokelike", "colander", "coldcock", "coldness", "coleader", "coleseed", "coleslaw", "colessee", "colessor", "coleuses", "colewort", "colicine", "colicins", "coliform", "colinear", "coliseum", "colistin", "collaged", "collagen", "collages", "collapse", "collards", "collared", "collaret", "collated", "collates", "collator", "collects", "colleens", "colleger", "colleges", "collegia", "colleted", "collided", "collider", "collides", "colliers", "colliery", "collogue", "colloids", "colloquy", "colluded", "colluder", "colludes", "colluvia", "collying", "collyria", "coloboma", "colocate", "cologned", "colognes", "colonels", "colonial", "colonics", "colonies", "colonise", "colonist", "colonize", "colophon", "colorado", "colorant", "coloreds", "colorers", "colorful", "coloring", "colorism", "colorist", "colorize", "colorman", "colormen", "colorway", "colossal", "colossus", "colotomy", "coloured", "colourer", "colpitis", "colubrid", "columbic", "columels", "columnal", "columnar", "columnea", "columned", "comakers", "comaking", "comanage", "comatiks", "comatose", "comatula", "combated", "combater", "combined", "combiner", "combines", "combings", "comblike", "combusts", "comeback", "comedian", "comedies", "comedown", "comelier", "comelily", "comember", "cometary", "comether", "comfiest", "comforts", "comfreys", "comingle", "comitial", "comities", "commando", "commands", "commence", "commends", "comments", "commerce", "commixed", "commixes", "commodes", "commoner", "commonly", "commoved", "commoves", "communal", "communed", "communer", "communes", "commuted", "commuter", "commutes", "comorbid", "compacts", "compadre", "compared", "comparer", "compares", "comparts", "compeers", "compends", "compered", "comperes", "competed", "competes", "compiled", "compiler", "compiles", "complain", "compleat", "complect", "complete", "complice", "complied", "complier", "complies", "compline", "complins", "complots", "comports", "composed", "composer", "composes", "composts", "compotes", "compound", "compress", "comprise", "comprize", "compting", "computed", "computer", "computes", "comrades", "comsymps", "conation", "conative", "concaved", "concaves", "conceals", "conceded", "conceder", "concedes", "conceits", "conceive", "concents", "concepti", "concepts", "concerns", "concerti", "concerto", "concerts", "conchies", "conchoid", "conciser", "conclave", "conclude", "concocts", "concords", "concours", "concrete", "condemns", "condense", "condoled", "condoler", "condoles", "condoned", "condoner", "condones", "condores", "conduced", "conducer", "conduces", "conducts", "conduits", "condylar", "condyles", "conelrad", "conenose", "conepate", "conepatl", "confects", "conferee", "conferva", "confetti", "confetto", "confided", "confider", "confides", "confined", "confiner", "confines", "confirms", "conflate", "conflict", "confocal", "conforms", "confound", "confrere", "confront", "confused", "confuses", "confuted", "confuter", "confutes", "congaing", "congeals", "congener", "congests", "conglobe", "congrats", "congress", "conicity", "conidial", "conidian", "conidium", "conifers", "coniines", "conioses", "coniosis", "conjoins", "conjoint", "conjugal", "conjunct", "conjunto", "conjured", "conjurer", "conjures", "conjuror", "connects", "connived", "conniver", "connives", "connoted", "connotes", "conodont", "conoidal", "conquers", "conquest", "conquian", "consents", "conserve", "consider", "consigns", "consists", "consoled", "consoler", "consoles", "consomme", "consorts", "conspire", "constant", "construe", "consular", "consults", "consumed", "consumer", "consumes", "contacts", "contagia", "contains", "contemns", "contempo", "contempt", "contends", "contents", "contessa", "contests", "contexts", "continua", "continue", "continuo", "contorts", "contours", "contract", "contrail", "contrary", "contrast", "contrite", "contrive", "controls", "contused", "contuses", "convects", "convened", "convener", "convenes", "convenor", "convents", "converge", "converse", "converso", "converts", "convexes", "convexly", "conveyed", "conveyer", "conveyor", "convicts", "convince", "convoked", "convoker", "convokes", "convolve", "convoyed", "convulse", "cooeeing", "cooeying", "cooingly", "cookable", "cookbook", "cookings", "cookless", "cookoffs", "cookouts", "cookshop", "cooktops", "cookware", "coolants", "cooldown", "coolness", "cooncans", "coonskin", "coonties", "coopered", "coopting", "cooption", "copaibas", "coparent", "copastor", "copatron", "copemate", "copepods", "copihues", "copilots", "coplanar", "copperah", "copperas", "coppered", "coppiced", "coppices", "copremia", "copremic", "coprince", "copulate", "copurify", "copyable", "copybook", "copyboys", "copycats", "copydesk", "copyedit", "copygirl", "copyhold", "copyists", "copyleft", "copyread", "coquetry", "coquette", "coquille", "coquinas", "coquitos", "coracles", "coracoid", "corantos", "corbeils", "corbeled", "corbinas", "cordages", "cordelle", "cordials", "cordings", "cordites", "cordless", "cordlike", "cordobas", "cordoned", "cordovan", "corduroy", "cordwain", "cordwood", "coredeem", "coreigns", "corelate", "coreless", "coremium", "corkages", "corkiest", "corklike", "corkwood", "cormlike", "cornball", "corncake", "corncobs", "corncrib", "corneous", "cornered", "cornetcy", "cornhusk", "corniced", "cornices", "corniche", "cornicle", "corniest", "cornmeal", "cornpone", "cornrows", "cornuses", "cornuted", "cornutos", "corodies", "corollas", "coronach", "coronals", "coronary", "coronate", "coronels", "coroners", "coronets", "coronoid", "corotate", "corporal", "corpsman", "corpsmen", "corpuses", "corraded", "corrades", "corrects", "corridas", "corridor", "corrival", "corroded", "corrodes", "corrupts", "corsages", "corsairs", "corselet", "corseted", "corsetry", "corslets", "corteges", "cortexes", "cortical", "cortices", "cortinas", "cortisol", "corulers", "corundum", "corvette", "corvinas", "corybant", "corymbed", "coryphee", "coscript", "cosecant", "coshered", "cosigned", "cosigner", "cosiness", "cosmetic", "cosmical", "cosmisms", "cosmists", "cosmoses", "cossacks", "cosseted", "costally", "costards", "costless", "costlier", "costmary", "costrels", "costumed", "costumer", "costumes", "costumey", "cotenant", "coteries", "cothurni", "cothurns", "cotillon", "cotingas", "cotinine", "cotquean", "cottager", "cottages", "cottagey", "cottered", "cottiers", "cottoned", "coturnix", "cotyloid", "couchant", "couchers", "couching", "coughers", "coughing", "couldest", "coulisse", "couloirs", "coulombs", "coulters", "coumaric", "coumarin", "coumarou", "councils", "counsels", "counters", "countess", "countian", "counties", "counting", "couplers", "couplets", "coupling", "courages", "courante", "couranto", "courants", "couriers", "courlans", "coursers", "coursing", "courters", "courtesy", "courtier", "courting", "couscous", "cousinly", "cousinry", "couteaux", "couthest", "couthier", "coutures", "couvades", "covalent", "covaried", "covaries", "covenant", "coverage", "coverall", "coverers", "covering", "coverlet", "coverlid", "covertly", "coverups", "coveters", "coveting", "covetous", "cowardly", "cowbanes", "cowbells", "cowberry", "cowbinds", "cowbirds", "cowboyed", "cowering", "cowflaps", "cowflops", "cowgirls", "cowhages", "cowhands", "cowherbs", "cowherds", "cowhided", "cowhides", "cowinner", "cowlicks", "cowlings", "coworker", "cowplops", "cowpokes", "cowpoxes", "cowriter", "cowrites", "cowsheds", "cowskins", "cowslips", "coxalgia", "coxalgic", "coxcombs", "coxswain", "cozenage", "cozeners", "cozening", "coziness", "craaling", "crabbers", "crabbier", "crabbily", "crabbing", "crablike", "crabmeat", "crabwise", "crackers", "cracking", "crackled", "crackles", "cracknel", "crackpot", "crackups", "cradlers", "cradling", "crafters", "craftier", "craftily", "crafting", "craggier", "craggily", "cragsman", "cragsmen", "cramboes", "crammers", "cramming", "cramoisy", "crampier", "cramping", "crampits", "crampons", "crampoon", "cranched", "cranches", "craniate", "craniums", "crankest", "crankier", "crankily", "cranking", "crankish", "crankled", "crankles", "crankous", "crankpin", "crannied", "crannies", "crannoge", "crannogs", "crapolas", "crappers", "crappier", "crappies", "crapping", "crashers", "crashing", "crassest", "cratches", "cratered", "cratonic", "cravened", "cravenly", "cravings", "crawdads", "crawfish", "crawlers", "crawlier", "crawling", "crawlway", "crayfish", "crayoned", "crayoner", "craziest", "creakier", "creakily", "creaking", "creamers", "creamery", "creamier", "creamily", "creaming", "creasers", "creasier", "creasing", "creatine", "creating", "creatins", "creation", "creative", "creators", "creature", "credence", "credenda", "credenza", "credible", "credibly", "credited", "creditor", "creeling", "creepage", "creepers", "creepier", "creepies", "creepily", "creeping", "creeshed", "creeshes", "cremains", "cremated", "cremates", "cremator", "creminis", "crenated", "creneled", "crenelle", "crenshaw", "creodont", "creolise", "creolize", "creosols", "creosote", "crepiest", "crescent", "crescive", "cressets", "cresting", "cresylic", "cretonne", "crevalle", "crevasse", "creviced", "crevices", "crewcuts", "crewless", "crewmate", "crewneck", "cribbage", "cribbers", "cribbing", "cribbled", "cribrous", "cribwork", "cricetid", "crickets", "cricking", "cricoids", "criminal", "criminis", "crimmers", "crimpers", "crimpier", "crimping", "crimpled", "crimples", "crimsons", "cringers", "cringing", "cringles", "crinites", "crinkled", "crinkles", "crinoids", "criollos", "crippled", "crippler", "cripples", "crispate", "crispens", "crispers", "crispest", "crispier", "crispily", "crisping", "cristate", "criteria", "critical", "critique", "critters", "critturs", "croakers", "croakier", "croakily", "croaking", "croceine", "croceins", "crochets", "crockery", "crockets", "crocking", "crockpot", "crocoite", "crocuses", "crofters", "cromlech", "cronyism", "crookery", "crookest", "crooking", "crooners", "crooning", "cropland", "cropless", "croppers", "croppies", "cropping", "croquets", "crosiers", "crossarm", "crossbar", "crossbow", "crosscut", "crossers", "crossest", "crossing", "crosslet", "crosstie", "crossway", "crostini", "crostino", "crotched", "crotches", "crotchet", "crouched", "crouches", "croupier", "croupily", "croupous", "crousely", "croutons", "crowbars", "crowders", "crowdies", "crowding", "crowfeet", "crowfoot", "crowners", "crownets", "crowning", "crowstep", "croziers", "crucians", "cruciate", "crucible", "crucifer", "crucifix", "cruddier", "crudding", "crudites", "cruelest", "crueller", "cruisers", "cruising", "crullers", "crumbers", "crumbier", "crumbing", "crumbled", "crumbles", "crumbums", "crumhorn", "crummier", "crummies", "crumpets", "crumping", "crumpled", "crumples", "crunched", "cruncher", "crunches", "crunodal", "crunodes", "cruppers", "crusaded", "crusader", "crusades", "crusados", "crushers", "crushing", "crustier", "crustily", "crusting", "crustose", "crutched", "crutches", "cruzados", "cruzeiro", "cryingly", "cryobank", "cryogens", "cryogeny", "cryolite", "cryonics", "cryostat", "cryotron", "crystals", "ctenidia", "cubature", "cubicity", "cubicles", "cubicula", "cubiform", "cubistic", "cuboidal", "cuckolds", "cuckooed", "cucumber", "cucurbit", "cudbears", "cuddlers", "cuddlier", "cuddling", "cudgeled", "cudgeler", "cudweeds", "cuffless", "cufflink", "cuisines", "cuittled", "cuittles", "culicids", "culicine", "culinary", "cullions", "cullises", "cullying", "culottes", "culpable", "culpably", "culprits", "cultches", "cultigen", "cultisms", "cultists", "cultivar", "cultlike", "cultrate", "cultural", "cultured", "cultures", "cultuses", "culverin", "culverts", "cumarins", "cumbered", "cumberer", "cumbrous", "cumquats", "cumshaws", "cumulate", "cumulous", "cuneated", "cuneatic", "cuniform", "cunnings", "cupboard", "cupcakes", "cupelers", "cupeling", "cupelled", "cupeller", "cupidity", "cupolaed", "cuppiest", "cuppings", "cupreous", "cuprites", "cupulate", "curacaos", "curacies", "curacoas", "curarine", "curarize", "curassow", "curating", "curative", "curators", "curbable", "curbings", "curbside", "curculio", "curcumas", "curdiest", "curdlers", "curdling", "cureless", "curetted", "curettes", "curlicue", "curliest", "curlings", "curlycue", "currachs", "curraghs", "currants", "currency", "currents", "curricle", "curriers", "curriery", "currying", "curseder", "cursedly", "cursives", "curtails", "curtains", "curtalax", "curtness", "curtseys", "curtsied", "curtsies", "curvedly", "curveted", "curviest", "cuscuses", "cushiest", "cushions", "cushiony", "cuspated", "cuspidal", "cuspides", "cuspidor", "cussedly", "cussword", "custards", "custardy", "custodes", "customer", "custumal", "cutaways", "cutbacks", "cutbanks", "cutchery", "cutdowns", "cuteness", "cutesier", "cutgrass", "cuticles", "cuticula", "cutinise", "cutinize", "cutlases", "cutlines", "cutovers", "cutpurse", "cuttable", "cuttages", "cuttings", "cuttling", "cutwater", "cutworks", "cutworms", "cuvettes", "cyanamid", "cyanates", "cyanided", "cyanides", "cyanines", "cyanites", "cyanitic", "cyanogen", "cyanosed", "cyanoses", "cyanosis", "cyanotic", "cybersex", "cycasins", "cyclamen", "cyclases", "cyclecar", "cycleway", "cyclical", "cyclicly", "cyclings", "cyclists", "cyclitol", "cyclized", "cyclizes", "cycloids", "cyclonal", "cyclones", "cyclonic", "cyclopes", "cycloses", "cyclosis", "cylinder", "cymatium", "cymbaler", "cymbalom", "cymbidia", "cymbling", "cymlings", "cymogene", "cymosely", "cynicism", "cynosure", "cyphered", "cypreses", "cyprians", "cyprinid", "cypruses", "cypselae", "cysteine", "cysteins", "cystines", "cystitis", "cystoids", "cytaster", "cytidine", "cytogeny", "cytokine", "cytology", "cytosine", "cytosols", "czardoms", "czarevna", "czarinas", "czarisms", "czarists", "czaritza", "dabblers", "dabbling", "dabchick", "dabsters", "dackered", "dactylic", "dactylus", "dadaisms", "dadaists", "daddling", "daemones", "daemonic", "daffiest", "daffodil", "daftness", "daggered", "daggling", "daglocks", "dagwoods", "dahabeah", "dahabiah", "dahabieh", "dahabiya", "daidzein", "daikered", "daimones", "daimonic", "daintier", "dainties", "daintily", "daiquiri", "dairying", "dairyman", "dairymen", "daishiki", "dakerhen", "dalapons", "dalesman", "dalesmen", "dalliers", "dallying", "dalmatic", "daltonic", "damagers", "damaging", "damasked", "damewort", "damianas", "damnable", "damnably", "damndest", "damneder", "damosels", "damozels", "dampened", "dampener", "dampings", "dampness", "danazols", "dandered", "dandiest", "dandlers", "dandling", "dandriff", "dandruff", "dandyish", "dandyism", "danegeld", "danegelt", "daneweed", "danewort", "dangered", "danglers", "danglier", "dangling", "danishes", "dankness", "danseurs", "danseuse", "daphnias", "dapperer", "dapperly", "dappling", "dapsones", "daringly", "darioles", "darkened", "darkener", "darklier", "darkling", "darkness", "darkroom", "darksome", "darlings", "darndest", "darneder", "darnings", "darshans", "dartling", "dasheens", "dashiest", "dashikis", "dashpots", "dastards", "dasyures", "databank", "database", "dataries", "dateable", "datebook", "dateless", "dateline", "datively", "daubiest", "daubries", "daughter", "daunders", "daunters", "daunting", "dauphine", "dauphins", "davening", "dawdlers", "dawdling", "dawnlike", "daybooks", "daybreak", "daycares", "daydream", "dayflies", "dayglows", "daylight", "daymares", "dayrooms", "daysides", "daystars", "daytimes", "dayworks", "dazzlers", "dazzling", "deaconed", "deaconry", "deadbeat", "deadbolt", "deadened", "deadener", "deadeyes", "deadfall", "deadhead", "deadlier", "deadlift", "deadline", "deadlock", "deadness", "deadpans", "deadwood", "deaerate", "deafened", "deafness", "deairing", "dealated", "dealates", "dealfish", "dealings", "deanship", "dearness", "deashing", "deathbed", "deathcup", "deathful", "debacles", "debagged", "debarked", "debarker", "debarred", "debasers", "debasing", "debaters", "debating", "debeaked", "debeards", "debility", "debiting", "debonair", "deboners", "deboning", "debouche", "debrided", "debrides", "debriefs", "debruise", "debtless", "debugged", "debugger", "debunked", "debunker", "debutant", "debuting", "decadent", "decagons", "decagram", "decalogs", "decamped", "decanted", "decanter", "decapods", "decayers", "decaying", "deceased", "deceases", "decedent", "deceived", "deceiver", "deceives", "decemvir", "decenary", "decennia", "decenter", "decently", "decentre", "decerned", "deciares", "decibels", "deciders", "deciding", "deciduae", "decidual", "deciduas", "decigram", "decimals", "decimate", "decipher", "decision", "decisive", "deckhand", "deckings", "declaims", "declared", "declarer", "declares", "declasse", "declawed", "declined", "decliner", "declines", "decocted", "decoders", "decoding", "decolors", "decolour", "decorate", "decorous", "decorums", "decouple", "decoyers", "decoying", "decrease", "decreers", "decrepit", "decretal", "decrials", "decriers", "decrowns", "decrying", "decrypts", "decupled", "decuples", "decuries", "decurion", "decurved", "decurves", "dedicate", "deducing", "deducted", "deediest", "deedless", "deejayed", "deemster", "deepened", "deepener", "deepness", "deerlike", "deerskin", "deerweed", "deeryard", "defacers", "defacing", "defamers", "defaming", "defanged", "defatted", "defaults", "defeated", "defeater", "defecate", "defected", "defector", "defenced", "defences", "defended", "defender", "defensed", "defenses", "deferent", "deferral", "deferred", "deferrer", "defiance", "deficits", "defilade", "defilers", "defiling", "definers", "defining", "definite", "deflated", "deflater", "deflates", "deflator", "defleaed", "deflects", "deflexed", "deflower", "defoamed", "defoamer", "defogged", "defogger", "deforced", "deforcer", "deforces", "deforest", "deformed", "deformer", "defrauds", "defrayal", "defrayed", "defrayer", "defrocks", "defrosts", "deftness", "defueled", "defunded", "defusers", "defusing", "defuzing", "degassed", "degasser", "degasses", "degender", "degermed", &quo