Курс по 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 • Български • Русский • Українська