#! /usr/bin/tclsh
#
-# $Id: elite-path,v 1.3 2003/03/04 10:26:18 mdw Exp $
+# $Id$
-package require "elite" "1.0.0"
+package require "elite" "1.0.1"
set g $galaxy1
set ng 1
set weight weight-hops
+set d 70
set acc distance
for {set i 0} {$i < [llength $argv]} {incr i} {
set a [lindex $argv $i]
}
destructure {ng g} $g
}
+ "-d" {
+ incr i
+ set d [expr {int([lindex $argv $i] * 10)}]
+ }
"-w" {
incr i
set a [lindex $argv $i]
}
set r {}
-set ww [worldinfo $g]
+set ww [elite-galaxylist $g]
foreach-world $g ii {
set px($ii(seed)) 1
}
lappend r $s
}
if {[llength $r] < 2} {
- puts stderr "usage: $argv0 \[-g GALAXY\] \[-w WEIGHT\] \[-a ACC\] PLANET PLANET ..."
+ puts stderr "usage: $argv0 \[-g GAL\] \[-d DIST\] \[-w WEIGHT\] \[-a ACC\] PLANET PLANET ..."
exit 1
}
-puts -nonewline stderr "\[computing adjacency table..."
-adjacency $ww adj
-puts stderr " done\]"
+elite-adjacency adj $ww $d
set home [lindex $r 0]
set start $home
set rt {}
foreach w [lrange $r 1 end] {
destructure {p m} [shortest-path adj $home $w $weight]
if {![llength $p]} {
- puts -stderr "$argv0: no route from [worldinfo $home] to [worldinfo $w]"
+ puts stderr "$argv0: no route from [worldname $home] to [worldname $w]"
exit 1
}
set tm [expr {$tm + $m}]
eval lappend rt $p
set home $w
}
-puts [format " 1 %s" [world-summary $start]]
+puts [format " 0 %s" [world-summary $start]]
set last $start
unset p
elite-worldinfo p $start
destructure {x y} [list $p(x) $p(y)]
-set h 1
+set h 0
set td 0
set tw 0
foreach s $rt {
if {![string equal $s $last]} {
elite-worldinfo p $s
- set d [expr {[world-distance $x $y $p(x) $p(y)]/10.0}]
+ set d [expr {[elite-distance $x $y $p(x) $p(y)]/10.0}]
incr h
set td [expr {$td + $d}]
set summ [format "%3d %s" $h [world-summary $s]]
}
}
if {$tw != $tm} { error "inconsistent metric ($tw != $tm)" }
-set summ "("
+set summ "# ("
set sep ""
if {![string equal $acc "distance"]} {
append summ [format "%stotal distance = %.1f LY" $sep $td]
append summ [format "%stotal metric = %s" $sep $tm]
}
append summ ")"
-if {![string equal $summ "()"]} { puts $summ }
+if {![string equal $summ "# ()"]} { puts $summ }