/weldor

A reactive AI designed to assist you with Wordle variants

Primary LanguagePythonMIT LicenseMIT

weldor in Action!InstallationWorld of WordleModifying weldorLicense

weldor is a simple reactive AI designed to assist you in playing Wordle and some of its derivatives. Rather than just giving you a single answer with the highest entropy at each step, weldor combines a classic combinatorics concept to give you multiple choices for your turns. By reducing Wordle variants to a game of deduction that still allows for gambling, rather than memorization or recall, weldor allows the player to both enjoy and win these games in a few rounds. You can also change the dictionary used by weldor for other variants.

You can try `weldor` live on repl.it at https://replit.com/@bioalgorithmist/weldor#.replit

weldor in Action!

 $ weldor              # type in "weldor" in your terminal and press ENTER to start

 weldor v2.7.2022      # program and version
 by ah                 # author

 guile (played)        # let's say you played "guile"
 ---*+                 # (feedback must have silvers as "-", greens as "*" and yellows as "+")
 newly (secret)        # "---*+" is then the encoded feedback if the secret was "newly" (true?)

 enter word: no idea   # weldor asks you to enter a word, but you say "no idea"

  try these?           # weldor then searches the space and proposes the following words
   - shirt (15 hcov)   #
   - first (15 hcov)   # the words and their information scores
   - skirt (15 hcov)   # are presented in sorted order for your
   - wrist (15 hcov)   # evaluation
   - strip (15 hcov)   #
   - arise (5.82 bits) # words selected based on high entropy are scored in bits and help
   - trace (5.83 bits) # in quickly eliminating large sections of the search space,
   - irate (5.83 bits) # while cover words are scored by differential alphabet coverage
   - crate (5.83 bits) #
   - slate (5.86 bits) # however, these are only suggestions,
   - raise (5.88 bits) # and you're free to ignore them

 enter word: grate     # instead of choosing "irate" or "crate" you play "grate" (the defiance!)
   feedback: -----     # and you're faced with all silvers in response (lol)

  try these?           # analyzing the outcome, weldor suggests the following
   - solid (19 hcov)   #
   - spoil (5.39 bits) # words with cover scores (scov and hcov) are selected to eliminate
   - slick (5.39 bits) # as many high entropy words as possible (tie-breaker); hcov words
   - noisy (5.40 bits) # are hard-mode compliant, but scov words may not be so
   - could (5.42 bits) #
   - lousy (5.42 bits) # you can opt to play a cover word with high value when the high
   - slimy (5.42 bits) # entropy words are very similar to each other in composition

 enter word: solid     # you decide to play "solid" which does a solid job of differentially
   feedback: -++--     # eliminating all words selected based on entropy

  try these?           # another round of suggestions from weldor!
   - knoll (6 hcov)    #
   - flown (2.16 bits) #     what the heck is a knoll?? is that a real word?
   - clock (2.16 bits) #
   - blown (2.25 bits) # the high entropy words are starting to look
   - flock (2.50 bits) # similar in composition, so maybe play another
   - clown (2.50 bits) # cover? or maybe not, they're not all the same
   - block (2.50 bits) # if you look at it carefully ... ?

 enter word: flock     # you choose flock ...
   feedback: -+*-+     # and enter the feedback from Wordle

  try this!!           # and et voila!
   - knoll (0.00 bits) # that just leaves you with one word to try and win this
   - pogchamp!         # (but maybe you could have won earlier with knoll..)

 weldor out!           # so long, weldor

Installation

weldor is pure-python, and requires Python 3.6 or above. It was developed and tested using Ubuntu Linux on Windows Subsystem for Linux but it should also be compatible with macOS.

Note: there may be some issues related to the GNU readline library on macOS which weldor needs to enable the use of , , and keys for selecting the words from suggested lists.

Installation is very easy with pip.

On your terminal, just use pip like so

$ pip install --upgrade weldor

and that should be it!

Uninstallation of weldor is easily done using

$ pip uninstall weldor

World of Wordle

Since its release Wordle has garnered the attention of everyone everywhere. Variants have emerged.

  • Wordle. The classic, with one secret word you have to guess daily. The goal is to solve the puzzle in 6 attempts or less. weldor can be used directly here.

  • Wordle Archive. A collection of all past Wordle games published so far. Also features a randomized Wordle as well as a Word Race. Use weldor to beat others in races.

  • Absurdle. An adversarial version of Wordle that is designed to prolong the game. I am not exactly sure, but, Absurdle tries to eliminate your proposed words as much as possible, as long as there are other words it can switch to from the one it selected initially that are all compatible with previously generated colored feedback. The best strategy here with weldor is to not always play the highest entropy word at each step, but play a couple of random/fun ones that might throw the adversary off a little bit.

  • Dordle. A randomized version of Wordle in which you have to guess two different words by proposing a single five-letter word for both. Definitely a good version to play with weldor. My strategy here is to start two separate weldor sessions, play the same word with both but based on the two feedback, continue with the word that has the highest entropy from both sessions combined.

  • Quordle. Similar to Dordle, but you gotta guess 4 words with a single proposal. So, you'd need 4× weldor sessions.

  • Word Master and hello wordl. Unlimited Wordle clones. The hello wordl variant allows the use of different length words, which means you'll need to modify the dictionaries weldor uses under the hood (see next section). Check this repo to obtain a collection of 466,000+ English words of various length. You'll need to write your own code to filter for words of a certain length.

  • Lewdle. Like Wordle, but with lewd words. I know where to find the dictionary, but I don't think I need weldor for this variant.

  • A host of topical clones. There are so many custom Wordle variants that use custom dictionaries, beyond just the ones from the English language, including Numble and Nerdle. For Nerdle in particular, one can enumerate all 1,139,062,500 possible equations, evaluate them for mathematical correctness, and then save the filtered ones in a plaintext dictionary. For others, you might have to go through the game's page source or open reddit threads.

Modifying weldor

To modify weldor, you'll need to clone this repository.

$ git clone https://github.com/ayaanhossain/weldor.git

Once cloned, you can replace the two dictionaries, inside /weldor/weldor/wordbase/, named shell.txt and index.txt.

$ ll weldor/weldor/wordbase
total 92
drwxrwxrwx 1 owner owner  4096 Feb 7 23:55 ./
drwxrwxrwx 1 owner owner  4096 Feb 7 23:55 ../
-rwxrwxrwx 1 owner owner 13889 Feb 7 23:55 index.txt*
-rwxrwxrwx 1 owner owner 74597 Feb 7 23:55 shell.txt*

The shell.txt file stores all guesses that are valid, but not really the answers, while index.txt file stores the answers -- direct Wordle clones use this discrimination.

If your variant does not have separated concepts of shell and index, then put your word list as an index.txt, and leave the shell.txt blank.

Please also feel free to change the logic in propose_words(...) function inside weldor.py (or anything else for that matter) to suit your needs as well as modify the wordbaseset variable to include your alphabets. If you come up with some cool modification to weldor, I'd love to hear about it (open an issue, maybe?).

Once you've modified weldor, simply use

$ python setup.py install

from the main directory to install your modified version.

License

weldor (c) 2022 Ayaan Hossain.

weldor is an open-source software under MIT License.

See LICENSE file for more details.