Курс Раку / Основи / Асоціативні типи даних / Вправи / Відстань подорожі*
Рішення: Відстань подорожі*
Хеш хешів, який ви знайдете у файлі 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 4o. Оригінальний текст англійською мовою.
Переклади цієї сторінки: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська