Curso de Raku / Esenciales / Tipos de datos asociativos / Ejercicios / ¿Visto antes?

Solución: ¿Visto antes?

Esta tarea es un ejemplo clásico de usar un hash para llevar un registro de elementos. Antes de un bucle, se crea un hash %seen. Dentro del bucle, la palabra ingresada $word sirve como clave del hash.

Código

Aquí está la solución:

my %seen;
loop {
    my $word = prompt 'Palabra: ';
    if %seen{$word} {
        say %seen{$word} == 1 ?? '¡Visto!' !! say "¡Visto %seen{$word} veces!";
    }
    %seen{$word}++;
}

🦋 Encuentra el programa en el archivo seen-before.raku.

Salida

$ raku exercises/associatives/seen-before.raku
Palabra: Yo
Palabra: nunca
Palabra: vi
Palabra: una
Palabra: sierra
¡Visto!
Palabra: eso
Palabra: sierra
¡Visto 2 veces!
Cierto
Palabra: como
Palabra: eso
¡Visto!
Palabra: sierra
¡Visto 3 veces!
Cierto
Palabra: serrado
Palabra: ^C

Comentario

La construcción %seen{$word}++ no solo incrementa el valor sino que también lo crea si aún no existía. El proceso de creación se llama autovivificación. Nota que esto no ocurre cuando solo lees el valor como en la condición: if %seen{$word}.

Siguiente ejercicio

💪 Códigos de países

Tipos de datos posicionales / Subíndice de rangos   |   Crear y llamar funciones

Esta página está traducida automáticamente con ChatGPT 4o. Texto original en inglés.

Traducciones de esta página: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська