]> www.fi.muni.cz Git - aoc.git/blob - 2017/21.pl
AoC 2017 days 11 to 15
[aoc.git] / 2017 / 21.pl
1 #!/usr/bin/perl
2
3 use v5.30;
4 use strict;
5
6 my ($x, $y) = (0, 0);
7
8 my @path = split /[,\s]/, <>;
9
10 #   |/
11 #   o
12 #  /|
13 # x y
14 for my $dir (@path) {
15         if ($dir eq 's') {
16                 $y--;
17         } elsif ($dir eq 'n') {
18                 $y++;
19         } elsif ($dir eq 'ne') {
20                 $x++;
21         } elsif ($dir eq 'nw') {
22                 $x--;
23                 $y++;
24         } elsif ($dir eq 'se') {
25                 $x++;
26                 $y--;
27         } elsif ($dir eq 'sw') {
28                 $x--;
29         }
30 }
31
32 my $dist;
33 if ($x >= 0 && $y >= 0 || $x <= 0 && $y <= 0) {
34         $dist = abs($x + $y);
35 } elsif (abs($x) >= abs($y)) {
36         $dist = abs($x);
37 } else {
38         $dist = abs($y);
39 }
40
41 say $dist;
42         
43