Avec un ensemble de lettres, affichez toutes les chaînes constituées de ces lettres. (Ceci est l' étoile Kleene de l'ensemble.) Par exemple, pour {'a','b'}
, les chaînes sont:
'', 'a', 'b', 'aa', 'ab', 'ba', 'bb', 'aaa', 'aab', ...
Entrée: une collection non vide de lettres distinctes a..z
. Ceux-ci peuvent être des caractères ou des chaînes à caractère unique.
Sortie: Toutes les chaînes de ces lettres, dans n'importe quel ordre, sans répétition. Vous pouvez utiliser des listes de caractères comme des chaînes.
Ceci est une liste infinie, vous pouvez donc la générer par:
- Courir pour toujours en écrivant de plus en plus de chaînes. Ces chaînes peuvent être écrites dans n’importe quel format, ce qui signifie qu’elles vous permettent de savoir où se termine chaque chaîne, mais elles ne sont pas subdivisées en groupes.
- Prendre un nombre
n
en entrée et sortir les premièresn
chaînes dans n'importe quel format séparé à plat - Cédant chaque chaîne à son tour à partir d'un objet générateur
- Produire un objet infini
Assurez-vous que votre méthode génère finalement chaque chaîne de la sortie, car il est possible de produire une infinité de chaînes à partir de l'ensemble sans jamais accéder à certaines chaînes.
Vous ne pouvez pas le sortir par
- Produire la
n
thème donnéen
- Fournir un oracle d'appartenance qui décide si une chaîne donnée appartient à l'ensemble
Les opérations intégrées sont autorisées, mais je demande aux électeurs d’accorder une attention particulière aux réponses qui implémentent l’opération elles-mêmes par rapport à celles qui reposent principalement sur une commande intégrée.