Курс по Raku / Основи / Асоциативни типове данни / Упражнения / Разстояние на пътуване*
Решение: Разстояние на пътуване*
Хешът от хешове, който ще намерите във файла distances.raku, е малко излишна, но много удобна структура от данни, която можете да използвате, за да получите разстоянието между всяка двойка градове.
Останалата част от програмата е няколко вложени цикъла, които сканират всички сегменти на маршрута и добавят към общото разстояние.
Код
Ето решението, където големият набор от данни е показан само частично.
my %distance =
Amsterdam => {
Athens => 3082,
Berlin => 648,
# . . .
},
# . . .
Zurich => {
Amsterdam => 861,
Athens => 2449,
# . . .
};
my @itinerary = < Berlin Prague Vienna Zurich Paris >;
my $total = 0;
for 0 .. @itinerary.elems - 2 -> $index {
my $from = @itinerary[$index];
my $to = @itinerary[$index + 1];
my $distance = %distance{$from}{$to};
say "$from — $to: $distance km";
$total += $distance;
}
say "Total trip: $total km";
🦋 Намерете програмата с цялата структура от данни във файла travel-distance.raku.
Резултат
За дадения маршрут, резултатът от програмата е показан по-долу. Опитайте други пътища през градовете, които имаме в хеша %distance
.
$ raku exercises/associatives/travel-distance.raku
Berlin — Prague: 354 km
Prague — Vienna: 312 km
Vienna — Zurich: 784 km
Zurich — Paris: 557 km
Total trip: 2007 km
Навигация по курса
← Позиционни типове данни / Индексиране на диапазони | Създаване и извикване на функции →
Тази страница е автоматично преведена с ChatGPT 4.0. Оригинален текст на английски
Преводи на тази страница: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська