Skip to content

Instantly share code, notes, and snippets.

@labster
Created May 1, 2013 18:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save labster/5497210 to your computer and use it in GitHub Desktop.
Save labster/5497210 to your computer and use it in GitHub Desktop.
readable golf
use v6;
sub uq(*@vals) { so @vals.bag.values.all == 1 }
sub rowN($n, *@vals) {
return say "[{@vals.join(',')}]" if $n > 8;
for 1..8 -> $new {
my @vnew = @vals, $new;
my ($i1, $i2) = 0, 0;
next if !uq(@vnew)
or !uq(@vnew.map: { $_ - ++$i1 })
or !uq(@vnew.map: { $_ + ++$i2 });
rowN($n+1, @vnew);
}
}
rowN(1,());
[1,5,8,6,3,7,2,4]
[1,6,8,3,7,4,2,5]
[1,7,4,6,8,2,5,3]
[1,7,5,8,2,4,6,3]
[2,4,6,8,3,1,7,5]
[2,5,7,1,3,8,6,4]
[2,5,7,4,1,8,6,3]
[2,6,1,7,4,8,3,5]
[2,6,8,3,1,4,7,5]
[2,7,3,6,8,5,1,4]
[2,7,5,8,1,4,6,3]
[2,8,6,1,3,5,7,4]
[3,1,7,5,8,2,4,6]
[3,5,2,8,1,7,4,6]
[3,5,2,8,6,4,7,1]
[3,5,7,1,4,2,8,6]
[3,5,8,4,1,7,2,6]
[3,6,2,5,8,1,7,4]
[3,6,2,7,1,4,8,5]
[3,6,2,7,5,1,8,4]
[3,6,4,1,8,5,7,2]
[3,6,4,2,8,5,7,1]
[3,6,8,1,4,7,5,2]
[3,6,8,1,5,7,2,4]
[3,6,8,2,4,1,7,5]
[3,7,2,8,5,1,4,6]
[3,7,2,8,6,4,1,5]
[3,8,4,7,1,6,2,5]
[4,1,5,8,2,7,3,6]
[4,1,5,8,6,3,7,2]
[4,2,5,8,6,1,3,7]
[4,2,7,3,6,8,1,5]
[4,2,7,3,6,8,5,1]
[4,2,7,5,1,8,6,3]
[4,2,8,5,7,1,3,6]
[4,2,8,6,1,3,5,7]
[4,6,1,5,2,8,3,7]
[4,6,8,2,7,1,3,5]
[4,6,8,3,1,7,5,2]
[4,7,1,8,5,2,6,3]
[4,7,3,8,2,5,1,6]
[4,7,5,2,6,1,3,8]
[4,7,5,3,1,6,8,2]
[4,8,1,3,6,2,7,5]
[4,8,1,5,7,2,6,3]
[4,8,5,3,1,7,2,6]
[5,1,4,6,8,2,7,3]
[5,1,8,4,2,7,3,6]
[5,1,8,6,3,7,2,4]
[5,2,4,6,8,3,1,7]
[5,2,4,7,3,8,6,1]
[5,2,6,1,7,4,8,3]
[5,2,8,1,4,7,3,6]
... still running ...this takes a long time for me
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment