]> www.fi.muni.cz Git - aoc.git/blob - 2017/06.pl
Day 25: examining the input
[aoc.git] / 2017 / 06.pl
1 #!/usr/bin/perl
2
3 use v5.30;
4 use strict;
5
6 my $in = 368078;
7
8 my ($x, $y) = (1, 0);
9 my $r = 1;
10 $; = ',';
11 my %map = ("0,0" => 1);
12 sub set {
13         my ($x, $y) = @_;
14         my $sum = 0;
15         for my $dx (-1 .. 1) {
16         for my $dy (-1 .. 1) {
17                 $sum += $map{$x+$dx,$y+$dy} if defined
18                         $map{$x+$dx,$y+$dy};
19         } }
20         $map{$x,$y} = $sum;
21                 
22         say "$x, $y = ", $sum;
23         exit 0 if $sum > $in;
24 }
25
26 while (1) {
27         for my $i (0 .. 2*$r-1) {
28                 set($x, $y-$i);
29         }
30         $y -= 2*$r-1;
31         for my $i (1 .. 2*$r) {
32                 set($x-$i, $y);
33         }
34         $x -= 2*$r;
35         for my $i (1 .. 2*$r) {
36                 set($x, $y+$i);
37         }
38         $y += 2*$r;
39         for my $i (1 .. 2*$r) {
40                 set($x+$i, $y);
41         }
42         $x += 2*$r+1;
43         $r++;
44 }