On Sun, Apr 12, 2009 at 18:34, Andrew Fithian <afit...@gmail.com> wrote: > Hello everyone, > I have a program that needs to find straights in a hand of cards. The hand > is a string with no whitespace sorted by the cards' ranks, eg "9d10cJhQsKd". > How can I identify if that hand contains a straight with a single regex? Is > that even possible? > Is there a way to escape the regex and do addition on a backreference to get > something like /(\d+)[cdhs]\1+1[cdhs]\1+2/? > Thanks, > -Andrew >
It is easier to just build it: #!/usr/bin/perl use strict; use warnings; my @rank = qw/ 2 3 4 5 6 7 8 9 10 J Q K A /; my @hands; for my $i (0 .. 9) { push @hands, join '', map { $_ . "[cdhs]" } @rank[$i .. $i+4]; } my $re = join '|', @hands; $re = qr/^$re$/; for my $s (qw/ 9d10cJhQsKd 8c10cJhQsKd /) { print "$s ", $s =~ /$re/ ? "is" : "isn't", " a straight\n"; } -- Chas. Owens wonkden.net The most important skill a programmer can have is the ability to read. -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/