Course of Raku / Essentials / Associative data types / Exercises / Seen before?
Solution: Seen before?
This task is a classic example of using a hash to keep track of
items. Before a loop, a hash %seen is created. Inside the
loop, the entered $word serves as a key of the hash.
Code
Here is the solution:
my %seen;
loop {
my $word = prompt 'Word: ';
if %seen{$word} {
say %seen{$word} == 1 ?? 'Seen!' !! say "Seen %seen{$word} times!";
}
%seen{$word}++;
}
🦋 Find the program in the file seen-before.raku.
Output
$ raku exercises/associatives/seen-before.raku
Word: I
Word: never
Word: saw
Word: a
Word: saw
Seen!
Word: that
Word: saw
Seen 2 times!
True
Word: as
Word: that
Seen!
Word: saw
Seen 3 times!
True
Word: sawed
Word: ^CComment
The construct %seen{$word}++ not only increments the
value but also creates it if it did not exist yet. The process of
creating is called autovivification. Notice that it does not
happen when you only read the value as in the condition:
if %seen{$word}.
Course navigation
← Seen before? | Country codes →
Translations of this page: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська