]> www.fi.muni.cz Git - aoc.git/blob - 2015/21.pl
Year 2015
[aoc.git] / 2015 / 21.pl
1 #!/usr/bin/perl -w
2
3 use v5.16;
4 use strict;
5
6 my $in = 'cqjxjnds';
7
8 NUMBER:
9 while (1) {
10         my @l = split //, $in;
11         my $n = $#l;
12         while ($l[$n] eq 'z') {
13                 $l[$n] = 'a';
14                 $n--;
15         }
16         if ($l[$n] =~ /[hkn]/) {
17                 $l[$n] = chr(2+ord($l[$n]));
18                 while (++$n <= $#l) {
19                         $l[$n] = 'a';
20                 }
21         } else {
22                 $l[$n] = chr(1+ord($l[$n]));
23         };
24         $in = join('', @l);
25         say "got $in";
26
27         next NUMBER if $in !~ /(.)\1.*(.)\2/;
28
29         my $prev = $l[0];
30         my $count = 1;
31         for (1 .. $#l) {
32                 say "prev=$prev now=$l[$_] count $count";
33                 if ($prev eq chr(ord($l[$_])-1)) {
34                         last if ++$count >= 3;
35                 } else {
36                         $count = 1;
37                 }
38                 $prev = $l[$_];
39         }
40         next NUMBER if $count < 3;
41         last;
42 }
43