Anagrama

Anagrama

Media

Introducción

¡En una venta de garaje encuentras una preciosa máquina de escribir antigua a precio de ganga! Con mucha ilusión, corres a casa, metes una hoja de papel y te pones a escribir. Sin embargo, tu entusiasmo se desvanece cuando examinas el resultado: ¡todas las palabras salen trastocadas! Por ejemplo, imprime «stop» en lugar de «post» y «least» en lugar de «stale». Lo intentas de nuevo con cuidado, pero ahora imprime «spot» y «slate». Después de experimentar un poco, descubres que hay un retraso aleatorio antes de que se imprima cada letra, lo que altera el orden. ¡Ahora entiendes por qué la vendían tan barata!

Te das cuenta de que esta peculiaridad te permite generar anagramas, que son palabras que se forman al reordenar las letras de otra palabra. Tu hallazgo te alegra tanto que pasas el resto del día generando cientos de anagramas.

Instrucciones

Dada una palabra objetivo y una o varias palabras candidatas, tu tarea es encontrar las candidatas que sean anagramas de la objetivo.

Un anagrama es una reordenación de las letras para formar una palabra nueva: por ejemplo, "owns" es un anagrama de "snow". Una palabra no es su propio anagrama: por ejemplo, "stop" no es un anagrama de "stop".

La palabra objetivo y las palabras candidatas se componen de uno o varios caracteres alfabéticos ASCII (A-Z y a-z). Los caracteres en minúscula y en mayúscula son equivalentes: por ejemplo, "PoTS" es un anagrama de "sTOp", pero "StoP" no es un anagrama de "sTOp". Las palabras que tienes que encontrar deben tomarse de las palabras candidatas, respetando el uso de mayúsculas y minúsculas.

Dados la palabra objetivo "stone" y las palabras candidatas "stone", "tones", "banana", "tons", "notes" y "Seton", las palabras anagrama que tienes que encontrar son "tones", "notes" y "Seton".

Unicode y tiempos de vida

La pista de Rust amplía las posibles letras a cualquier carácter Unicode, no solo a los alfabéticos ASCII.

Tendrás que ajustar la firma de la función que se proporciona en el stub para que los tiempos de vida encajen correctamente. Esto es intencionado: lo que hay demuestra lo básico de la sintaxis de los tiempos de vida, y lo que falta te enseña a interpretar los errores del compilador relacionados con los tiempos de vida.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Rust Exercism

¿Listo para empezar Anagrama?

Regístrate en Exercism para aprender y dominar Rust con 99 ejercicios y mentoría humana real, todo gratis.