Problem 96 auf projecteuler.net
Hier meine Lösung zu Problem 96 auf projecteuler.net.
Für die Lösung des Problems habe ich das Perl-Module „Games::Sudoku::Solver“ benutzt, welches hier heruntergeladen werden kann.
Die schnellste Lösung ist es nicht, aber immerhin löst sie das Problem:
Result: 24702 !
real 0m9.220s
user 0m9.214s
sys 0m0.000s
So schaut die Lösung aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#!/usr/bin/env perl use strict; use warnings; use Games::Sudoku::Solver qw(:Minimal set_solution_max); my $fh; my $sudokus = {}; my $current_idx; my $solution; open $fh, "sudoku.txt" or die($!); while(my $line = <$fh>) { chomp($line); if($line =~ m/^Grid (\d+)/) { $current_idx = $1; $sudokus->{$current_idx} = []; next; } push $sudokus->{$current_idx}, split '', $line; } print "Calculate ...\n"; foreach my $idx (keys $sudokus) { my @temp; my @result; sudoku_set \@temp, \@{$sudokus->{$idx}}; set_solution_max 1; sudoku_solve \@temp, \@result; $solution += 100 * $result[0][0][0] + 10 * $result[0][0][1] + $result[0][0][2]; } print "Result: $solution !\n"; |
Veröffentlicht am 19. April 2015 von admin in Perl, Programmierung, projecteuler