Курс по 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. Оригинален текст на английски
Преводи на тази страница: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська