This commit is contained in:
Yanick Champoux 2017-12-04 19:57:15 -05:00
parent 1c92538c76
commit 86420d1bbd
3 changed files with 90 additions and 0 deletions

28
2015/09/input.txt Normal file
View File

@ -0,0 +1,28 @@
AlphaCentauri to Snowdin = 66
AlphaCentauri to Tambi = 28
AlphaCentauri to Faerun = 60
AlphaCentauri to Norrath = 34
AlphaCentauri to Straylight = 34
AlphaCentauri to Tristram = 3
AlphaCentauri to Arbre = 108
Snowdin to Tambi = 22
Snowdin to Faerun = 12
Snowdin to Norrath = 91
Snowdin to Straylight = 121
Snowdin to Tristram = 111
Snowdin to Arbre = 71
Tambi to Faerun = 39
Tambi to Norrath = 113
Tambi to Straylight = 130
Tambi to Tristram = 35
Tambi to Arbre = 40
Faerun to Norrath = 63
Faerun to Straylight = 21
Faerun to Tristram = 57
Faerun to Arbre = 83
Norrath to Straylight = 9
Norrath to Tristram = 50
Norrath to Arbre = 60
Straylight to Tristram = 27
Straylight to Arbre = 81
Tristram to Arbre = 90

31
2015/09/path.pl Normal file
View File

@ -0,0 +1,31 @@
use 5.20.0;
use List::AllUtils qw/ uniq min /;
use experimental qw/ signatures /;
my %dist;
while(<>) {
my( $from, $to, $dist ) = split / (?:to|=) /;
$dist{$from}{$to} = $dist{$to}{$from} = $dist;
}
my @cities = uniq keys %dist;
say min map {
my @c = @cities;
min_distance( splice( @c, $_, 1 ), @c )
} 0..$#cities;
sub min_distance( $src, @left ) {
return 0 unless @left;
return min map {
$dist{$src}{$left[ $_ ]} + min_distance( $left[$_], @left[0..$_-1], @left[$_+1..$#left] )
} 0..$#left;
}

31
2015/09/path2.pl Normal file
View File

@ -0,0 +1,31 @@
use 5.20.0;
use List::AllUtils qw/ uniq max /;
use experimental qw/ signatures /;
my %dist;
while(<>) {
my( $from, $to, $dist ) = split / (?:to|=) /;
$dist{$from}{$to} = $dist{$to}{$from} = $dist;
}
my @cities = uniq keys %dist;
say max map {
my @c = @cities;
max_distance( splice( @c, $_, 1 ), @c )
} 0..$#cities;
sub max_distance( $src, @left ) {
return 0 unless @left;
return max map {
$dist{$src}{$left[ $_ ]} + max_distance( $left[$_], @left[0..$_-1], @left[$_+1..$#left] )
} 0..$#left;
}