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
Navegación del curso
← 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: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська