Anagrama

Anagrama

Difícil

Introducción

En una venta de garaje encuentras una hermosa máquina de escribir vintage a un precio de ganga. Emocionado, corres a casa, pones una hoja de papel y te pones a escribir. Sin embargo, tu emoción se desvanece cuando examinas el resultado: ¡todas las palabras salen distorsionadas! 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 vendieron por tan poco dinero!

Te das cuenta de que esta peculiaridad te permite generar anagramas, que son palabras formadas al reordenar las letras de otra palabra. Feliz con tu hallazgo, pasas el resto del día generando cientos de anagramas.

Instrucciones

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

Un anagrama es una reordenación de 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 están formadas por uno o más caracteres alfabéticos ASCII (A-Z y a-z). Los caracteres en minúscula y mayúscula son equivalentes: por ejemplo, "PoTS" es un anagrama de "sTOp", pero "StoP" no es un anagrama de "sTOp". Las palabras que necesitas encontrar deben tomarse de las palabras candidatas, respetando el mismo uso de mayúsculas y minúsculas.

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

  • La columna candidates contiene una lista de strings codificada en JSON. Ejemplo:
    ["stone","tones","banana","tons","notes","Seton"]
    
  • La columna result también debe contener una lista de strings codificada en JSON.

Esquema de la tabla

CREATE TABLE anagram (
  subject    TEXT NOT NULL,
  candidates TEXT NOT NULL,     -- json array of strings
  result     TEXT               -- json array of strings
);

Documentación de JSON

Funciones y operadores de JSON

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
SQLite Exercism

¿Todo listo para empezar Anagrama?

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