Raku kurss / Pamati / Asociatīvie datu tipi / Vingrinājumi / Redzēts agrāk?

Risinājums: Redzēts agrāk?

Šis uzdevums ir klasisks piemērs, kā izmantot hešu, lai izsekotu vienumus. Pirms cikla tiek izveidots hešs %seen. Cikla iekšpusē ievadītais $word kalpo kā heša atslēga.

Kods

Šeit ir risinājums:

my %seen;
loop {
    my $word = prompt 'Word: ';
    if %seen{$word} {
        say %seen{$word} == 1 ?? 'Seen!' !! say "Seen %seen{$word} times!";
    }
    %seen{$word}++;
}

🦋 Atrodiet programmu failā seen-before.raku.

Izvade

$ 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: ^C

Komentārs

Konstrukcija %seen{$word}++ ne tikai palielina vērtību, bet arī izveido to, ja tā vēl nepastāv. Šo procesu sauc par autovivifikāciju. Ņemiet vērā, ka tas nenotiek, ja jūs tikai lasāt vērtību, kā nosacījumā: if %seen{$word}.

Nākamais uzdevums

💪 Valstu kodi

Kursa navigācija

Pozicionālie datu tipi / Diapazonu apakšizteiksmes   |   Funkciju izveide un izsaukšana

Šī lapa ir automātiski tulkota ar ChatGPT 4o. Oriģinālais teksts angļu valodā.

Šīs lapas tulkojumi: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська