Cette question est fortement basée sur cette question , mais devrait poser un certain nombre de difficultés supplémentaires.
Ta tâche
Vous devez écrire un programme ou une fonction qui, lors de la réception d'une chaîne, en imprime toutes les anagrammes possibles. Aux fins de cette question, une anagramme est une chaîne qui contient le même caractère que la chaîne d'origine, mais qui n'est pas la chaîne d'origine. Un sous-diagramme est une anagramme d'une sous-chaîne d'une chaîne entrée. Les anagrammes et sous-diagrammes ne doivent pas nécessairement être ou contenir des mots réels.
Contribution
Vous pouvez accepter une chaîne, qui peut être de n'importe quelle longueur> 0, par n'importe quelle méthode d'entrée standard. Il peut contenir n'importe quel caractère ASCII.
Production
Vous pouvez sortir toutes les anagrammes et sous-diagrammes possibles de la chaîne entrée de n'importe quelle manière standard. Vous ne devez pas sortir deux fois la même chaîne ou produire une chaîne égale à l'entrée.
Autres règles
Failles standard ne sont pas autorisées
Notation
C'est le code-golf , le moins d'octets gagne.
la source
Réponses:
05AB1E , 7 octets
Une fonction qui accepte une chaîne d'entrée et laisse une liste de chaînes sur la pile. En tant que programme complet, une représentation de la liste est imprimée.
Essayez-le en ligne!
Comment?
la source
Brachylog (2), 7 octets
Essayez-le en ligne!
Explication
la source
(v2)
.Gelée , 9 octets
Un lien monadique acceptant une liste et renvoyant une liste de toutes les sous-anagrammes distinctes à l'exception de l'entrée elle-même.
Essayez-le en ligne!(le pied de page imprime la liste résultante en se joignant aux nouvelles lignes.)
Comment?
la source
Pyth, 12
Test en ligne .
la source
Japt , 10 octets
Essayez-le en ligne!
Je suis arrivé à utiliser
à
,á
etâ
tout en une seule réponse, dans l'ordre aussi. Quelle coïncidence...Explication
la source
Mathematica, 60 octets
Permutations
prend un argument numérique facultatif qui lui indique le nombre de valeurs d'entrée à utiliser pour les permutations. Si nous lui donnons la longueur de l'entrée, il générera les permutations pour tous les sous-ensembles de l'entrée sans doublons. Tout ce que nous devons faire est de supprimer l'entrée.la source
Java 8,
313312306 octetsVersion modifiée de ma réponse ici , où
p("",s,l);
a été remplacé parfor(int z=s.length(),i=0,j;i<z;i++)for(j=i;j<z;p("",s.substring(i,j+++1),l));
-6 octets merci à @ OlivierGrégoire dans ma réponse liée.
Explication de cette partie:
Essayez-le ici.
la source
Perl 6 , 75 octets
Essayez-le
Étendu:
la source