summaryrefslogtreecommitdiffstats
path: root/bin/jotto.pl
diff options
context:
space:
mode:
Diffstat (limited to 'bin/jotto.pl')
-rw-r--r--bin/jotto.pl35
1 files changed, 35 insertions, 0 deletions
diff --git a/bin/jotto.pl b/bin/jotto.pl
new file mode 100644
index 0000000..cab1a9d
--- /dev/null
+++ b/bin/jotto.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Games::Word qw/shared_letters/;
+use Games::Word::Wordlist;
+
+my $wl = Games::Word::Wordlist->new('/usr/share/dict/words');
+$wl->remove_words($wl->words_like(qr/^(\w{0,4}|\w{6,})$/));
+$wl->remove_words($wl->words_like(qr/^[A-Z]/));
+my $word = $wl->random_word;
+my $guesses = 0;
+while (1) {
+ print "Guess a word: ";
+ my $guess = <>;
+ chomp $guess;
+
+ if ($guess eq '.') {
+ print "The word was $word\n";
+ exit;
+ }
+ if (length $guess != 5) {
+ print "Word must be 5 letters long.\n";
+ next;
+ }
+ if (!$wl->is_word($guess)) {
+ print "$guess is not a word.\n";
+ next;
+ }
+ $guesses++;
+ last if $guess eq $word;
+
+ my $correct = shared_letters $word, $guess;
+ printf "You got $correct letter%s correct.\n", $correct == 1 ? "" : "s";
+}
+print "You win in $guesses guesses!\n";