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