From 9561c5adee8468b3a3f06990b3845dbb3046e676 Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Sat, 12 Dec 2020 09:59:32 +0100 Subject: [PATCH] Day 12 --- 23.pl | 32 +++ 23in.txt | 778 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 24.pl | 38 +++ 3 files changed, 848 insertions(+) create mode 100755 23.pl create mode 100644 23in.txt create mode 100755 24.pl diff --git a/23.pl b/23.pl new file mode 100755 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"; + diff --git a/23in.txt b/23in.txt new file mode 100644 index 0000000..3231c44 --- /dev/null +++ b/23in.txt @@ -0,0 +1,778 @@ +E1 +S5 +W5 +R90 +S2 +L90 +F70 +W1 +R90 +E4 +F50 +S2 +F92 +L270 +W2 +S2 +W1 +L270 +W2 +F77 +R180 +F100 +L90 +F45 +W2 +S2 +F68 +L90 +N1 +E4 +S5 +R180 +N1 +L90 +W5 +F59 +E4 +F10 +E1 +F95 +F33 +L180 +F67 +L90 +E3 +L90 +F97 +E5 +L90 +N4 +L180 +E5 +N1 +F70 +E1 +F43 +E3 +R90 +N4 +R90 +F27 +R90 +E1 +L180 +E1 +F24 +F83 +S5 +F81 +F25 +E3 +F20 +N5 +W2 +W2 +R90 +W1 +F63 +F36 +W4 +F12 +W4 +L90 +F53 +S4 +W4 +W5 +R180 +W3 +L90 +W4 +S3 +E1 +N2 +W3 +F16 +S5 +F74 +E2 +R90 +N2 +L90 +N1 +R90 +S4 +S3 +L90 +W3 +F72 +N3 +F34 +E3 +F84 +N5 +F65 +R90 +W5 +R90 +F51 +L90 +F3 +N3 +F98 +R90 +S2 +E2 +L180 +N5 +F75 +R180 +F90 +S4 +R90 +W5 +F41 +E2 +S1 +L90 +R180 +N2 +W1 +S1 +R90 +E3 +W1 +R90 +W4 +N4 +R180 +S5 +R90 +N4 +R90 +W1 +L90 +S5 +R180 +W2 +R90 +F61 +F94 +E5 +S2 +E2 +E2 +F91 +W4 +N5 +L90 +F71 +F15 +W2 +F37 +W5 +N4 +F47 +E1 +R90 +W1 +F28 +R90 +F95 +N3 +F32 +W1 +F6 +S3 +R90 +E1 +F41 +L90 +E3 +F65 +R90 +E3 +N1 +L90 +S4 +F6 +E3 +E4 +S4 +L90 +F6 +S3 +R90 +E3 +S4 +N2 +F74 +N1 +E1 +L90 +E5 +L270 +W5 +L270 +N1 +F67 +F12 +W5 +N2 +F8 +S1 +F13 +S1 +E3 +F41 +N5 +W5 +L90 +N2 +E4 +F72 +R90 +W1 +W4 +R90 +F17 +L90 +W5 +N4 +R90 +E5 +F40 +N5 +R90 +F16 +R90 +W5 +F35 +E4 +S3 +L180 +S4 +W1 +N3 +F10 +N2 +W4 +S4 +R90 +N3 +F65 +R90 +F73 +E1 +S2 +L90 +F23 +N5 +R90 +N1 +E3 +F89 +S2 +E3 +L90 +R90 +F28 +R90 +W4 +F4 +L90 +E4 +F99 +W1 +R90 +N2 +L90 +F16 +F61 +N3 +E4 +S3 +L90 +E5 +L90 +N2 +L90 +W3 +S1 +F1 +R270 +E3 +L90 +F37 +L180 +E1 +N4 +W2 +F34 +W3 +N2 +E5 +L90 +F76 +S3 +W1 +F57 +E4 +R90 +W5 +S4 +R90 +W2 +N4 +L90 +N4 +E2 +W5 +S1 +F90 +E3 +L90 +N5 +F61 +W1 +F1 +E2 +L270 +W2 +R90 +N3 +W1 +R90 +N5 +W2 +R180 +F67 +S4 +N5 +F44 +E4 +F33 +R90 +E2 +R90 +F92 +L90 +N3 +S2 +L90 +N5 +R90 +W5 +R90 +F40 +W1 +F4 +W5 +S5 +E3 +S1 +L90 +S4 +L90 +L90 +S2 +F32 +N3 +E5 +L90 +N1 +W2 +R90 +S4 +F78 +N4 +F34 +L90 +F19 +E3 +R90 +W5 +R180 +N1 +F57 +E3 +R180 +E5 +F77 +W4 +N2 +W4 +F8 +L90 +W5 +S2 +F29 +R90 +W2 +F17 +N3 +F54 +S3 +F69 +S2 +R90 +N3 +W1 +N5 +R90 +S2 +F53 +N4 +W1 +F13 +S4 +S1 +L90 +S5 +E2 +F25 +W2 +S1 +F25 +E2 +F21 +S2 +L270 +N3 +F28 +L90 +F63 +R90 +S3 +F83 +W5 +F86 +N5 +W5 +L90 +F100 +E1 +F67 +L90 +F73 +W4 +L90 +F28 +E1 +W4 +S2 +R90 +N4 +N5 +F92 +W5 +L90 +E3 +S3 +E1 +F89 +S5 +F60 +L90 +F10 +R90 +N3 +N5 +R90 +F51 +N5 +L90 +W1 +F2 +E3 +N1 +R90 +E5 +N2 +F2 +R90 +F25 +W5 +S5 +F87 +N2 +R270 +W3 +F67 +N2 +F30 +E3 +L180 +F63 +R180 +W3 +L180 +S1 +E5 +R180 +E5 +L90 +S5 +R90 +E5 +L180 +R90 +W5 +N1 +F95 +W5 +F79 +W2 +R90 +F57 +W1 +F36 +L90 +W1 +F92 +N1 +L90 +F84 +R90 +F2 +R90 +W1 +S5 +W2 +F48 +N4 +L90 +S1 +F1 +N3 +L180 +F27 +N1 +R90 +F6 +L90 +E3 +S1 +F96 +R90 +E5 +F52 +L180 +W1 +R270 +N1 +F53 +E2 +F49 +N1 +F59 +E1 +W2 +L270 +S2 +N1 +F47 +W2 +L90 +W5 +N5 +R180 +E1 +R270 +E3 +F34 +E5 +R90 +N4 +F17 +W1 +L90 +F9 +E1 +F27 +N1 +F32 +L90 +S2 +L180 +E5 +F39 +S1 +F87 +L90 +N4 +R180 +W4 +F81 +L90 +S3 +F8 +S2 +E4 +F87 +S4 +R90 +F35 +W5 +N2 +F77 +E2 +F95 +L90 +F82 +E2 +F94 +L90 +W1 +N2 +R90 +F8 +E2 +S3 +R90 +N2 +E4 +R90 +S2 +R270 +N2 +F58 +S4 +R90 +S3 +R180 +F15 +E3 +S1 +R90 +F17 +W4 +S2 +E1 +S5 +R180 +N3 +W4 +S2 +R90 +S3 +W5 +S1 +R90 +S2 +F16 +L90 +N4 +L180 +F29 +R90 +E5 +L90 +E1 +F24 +W4 +F66 +E2 +F78 +L180 +F90 +N2 +F58 +S3 +W5 +L90 +F79 +R90 +S5 +F98 +N1 +R180 +S1 +L180 +N2 +F57 +E3 +F75 +S3 +W5 +R90 +W4 +F58 +E4 +N1 +W1 +S5 +F84 +L90 +F12 +S2 +F58 +R180 +F93 +W3 +F66 +L270 +N2 +F42 +R90 +E2 +S2 +L90 +F68 +R90 +N3 +F8 +R180 +E2 +F78 +R180 +F26 +E2 +R90 +S3 +L90 +N4 +E4 +S5 +R180 +S3 +L270 +S2 +L90 +S5 +F92 +E1 +N1 +F18 +E4 +F43 +N3 +W2 +R90 +E3 +F48 +W2 +N2 +L270 +E4 +F58 +N3 +W3 +F27 +R90 +F44 +E1 +F60 +E4 +R90 +E4 +R90 +F52 +R90 +S3 +W1 +R90 +S1 +W3 +F31 diff --git a/24.pl b/24.pl new file mode 100755 index 0000000..29b1fdf --- /dev/null +++ b/24.pl @@ -0,0 +1,38 @@ +#!/usr/bin/perl -w + +use strict; + +my ($wx, $wy, $x, $y) = (10, 1); + +while (<>) { + my ($cmd, $num) = /\A(.)(\d+)/; + print "cmd=$cmd, num=$num: "; + if ($cmd eq 'F') { + $x += $num*$wx; + $y += $num*$wy; + } elsif ($cmd eq 'R') { + while (($num -= 90) >= 0) { + my $tmp = $wx; + $wx = $wy; + $wy = -$tmp; + } + } elsif ($cmd eq 'L') { + while (($num -= 90) >= 0) { + my $tmp = $wy; + $wy = $wx; + $wx = -$tmp; + } + } elsif ($cmd eq 'N') { + $wy += $num; + } elsif ($cmd eq 'S') { + $wy -= $num; + } elsif ($cmd eq 'E') { + $wx += $num; + } elsif ($cmd eq 'W') { + $wx -= $num; + } + print " at ($x, $y, $wx, $wy)\n"; +} + +print abs($x) + abs($y), "\n"; + -- 2.43.0