summary refs log tree commit diff homepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2021/day12.pl27
1 files changed, 27 insertions, 0 deletions
diff --git a/2021/day12.pl b/2021/day12.pl
new file mode 100644
index 0000000..ceef3e0
--- /dev/null
+++ b/2021/day12.pl
@@ -0,0 +1,27 @@
+use strict;
+use warnings;
+my %edges;
+while (<>) {
+	/(\w+)-(\w+)/;
+	$edges{$1} //= [];
+	$edges{$2} //= [];
+	push @{$edges{$1}}, $2;
+	push @{$edges{$2}}, $1;
+}
+my $paths = 0;
+my @queue = (['start']);
+while (@queue) {
+	my @path = @{shift @queue};
+	my %visited = map { $_ => 1 } @path;
+	for (@{$edges{$path[0]}}) {
+		if ($_ eq 'end') {
+			$paths++;
+		} elsif (/[a-z]/ && $visited{$_}) {
+			next;
+		} else {
+			my @next = ($_, @path);
+			push @queue, \@next;
+		}
+	}
+}
+print "$paths\n";
gheader'>2016-02-03Update to iTerm 2.9 betaJune McEnroe 2016-01-31Spawn non-login shells in iTermJune McEnroe 2016-01-28Remove linux gvim aliasJune McEnroe 2016-01-28Rewrite zshrcJune McEnroe 2016-01-28Strip out useless commentsJune McEnroe 2016-01-28Trim tmux configurationJune McEnroe 2016-01-28Remove psql format wrappedJune McEnroe 2016-01-25Wow, that is so annoying, gitJune McEnroe 2016-01-25Clean up .gitconfigJune McEnroe 2016-01-15Remove gitignoreJune McEnroe 2016-01-15Eliminate escape key delay in zshJune McEnroe 2016-01-15Move pretty git log format to .gitconfigJune McEnroe 2016-01-14Remove unused git aliasesJune McEnroe 2016-01-06Hash SSH known hostsJune McEnroe 2015-12-30Ignore directory .swp filesJune McEnroe 2015-12-16Color prompt yellow in vi normal modeJune McEnroe 2015-11-23Remove colorcolumn at 120June McEnroe 2015-11-23Always git rebase --autosquashJune McEnroe 2015-11-18Add inverted shift to KarabinerJune McEnroe 2015-11-06Clean up git configsJune McEnroe 2015-11-06Add prune scriptJune McEnroe 2015-11-03Update vendored Gruvbox colorschemeJune McEnroe 2015-11-02Redefine _newline_precmd in _newline_precmdJune McEnroe 2015-11-02Print newline before every prompt after firstJune McEnroe 2015-11-02Remove first prompt placementJune McEnroe 2015-11-02Newline before prompt and start at bottom of terminalJune McEnroe 2015-10-27Add chruby to zshrcJune McEnroe