Perl: the Markov chain saw PerlMonks

### Re: Number Grid Fillin

by hdb (Monsignor)
 on Aug 15, 2017 at 12:40 UTC ( #1197422=note: print w/replies, xml ) Need Help??

in reply to Number Grid Fillin

Thanks for posting this inspiring problem. Similar to what tybalt89 has posted, one can significantly reduce the search space by checking whether for a given number in a given position the remaining numbers would still fit. Below some code to do that based on positions counting from 0 to 5 and each can be vertical or horizontal. Given the output it is nearly trivial to solve the puzzle manually.

```use strict;
use warnings;

my @numbers = qw( 113443 143132 241131 321422 323132 331222
341114 412433 414422 431331 443112 444313 );

# find possible positions
my %positions;
for my \$n (@numbers) {
\$positions{\$n} = [];
# frequency of digits in current number
my @nfreq = (0) x 5;
\$nfreq[\$_]++ for split //, \$n;
# check which position is possible
for my \$p (0..5) {
# frequency of digits in current position w/o current number
my @freq = (0) x 5;
\$freq[substr( \$_, \$p, 1 )]++ for @numbers;
\$freq[substr( \$n, \$p, 1 )]--;
# check if position is feasible
# ie enough of each digit available
my \$possible = 1;
\$freq[\$_]<\$nfreq[\$_] and \$possible = 0 for 1..4;
push @{\$positions{\$n}}, \$p if \$possible;
}
}

for my \$n (sort { scalar(@{\$positions{\$a}}) <=> scalar(@{\$positions{\$b
+}}) } @numbers) {
print "Number \$n can be at positions @{\$positions{\$n}}.\n";
}

Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1197422]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (2)
As of 2022-05-21 07:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Do you prefer to work remotely?

Results (76 votes). Check out past polls.

Notices?