Dado un conjunto de letras, genera todas las cadenas hechas de esas letras. (Esta es la estrella de Kleene del conjunto). Por ejemplo, para {'a','b'}
, las cadenas son:
'', 'a', 'b', 'aa', 'ab', 'ba', 'bb', 'aaa', 'aab', ...
Entrada: una colección no vacía de letras distintas a..z
. Estos pueden ser caracteres o cadenas de un solo carácter.
Salida: todas las cadenas en esas letras, en cualquier orden, sin repeticiones. Puede usar listas de caracteres como cadenas.
Esta es una lista infinita, por lo que puede generarla de la siguiente manera:
- Corriendo para siempre escribiendo más y más cadenas. Estas cadenas se pueden escribir en cualquier formato separado, lo que significa que puede saber dónde termina cada cadena, pero las cadenas no se subdividen en grupos.
- Tomar un número
n
como entrada y salida de las primerasn
cadenas en cualquier formato plano separado - Ceder cada cuerda a su vez de un objeto generador
- Produciendo un objeto infinito
Asegúrese de que su método finalmente produzca todas las cadenas en la salida, ya que es posible producir infinitas cadenas del conjunto sin llegar a algunas cadenas.
Es posible que no la salida por
- Produciendo la
n
cadena th dadan
- Proporcionar un oráculo de membresía que decida si una cadena dada pertenece al conjunto
Los elementos integrados están permitidos, pero les pido a los votantes que presten atención a las respuestas que implementan la operación por sí mismas en lugar de las que dependen principalmente de un elemento integrado.