in reply to Regex to compare (if) two strings (Uniquely - I will explain inside)
G'day chickenlips,
Here's a solution using index and splice. (Obviously, you'll need to use your code to generate the random word - I've just allowed entering it from the command line for testing purposes.)
$ perl -Mstrict -Mwarnings -E ' print q{Random word: }; RAND: while (my $randword = <>) { chomp $randword; say "Input words using only letters in: $randword"; INPUT: while (my $inword = <>) { chomp $inword; my @randchars = split q{} => $randword; my $char_count = 0; CHAR: for my $in_char (split q{}, $inword) { ++$char_count; my $pos = index join(q{} => @randchars), $in_char; if ($pos >= 0) { splice @randchars, $pos, 1; } else { say "Failed on char: $in_char (at position $char_count +)"; next INPUT; } } say "$inword OK"; } print q{Random word: }; } print "\n"; '
Here's a sample run:
Random word: qqwe Input words using only letters in: qqwe ew ew OK ewq ewq OK ewqq ewqq OK qewq qewq OK qqewq Failed on char: q (at position 5) qqqwe Failed on char: q (at position 3) Random word: aaaabcde Input words using only letters in: aaaabcde qwe Failed on char: q (at position 1) asd Failed on char: s (at position 2) abcdef Failed on char: f (at position 6) abcde abcde OK aaaab aaaab OK aaaaab Failed on char: a (at position 5) Random word: ^D
-- Ken
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Regex to compare (if) two strings (Uniquely - I will explain inside)
by Zambozo (Initiate) on Nov 30, 2012 at 18:17 UTC | |
by frozenwithjoy (Priest) on Nov 30, 2012 at 20:17 UTC | |
by kcott (Archbishop) on Dec 02, 2012 at 04:09 UTC |
In Section
Seekers of Perl Wisdom