NAME

Game::WordBrain::Prefix - Creates a Cache of Valid Word Prefixes

SYNOPSIS

    # Create new Prefix Cache
    my $prefix = Game::WordBrain::Prefix->new({
        max_prefix_length => 5,                     # Optional
        word_list         => '/path/to/wordlist',   # Optional
    });

    # Test if a string could be the start of a word
    my $start_of_word = 'fla';
    if( $prefix->is_start_of_word( $start_of_word ) ) {
        print "Could be a word...";
    }
    else {
        print "Nope, no way this is going to be a word.";
    }

DESCRIPTION

Game::WordBrain::Prefix is the largest speedup afforded to the Game::WordBrain->solve method. It works by reading in a wordlist and using it to construct a hash of valid word prefixes. As an example, let's take the word "flag"

    {
        'f'    => 1,
        'fl'   => 1,
        'fla'  => 1,
        'flag' => 1,
    }

By creating this Game::WordBrain is able to check if the current path being walked ( collection of Game::WordBrain::Letters ) could possibly ever be a real word. By leverage the fact that, for example, no word in the english language starts with 'flaga' we can short circuit and abandon a path that will not lead to a solution sa fast as possible.

ATTRIBUTES

max_prefix_length

The length of the prefixes to build. This should equal the max Game::WordBrain::WordToFind->{num_letters}. If not provided, it defaults to 8.

Keep in mind, the larger this value the longer the spin up time needed in order to run the solver.

word_list

Path to a new line delimited word_list. If not provided, the wordlist provided with this distrubtion will be used.

METHODS

new

    my $prefix = Game::WordBrain::Prefix->new({
        max_prefix_length => 5,                     # Optional
        word_list         => '/path/to/wordlist',   # Optional
    });

If the max_prefix length is not specified it will default to 8. If no word_list is specified then the bundled wordlist will be used.

Returns an instance of Game::WordBrain::Prefix

is_start_of_word

    my $prefix        = Game::WordBrain::Prefix->...;
    my $start_of_word = 'fla';

    if( $prefix->is_start_of_word( $start_of_word ) ) {
        print "Could be a word...";
    }
    else {
        print "Nope, no way this is going to be a word.";
    }

Given a string, will check to seeif there are any words in the provided word_list that start with this string. If there are ( meaning this could become a real word at some point ) a truthy value is returned. If not, a falsey value is returned.