Hacker News new | ask | show | jobs
by nanis 1612 days ago
Correction: I thought this was script to solve Wordle puzzles, so I provided a cheat helper below. At first blush, I thought the idea was for the human to feed this script information back from Wordle so it could improve its guesses. Sigh

Also, you really need better names for your methods and variables, starting with this bit here: https://github.com/KevinXuxuxu/wordle_machine/blob/64a8534ad...

As you think about a better way to name those, you will realize it is possible to do this in a much less convoluted way.

Hmmm, I have been using this Perl script:

    #!/usr/bin/env perl

    use strict;
    use warnings;

    use feature 'say';

    my @words = grep # Add conditions below 
        !/^[A-Z]/,
        grep length == 5,
        map split, do { local $/; <> };

    say for @words
Invoke it from the command line with your word list. I've been lazy, so I use `./wg /usr/share/dict/words` which means way more options than a more tailored word list would give which means I am only cheating a little. So, for example, I type "amber" as my first move and I am told "e" is in the wrong spot and none of the other letters match, I update the selection using that information:

    my @words = grep # Add conditions below
        !/^...e/  &&
         /e/      &&
        !/[ambr]/ &&
        !/^[A-Z]/,
        grep length == 5,
        map split, do { local $/; <> };
1 comments

Thanks for the reply! I really appreciate your feedback on this. I wasn't giving much thought about coding style and naming etc. when I worked on this, just wanted to get it running asap. I'll definitely take a better look at your suggestion (I'm not very familiar with perl) and see if I find any time to improve this thing. cheers.
My cheat script will not help with refactoring your code, but note that with a helper data structure, you do not need multiple passes over the guess to mark each letter in one of three states. Write down the process in human language first, then write the code to do the thing instead of immediately diving into the code and rearranging it until it produces the desired result.

These exercises are great at improving your intuition and aptitude for refactoring code in a way that makes it more maintainable, easier to read and reason about.