From ac7fd1b400c0a4d11047f80fd151c5df84c9d1a9 Mon Sep 17 00:00:00 2001 From: jluehrs2 Date: Fri, 1 Feb 2008 23:16:17 -0500 Subject: add a few example utilities --- bin/mastermind.pl | 19 +++++++++++++++++++ bin/solve-ghost.pl | 8 ++++++++ bin/solve-superghost.pl | 8 ++++++++ bin/solve-xghost.pl | 9 +++++++++ 4 files changed, 44 insertions(+) create mode 100644 bin/mastermind.pl create mode 100644 bin/solve-ghost.pl create mode 100644 bin/solve-superghost.pl create mode 100644 bin/solve-xghost.pl (limited to 'bin') diff --git a/bin/mastermind.pl b/bin/mastermind.pl new file mode 100644 index 0000000..b48cf4c --- /dev/null +++ b/bin/mastermind.pl @@ -0,0 +1,19 @@ +#!/usr/bin/perl +use strict; +use warnings; +use Games::Word qw/random_string_from shared_letters + shared_letters_by_position/; + +my $word = random_string_from "abcdefg", 5; +while (1) { + print "Guess? "; + my $guess = <>; + chomp $guess; + last if $guess eq $word; + my $gears = shared_letters_by_position $guess, $word; + my $tumblers = shared_letters($guess, $word) - $gears; + printf "You hear $tumblers tumbler%s and $gears gear%s.\n", + $tumblers == 1 ? '' : 's', + $gears == 1 ? '' : 's'; +} +print "You see the drawbridge open.\n"; diff --git a/bin/solve-ghost.pl b/bin/solve-ghost.pl new file mode 100644 index 0000000..ec59165 --- /dev/null +++ b/bin/solve-ghost.pl @@ -0,0 +1,8 @@ +#!/usr/bin/perl +use strict; +use warnings; +use Games::Word::Wordlist; + +my $start = $ARGV[0] or die "Usage: $0 \n"; +my $wl = Games::Word::Wordlist->new('/usr/share/dict/words'); +print "$_\n" for $wl->words_like(qr/^\Q$ARGV[0]/i); diff --git a/bin/solve-superghost.pl b/bin/solve-superghost.pl new file mode 100644 index 0000000..b020057 --- /dev/null +++ b/bin/solve-superghost.pl @@ -0,0 +1,8 @@ +#!/usr/bin/perl +use strict; +use warnings; +use Games::Word::Wordlist; + +my $start = $ARGV[0] or die "Usage: $0 \n"; +my $wl = Games::Word::Wordlist->new('/usr/share/dict/words'); +print "$_\n" for $wl->words_like(qr/\Q$ARGV[0]/i); diff --git a/bin/solve-xghost.pl b/bin/solve-xghost.pl new file mode 100644 index 0000000..ebfa864 --- /dev/null +++ b/bin/solve-xghost.pl @@ -0,0 +1,9 @@ +#!/usr/bin/perl +use strict; +use warnings; +use Games::Word::Wordlist; + +my $start = $ARGV[0] or die "Usage: $0 \n"; +my $wl = Games::Word::Wordlist->new('/usr/share/dict/words'); +my $re = join '.*', split(//, $ARGV[0]); +print "$_\n" for $wl->words_like(qr/$re/i); -- cgit v1.2.3-54-g00ecf