summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2021-12-10 11:36:45 -0500
committerJune McEnroe <june@causal.agency>2021-12-10 11:36:45 -0500
commitd32d7daa368684f36ee8eb1c13c0c8c996ee5f8c (patch)
tree0d6552c56e2de3d24d035d7cef56dda4fd0b9441
parentSolve day 9 part 2 (diff)
downloadaoc-d32d7daa368684f36ee8eb1c13c0c8c996ee5f8c.tar.gz
aoc-d32d7daa368684f36ee8eb1c13c0c8c996ee5f8c.zip
Solve day 10 part 1
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";
efault targetJune McEnroe 2018-09-14Add termEvent testsJune McEnroe 2018-09-14Check width of entire next word including codesJune McEnroe This results in a tiny bit of premature wrapping for color codes, but that isn't a problem. 2018-09-14Remove word handling from formatParseJune McEnroe 2018-09-14Apply consecutive formatting codes at onceJune McEnroe Fixes the failing splits test. 2018-09-14Add tests for formatParseJune McEnroe With one currently failing so you know they're worth it. 2018-09-13Preview with nick in input windowJune McEnroe 2018-09-13Never send PRIVMSG to TagStatus or TagVerboseJune McEnroe 2018-09-13Move color selection to format.cJune McEnroe 2018-09-13Fix len for format->split at end of stringJune McEnroe 2018-09-13Avoid uninitialized x in uiReadJune McEnroe 2018-09-13Add IRCDefault to colors enumJune McEnroe 2018-09-13Return a format->split even at the end of the stringJune McEnroe 2018-09-13Fix weird tab-complete after commaJune McEnroe I have no idea why I did this. 2018-09-13Rewrite UI againJune McEnroe The persistent topic is gone and the status line is now at the top. The status formatting still needs to be reworked. I also want to try showing the nick in the input window so it really looks like your next message. 2018-09-12Add note about C-oJune McEnroe Why are there so few well usable ctrl key bindings? 2018-09-12Use formatParse split to position input cursorJune McEnroe 2018-09-12Factor out IRC formatting parsingJune McEnroe 2018-09-11Add /help equivalent to /manJune McEnroe 2018-09-11Don't render every PM as a pingJune McEnroe 2018-09-11Add urlOpenMatchJune McEnroe 2018-09-10Depend on man.sh for chroot.tar targetJune McEnroe 2018-09-10Set LESSSECURE=1 in man.shJune McEnroe Ridiculous. 2018-09-10Add /man commandJune McEnroe 2018-09-10Install man page in chrootJune McEnroe 2018-09-10Install man pageJune McEnroe 2018-09-10Split keys into subsections and document colorsJune McEnroe 2018-09-10Add "blank" lines to chatte.1June McEnroe 2018-09-10Document key bindings in chatte.1June McEnroe 2018-09-08Document slash commands in chatte.1June McEnroe