]> www.fi.muni.cz Git - aoc.git/blobdiff - 2017/06.pl
AoC 2017 begins
[aoc.git] / 2017 / 06.pl
diff --git a/2017/06.pl b/2017/06.pl
new file mode 100755 (executable)
index 0000000..b22f254
--- /dev/null
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+
+use v5.30;
+use strict;
+
+my $in = 368078;
+
+my ($x, $y) = (1, 0);
+my $r = 1;
+$; = ',';
+my %map = ("0,0" => 1);
+sub set {
+       my ($x, $y) = @_;
+       my $sum = 0;
+       for my $dx (-1 .. 1) {
+       for my $dy (-1 .. 1) {
+               $sum += $map{$x+$dx,$y+$dy} if defined
+                       $map{$x+$dx,$y+$dy};
+       } }
+       $map{$x,$y} = $sum;
+               
+       say "$x, $y = ", $sum;
+       exit 0 if $sum > $in;
+}
+
+while (1) {
+       for my $i (0 .. 2*$r-1) {
+               set($x, $y-$i);
+       }
+       $y -= 2*$r-1;
+       for my $i (1 .. 2*$r) {
+               set($x-$i, $y);
+       }
+       $x -= 2*$r;
+       for my $i (1 .. 2*$r) {
+               set($x, $y+$i);
+       }
+       $y += 2*$r;
+       for my $i (1 .. 2*$r) {
+               set($x+$i, $y);
+       }
+       $x += 2*$r+1;
+       $r++;
+}