]> www.fi.muni.cz Git - aoc2020.git/blob - 23.pl
Task 9 Perl Golf-style
[aoc2020.git] / 23.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4
5 my ($x, $y, $dir) = (0, 0, 'E');
6
7 while (<>) {
8         my ($cmd, $num) = /\A(.)(\d+)/;
9         print "cmd=$cmd, num=$num: ";
10         if ($cmd eq 'F') {
11                 $cmd = $dir;
12         }
13         if ($cmd eq 'R') {
14                 $num += 90;
15                 $dir =~ y/NESW/ESWN/ while $num -= 90;
16         } elsif ($cmd eq 'L') {
17                 $num += 90;
18                 $dir =~ y/NESW/WNES/ while $num -= 90;
19         } elsif ($cmd eq 'N') {
20                 $y += $num;
21         } elsif ($cmd eq 'S') {
22                 $y -= $num;
23         } elsif ($cmd eq 'E') {
24                 $x += $num;
25         } elsif ($cmd eq 'W') {
26                 $x -= $num;
27         }
28         print " at ($x, $y, $dir)\n";
29 }
30
31 print abs($x) + abs($y), "\n";
32