Курс по Raku / Основи / Асоциативни типове данни / Упражнения / Виждано преди?

Решение: Виждано преди?

Тази задача е класически пример за използване на хеш за проследяване на елементи. Преди цикъла се създава хеш %seen. Вътре в цикъла, въведената дума $word служи като ключ на хеша.

Код

Ето решението:

my %seen;
loop {
    my $word = prompt 'Дума: ';
    if %seen{$word} {
        say %seen{$word} == 1 ?? 'Виждано!' !! say "Виждано %seen{$word} пъти!";
    }
    %seen{$word}++;
}

🦋 Намерете програмата във файла seen-before.raku.

Изход

$ raku exercises/associatives/seen-before.raku
Дума: Аз
Дума: никога
Дума: не
Дума: видях
Дума: трион
Виждано!
Дума: това
Дума: трион
Виждано 2 пъти!
Вярно
Дума: като
Дума: това
Виждано!
Дума: трион
Виждано 3 пъти!
Вярно
Дума: трионен
Дума: ^C

Коментар

Конструкцията %seen{$word}++ не само увеличава стойността, но и я създава, ако все още не съществува. Процесът на създаване се нарича автовивификация. Забележете, че това не се случва, когато само четете стойността, както в условието: if %seen{$word}.

Следващо упражнение

💪 Кодове на държави

Навигация по курса

Позиционни типове данни / Индексиране на диапазони   |   Създаване и извикване на функции

Тази страница е автоматично преведена с ChatGPT 4.0. Оригинален текст на английски

Преводи на тази страница: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська