summary refs log tree commit diff homepage
path: root/2021
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2021/day10.pl20
1 files changed, 20 insertions, 0 deletions
diff --git a/2021/day10.pl b/2021/day10.pl
new file mode 100644
index 0000000..871ad0b
--- /dev/null
+++ b/2021/day10.pl
@@ -0,0 +1,20 @@
+use strict;
+use warnings;
+my %pairs = ('(', ')', '[', ']', '{', '}', '<', '>');
+my %scores = (')' => 3, ']' => 57, '}' => 1197, '>' => 25137);
+my $score;
+while (<>) {
+	chomp;
+	my @stack;
+	for (split //) {
+		if (index('([{<', $_) != -1) {
+			unshift @stack, $pairs{$_};
+		} elsif ($_ eq $stack[0]) {
+			shift @stack;
+		} else {
+			$score += $scores{$_};
+			last;
+		}
+	}
+}
+print "$score\n";