]> www.fi.muni.cz Git - aoc.git/blobdiff - 2017/21.pl
AoC 2017 days 11 to 15
[aoc.git] / 2017 / 21.pl
diff --git a/2017/21.pl b/2017/21.pl
new file mode 100755 (executable)
index 0000000..9fc2bfe
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+
+use v5.30;
+use strict;
+
+my ($x, $y) = (0, 0);
+
+my @path = split /[,\s]/, <>;
+
+#   |/
+#   o
+#  /|
+# x y
+for my $dir (@path) {
+       if ($dir eq 's') {
+               $y--;
+       } elsif ($dir eq 'n') {
+               $y++;
+       } elsif ($dir eq 'ne') {
+               $x++;
+       } elsif ($dir eq 'nw') {
+               $x--;
+               $y++;
+       } elsif ($dir eq 'se') {
+               $x++;
+               $y--;
+       } elsif ($dir eq 'sw') {
+               $x--;
+       }
+}
+
+my $dist;
+if ($x >= 0 && $y >= 0 || $x <= 0 && $y <= 0) {
+       $dist = abs($x + $y);
+} elsif (abs($x) >= abs($y)) {
+       $dist = abs($x);
+} else {
+       $dist = abs($y);
+}
+
+say $dist;
+       
+