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