53 lines
1.1 KiB
Perl
53 lines
1.1 KiB
Perl
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use v5.10;
|
|
use Data::Dumper;
|
|
|
|
sub get_grid ($) {
|
|
my $serial = shift;
|
|
|
|
my @grid;
|
|
foreach my $y (1..300) {
|
|
my @x;
|
|
foreach my $x (1..300) {
|
|
my $pl = ((($x+10)*$y)+$serial)*($x+10);
|
|
$pl = (($pl / 100) % 10)-5;
|
|
push @x, $pl;
|
|
|
|
}
|
|
push @grid, \@x
|
|
}
|
|
return @grid;
|
|
}
|
|
|
|
#122,79, grid serial number 57: power level -5.
|
|
#my @grid=get_grid(57);
|
|
#say $grid[78][121];
|
|
|
|
#217,196, grid serial number 39: power level 0.
|
|
#@grid=get_grid(39);
|
|
#say $grid[195][216];
|
|
|
|
#101,153, grid serial number 71: power level 4.
|
|
#@grid=get_grid(71);
|
|
#say $grid[152][100];
|
|
my $serial = $ARGV[0];
|
|
my @grid = get_grid($serial);
|
|
|
|
my $biglytotal = -9999;
|
|
my $coords;
|
|
for (my $y=2; $y < 299; $y++) {
|
|
for (my $x=2; $x < 299; $x++) {
|
|
my $total = $grid[$y-1][$x-1] + $grid[$y-1][$x] + $grid[$y-1][$x+1] +
|
|
$grid[$y][$x-1] + $grid[$y][$x] + $grid[$y][$x+1] +
|
|
$grid[$y+1][$x-1] + $grid[$y+1][$x] + $grid[$y+1][$x+1];
|
|
if ($total > $biglytotal) {
|
|
$biglytotal = $total;
|
|
$coords = "$x,$y";
|
|
}
|
|
}
|
|
}
|
|
say $coords;
|
|
|
|
|