summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjluehrs2 <jluehrs2@uiuc.edu>2008-02-01 23:14:22 -0500
committerjluehrs2 <jluehrs2@uiuc.edu>2008-02-01 23:14:22 -0500
commiteb43d2e2d8c874fe71a3b0bae6bd3f5e64638bfd (patch)
treea1315f08a62d2e251b87d6486733ad61c8b17831
parent9c4f9eaf7ed81e259dde80a2f3ac050738cc7c60 (diff)
downloadgames-word-eb43d2e2d8c874fe71a3b0bae6bd3f5e64638bfd.tar.gz
games-word-eb43d2e2d8c874fe71a3b0bae6bd3f5e64638bfd.zip
implement random_string_from, which returns a string containing random characters from some character list
-rw-r--r--lib/Games/Word.pm14
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/Games/Word.pm b/lib/Games/Word.pm
index 3aae86c..7b281f5 100644
--- a/lib/Games/Word.pm
+++ b/lib/Games/Word.pm
@@ -3,7 +3,8 @@ package Games::Word;
require Exporter;
@ISA = qw/Exporter/;
@EXPORT_OK = qw/random_permutation is_permutation all_permutations
- shared_letters shared_letters_by_position/;
+ shared_letters shared_letters_by_position
+ random_string_from/;
use strict;
use warnings;
@@ -89,6 +90,17 @@ sub shared_letters_by_position {
return wantarray ? @letters : grep { defined } @letters;
}
+sub random_string_from {
+ my ($letters, $length) = @_;
+
+ die "invalid letter list" if length $letters < 1 && $length > 0;
+ my @letters = split //, $letters;
+ my $ret = '';
+ $ret .= $letters[int rand @letters] for 1..$length;
+
+ return $ret;
+}
+
=head1 NAME
Games::Word - ???