List processing
StringTemplate["`1` - `3` <*#4-#2*> km"] @@@ Flatten /@ Partition[resupply, 2, 1]
{ "Coleman - Highwood House 106 km", "Highwood House - Canmore 123 km", "Canmore - Exshaw 16 km", "Exshaw - Ghost Station 43 km", "Ghost Station - MountainAire 82 km", "MountainAire - Nordegg 182 km", "Nordegg - Robb 120 km", "Robb - Hinton 48 km" }
{place, dist} = Transpose[resupply];
With[{n = Length@resupply},
TableForm[
Partition[Abs[#1 - #2] & @@@ (dist[[#]] & /@ Tuples[Range[n], 2]),
n], TableHeadings -> {place, place}]]
Outer
could have been used instead of Tuples
.
Or:
pos = Subsets[Range[Length@resupply], {2}];
pairs = #1 <> "-" <> #2 & @@@ (place[[#]] & /@ pos);
d = Abs[#1 - #2] & @@@ (dist[[#]] & /@ pos);
Grid[Transpose[{pairs, d}], Alignment -> Left]
The Terse Way
{-#, #2 "km"} & @@@ Differences[resupply] // TraditionalForm
$\left( \begin{array}{cc} \text{Coleman}-\text{Highwood House} & 106 \text{ km} \\ \text{Highwood House}-\text{Canmore} & 123 \text{ km} \\ \text{Canmore}-\text{Exshaw} & 16 \text{ km} \\ \text{Exshaw}-\text{Ghost Station} & 43 \text{ km} \\ \text{Ghost Station}-\text{MountainAire} & 82 \text{ km} \\ \text{MountainAire}-\text{Nordegg} & 182 \text{ km} \\ \text{Nordegg}-\text{Robb} & 120 \text{ km} \\ \text{Robb}-\text{Hinton} & 48 \text{ km} \\ \end{array} \right)$