]> www.fi.muni.cz Git - aoc2020.git/blobdiff - 23.pl
Day 12
[aoc2020.git] / 23.pl
diff --git a/23.pl b/23.pl
new file mode 100755 (executable)
index 0000000..0ffeb01
--- /dev/null
+++ b/23.pl
@@ -0,0 +1,32 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+my ($x, $y, $dir) = (0, 0, 'E');
+
+while (<>) {
+       my ($cmd, $num) = /\A(.)(\d+)/;
+       print "cmd=$cmd, num=$num: ";
+       if ($cmd eq 'F') {
+               $cmd = $dir;
+       }
+       if ($cmd eq 'R') {
+               $num += 90;
+               $dir =~ y/NESW/ESWN/ while $num -= 90;
+       } elsif ($cmd eq 'L') {
+               $num += 90;
+               $dir =~ y/NESW/WNES/ while $num -= 90;
+       } elsif ($cmd eq 'N') {
+               $y += $num;
+       } elsif ($cmd eq 'S') {
+               $y -= $num;
+       } elsif ($cmd eq 'E') {
+               $x += $num;
+       } elsif ($cmd eq 'W') {
+               $x -= $num;
+       }
+       print " at ($x, $y, $dir)\n";
+}
+
+print abs($x) + abs($y), "\n";
+