]> www.fi.muni.cz Git - aoc2020.git/blob - 8.pl
Task 9 Perl Golf-style
[aoc2020.git] / 8.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4
5 $/ = "\n\n";
6
7 my $valid = 0;
8 while (<>) {
9         my $correct = 0;
10         for my $field (split /\s+/) {
11                 print "$field";
12                 $correct++
13                         if $field =~ /\Abyr:(\d{4})\z/
14                         && $1 >= 1920 && $1 <= 2002;
15                 $correct++
16                         if $field =~ /\Aiyr:(\d{4})\z/
17                         && $1 >= 2010 && $1 <= 2020;
18                 $correct++
19                         if $field =~ /\Aeyr:(\d{4})\z/
20                         && $1 >= 2020 && $1 <= 2030;
21                 $correct++
22                         if $field =~ /\Ahgt:(\d+)(cm|in)\z/
23                         && ($2 eq 'cm' && $1 >= 150 && $1 <= 193
24                         || $2 eq 'in' && $1 >= 59 && $1 <= 76);
25                 $correct++
26                         if $field =~ /\Ahcl:#[a-f0-9]{6}\z/;
27                 $correct++
28                         if $field =~ /\Aecl:(?:amb|blu|brn|gry|grn|hzl|oth)\z/;
29                 $correct++
30                         if $field =~ /\Apid:(?:\d{9})\z/;
31                 print "\t$correct\n";
32         }
33         $valid++ if $correct >= 7;
34         print "\n";
35 }
36
37 print "Valid: $valid\n";
38