aoc2015

Advent of Code 2015 solutions in Perl.
git clone git://git.samirparikh.com/aoc2015
Log | Files | Refs | README

commit 89d7940725ecc7ea7113615a492beac12bf61e0a
parent 94b9d5467c0cced56422262a2ccf8a71d946427f
Author: Samir Parikh <noreply@samirparikh.com>
Date:   Fri, 28 Oct 2022 13:23:25 +0000

solve part 1 of day09

Diffstat:
Aday09/day09.pl | 47+++++++++++++++++++++++++++++++++++++++++++++++
Aday09/input | 28++++++++++++++++++++++++++++
2 files changed, 75 insertions(+), 0 deletions(-)

diff --git a/day09/day09.pl b/day09/day09.pl @@ -0,0 +1,47 @@ +#!/usr/local/bin/perl +# day 2015-09 + +use strict; +use warnings; +use v5.32; +use Algorithm::Permute; +use List::Util qw( min ); +#use Data::Dumper; +#use lib '.'; +#use Day07 qw< evaluate >; + +@ARGV = "input" unless @ARGV; +chomp( my $input = do { local $/; <> } ); + +my %distances; # between cities +my %cities; +my @route_distances; + +foreach ( split /\n/, $input ) { + my ( $from, $to, $distance ) = m/(\w+) to (\w+) = (\d+)/; + #say "$from\t$to\t$distance"; + $distances{ $from, $to } = $distance; + $distances{ $to, $from } = $distance; + $cities{ $from } += 1; + $cities{ $to } += 1; +} + +my @cities = keys %cities; + +#say Dumper \%distances; +#say Dumper \%cities; +#say "@cities"; + +Algorithm::Permute::permute { +# print "next permutation: ", join ("->", @cities), "\n"; + my $distance = 0; + foreach my $i ( 0 .. ( scalar @cities ) - 2 ) { +# say $i; + $distance += $distances{ $cities[ $i ], $cities[ $i + 1 ] }; + } +# say join (" -> ", @cities), " = ", $distance; + push @route_distances => $distance; +} @cities; + + +say "part 1: ", min @route_distances; diff --git a/day09/input b/day09/input @@ -0,0 +1,28 @@ +Faerun to Tristram = 65 +Faerun to Tambi = 129 +Faerun to Norrath = 144 +Faerun to Snowdin = 71 +Faerun to Straylight = 137 +Faerun to AlphaCentauri = 3 +Faerun to Arbre = 149 +Tristram to Tambi = 63 +Tristram to Norrath = 4 +Tristram to Snowdin = 105 +Tristram to Straylight = 125 +Tristram to AlphaCentauri = 55 +Tristram to Arbre = 14 +Tambi to Norrath = 68 +Tambi to Snowdin = 52 +Tambi to Straylight = 65 +Tambi to AlphaCentauri = 22 +Tambi to Arbre = 143 +Norrath to Snowdin = 8 +Norrath to Straylight = 23 +Norrath to AlphaCentauri = 136 +Norrath to Arbre = 115 +Snowdin to Straylight = 101 +Snowdin to AlphaCentauri = 84 +Snowdin to Arbre = 96 +Straylight to AlphaCentauri = 107 +Straylight to Arbre = 14 +AlphaCentauri to Arbre = 46