Diese Frage basiert stark auf dieser Frage , sollte jedoch eine Reihe zusätzlicher Schwierigkeiten aufwerfen .
Deine Aufgabe
Sie müssen ein Programm oder eine Funktion schreiben, die beim Empfang eines Strings alle möglichen Anagramme davon ausgibt. Im Sinne dieser Frage ist ein Anagramm eine Zeichenfolge, die dasselbe Zeichen wie die ursprüngliche Zeichenfolge enthält, jedoch nicht die ursprüngliche Zeichenfolge. Ein Subanagramm ist ein Anagramm eines Teilstrings eines eingegebenen Strings. Anagramme und Subanagramme müssen keine tatsächlichen Wörter sein oder enthalten.
Eingang
Sie können eine Zeichenfolge mit einer beliebigen Länge> 0 mit einer beliebigen Standardeingabemethode akzeptieren. Es kann beliebige ASCII-Zeichen enthalten.
Ausgabe
Sie können alle möglichen Anagramme und Unterdiagramme des eingegebenen Strings auf jede Standardweise ausgeben. Sie dürfen dieselbe Zeichenfolge nicht zweimal ausgeben oder eine der Eingabe entsprechende Zeichenfolge ausgeben.
Andere Regeln
Standard-Regelungslücken sind nicht zulässig
Wertung
Das ist Code-Golf , die wenigsten Bytes gewinnen.
quelle
Antworten:
05AB1E , 7 Bytes
Eine Funktion, die eine Zeichenfolge von der Eingabe akzeptiert und eine Liste von Zeichenfolgen auf dem Stapel hinterlässt. Als vollständiges Programm wird eine Darstellung der Liste gedruckt.
Probieren Sie es online!
Wie?
quelle
Brachylog (2), 7 Bytes
Probieren Sie es online!
Erläuterung
quelle
(v2)
.Gelee , 9 Bytes
Ein monadischer Link, der eine Liste akzeptiert und eine Liste aller unterschiedlichen Unteranagramme mit Ausnahme der Eingabe selbst zurückgibt.
Probieren Sie es online!(Die Fußzeile druckt die resultierende Liste schön aus, indem sie mit Zeilenumbrüchen verbunden wird.)
Wie?
quelle
Pyth, 12
Online-Test .
quelle
Japt , 10 Bytes
Probieren Sie es online!
Ich
à
mussá
, und verwendenâ
alle in einer Antwort auch in Ordnung. Was für ein Zufall...Erläuterung
quelle
Mathematica, 60 Bytes
Permutations
Verwendet ein optionales numerisches Argument, das angibt, wie viele der Eingabewerte für die Permutationen verwendet werden sollen. Wenn wir die Länge der Eingabe angeben, werden die Permutationen für alle Teilmengen der Eingabe ohne Duplikate generiert. Alles was wir tun müssen, ist die Eingabe zu entfernen.quelle
Java 8,
313312306 BytesGeänderte Version meiner Antwort hier , wo
p("",s,l);
durch ersetzt wurdefor(int z=s.length(),i=0,j;i<z;i++)for(j=i;j<z;p("",s.substring(i,j+++1),l));
-6 Bytes dank @ OlivierGrégoire in meiner verknüpften Antwort.
Erklärung dieses Teils:
Probieren Sie es hier aus.
quelle
Perl 6 , 75 Bytes
Versuch es
Erweitert:
quelle