Perl Monk, Perl Meditation PerlMonks

### Comment on

 Need Help??
Let me give round one a try... There must be a better way of doing this...
```use strict;
use warnings;
use Algorithm::Loops qw/ NestedLoops /;
use Data::Dumper;

my @patterns = (
[ 0, 1, 2 ],
[ 0, 3, 6 ],
[ 0, 4, 8 ],
[ 1, 4, 7 ],
[ 2, 5, 8 ],
[ 2, 4, 6 ],
[ 3, 4, 5 ],
[ 6, 7, 8 ],
);

while (<DATA>) {
chomp(my @input = split /\s+/, \$_);
my @combinations = ();

NestedLoops([ [@input],
( sub {
my %used;
@used{@_}= (1) x @_;
return [ grep !\$used{\$_}, @input ];
} ) x (2),
],
sub {
push @combinations, [ @_ ];
return 1;
});

my @output = map { Validate(\@input, \$_) ? \$_ : () } @combinations
+;
print "@input:\n", @output ? Dumper(\@output) : "Not possible", "\
+n\n";
}

sub Validate
{
my (\$input, \$c) = @_;
my %p = map { \$_ => 1 } @\$c;
my @diff = map { \$p{\$_} ? () : \$_ } @\$input;

foreach (@diff) {
return 0 if !Canfit(\$c, \$_);
}
return 1
}

sub Canfit
{
my (\$c, \$e) = @_;
my @l = map { split //, \$_ } @\$c;

foreach (@patterns) {
my \$text = join '', @l[ @\$_ ];
return 1 if \$text eq \$e || \$text eq reverse \$e;
}

return 0;
}

__DATA__
tan are nan tom men ora
tan are soo and hen oar
tom soo san sop hen ora

Output:
```tan are nan tom men ora:
\$VAR1 = [
[
'tan',
'ora',
'men'
],
[
'tom',
'are',
'nan'
]
];

tan are soo and hen oar:
Not possible

tom soo san sop hen ora:
Not possible

In reply to Re: Re: Competition fuels obsession over Perl by Roger
in thread Competition fuels obsession over Perl by snowsmann

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

• Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
• Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
• Read Where should I post X? if you're not absolutely sure you're posting in the right place.
• Posts may use any of the Perl Monks Approved HTML tags:
a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
• You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
 For: Use: & & < < > > [ [ ] ]
• Link using PerlMonks shortcuts! What shortcuts can I use for linking?

Create A New User
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (7)
As of 2017-08-23 15:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Who is your favorite scientist and why?

Results (353 votes). Check out past polls.

Notices?