]> www.fi.muni.cz Git - aoc.git/blob - 2018/28.pl
Day 19: not bad, but too slow to write
[aoc.git] / 2018 / 28.pl
1 #!/usr/bin/perl -w
2
3 use v5.20;
4 use strict;
5
6 my $input = shift @ARGV;
7
8 my $r = '37';
9 my @p = qw(0 1);
10
11 my $l = length $input;
12 my $lr = length $r;
13 while (1) {
14         my @n = (substr($r, $p[0], 1), substr($r, $p[1], 1));
15         $r .= $n[0]+$n[1];
16         $lr = length $r;
17         for (0 .. 1) {
18                 $p[$_] += 1 + $n[$_];
19                 $p[$_] -= $lr while $p[$_] >= $lr;
20         }
21         next if $lr < $l;
22         last if substr($r, -$l) eq $input;
23         last if substr($r, -$l-1, -1) eq $input;
24 }
25
26 $r =~ s/$input.*//;
27 say length $r;