Obwohl wir 17 Fragen mit Anagrammen haben , haben wir diese Frage immer noch nicht, also hier ist sie.
Deine Aufgabe
Sie müssen ein Programm oder eine Funktion schreiben, die beim Empfang eines Strings alle möglichen Anagramme davon ausgibt. Für die Zwecke dieser Frage ist ein Anagramm eine Zeichenfolge, die dasselbe Zeichen wie die ursprüngliche Zeichenfolge enthält, jedoch keine exakte Kopie der ursprünglichen Zeichenfolge ist. Ein Anagramm muss keine tatsächlichen Wörter sein oder enthalten.
Eingang
Sie können die Zeichenfolge, die eine beliebige Länge> 0 haben kann, mit einer beliebigen Standardeingabemethode akzeptieren. Es kann beliebige ASCII-Zeichen enthalten.
Ausgabe
Sie können alle möglichen Anagramme 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 , 3 Bytes
Eine Funktion, die den Stapel mit einer Liste der Anagramme oben (und als einziges Element) verlässt. Als vollständiges Programm wird eine Darstellung dieser Liste gedruckt.
Probieren Sie es online!
Wie?
quelle
Ruby , 45 Bytes
Probieren Sie es online!
Trotz eingebautem Code ist das Wort "Permutation" sehr lang :(
quelle
|[]
scheint unnötig?|[]
ist kürzer als.uniq
.MATL , 7 Bytes
Probieren Sie es online!
Erläuterung
quelle
pyth ,
84Online-Test .
quelle
Japt , 6 Bytes
Probieren Sie es online!
Erläuterung
quelle
Haskell,
4840 BytesProbieren Sie es online!
8 Bytes gespart dank Leos
tail
Tipp.quelle
tail
anstelle von verwendendelete x
, da die ursprüngliche Zeichenfolge in der Liste der Permutationen immer an erster Stelle steht. Auf diese Weise können Sie zu einer punktfreien Lösung wechseln und dann zu einer unbenannten Funktion, bei der viele Bytes gespeichert werden müssen!CJam , 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
Mathematica, 47 Bytes
quelle
StringJoin/@Rest@Permutations@Characters@#&
ist 43 Bytes.Gelee , 4 Bytes
Ein monadischer Link, der eine Liste von Zeichen aufnimmt und eine Liste von Listen von Zeichen zurückgibt - alle unterschiedlichen Anagramme, die nicht mit der Eingabe übereinstimmen.
Probieren Sie es online! (Die Fußzeile bildet ein Programm, das die Liste durch Zeilenumbrüche verbindet und druckt, um die sonst zertrümmerte Darstellung zu vermeiden.)
Wie?
quelle
Y
wenn Funktionen erlaubt wurden ... Ich sehe , Sie umgekehrt nur meine Bearbeitung auf die Frage aber: /Python 3,
857663 BytesAls Funktion und Rückgabe von Strings als Liste von Zeichen (danke an @ pizzapants184 für den Hinweis, dass dies zulässig ist):
Als eine Funktion:
85 Bytes als volles Programm:
Könnte ein wenig reduziert werden, wenn die Ausgabe von Strings als ('a', 'b', 'c') erlaubt ist (ich bin mir nicht sicher, ob dies der Fall ist).
quelle
Java 8,
245239237 Bytes-6 Bytes dank @ OlivierGrégoire .
Typisch ausführliches Java. Ich sehe viele <10-Byte-Antworten, und hier bin ich mit mehr als 200 Bytes. XD
Erläuterung:
Probieren Sie es hier aus.
quelle
l.forEach(System.out::println);
anstelle Ihrer Druckschlaufe. Außerdem mag ich es nichtSet
, auf der Klassenebene definiert zu werden, ohne dass eine Klasse eingeschlossen ist, ein Lambda, das niemand kennt, und eine Methode. Das ist einfach zu viel für mich. Ich kann verstehen, dass die Importe vom Rest getrennt sind, aber es gibt dort nichts Eigenständiges, es sieht eher aus wie eine Sammlung von Schnipsel als irgendetwas anderes. Es tut mir leid, aber zum ersten Mal in PCG gebe ich -1 :(forEach
.Set
Was ist die Alternative für die Klassenstufe ? Die gesamte Klasse inklusive Hauptmethode posten? Posten Sie die gesamte Klasse ohne die main-Methode, aber einschließlich der Klasse selbst, der Schnittstelle und des Funktionsnamens.public static void main
werden. Sagen Sie einfach "Die Eingabemethode ist ...". Die Sache ist, dass Ihre Antwort, wie es derzeit ist, alle "in sich geschlossenen" Regeln bricht. Ich bin nicht dagegen, die Regeln zu binden, aber zu brechen? Ja, es stört mich :(Perl 6 ,
3938 BytesVersuch es
Versuch es
Erweitert
quelle
C ++, 142 Bytes
ungolfed
quelle
K (oK) , 13 Bytes
Lösung:
Probieren Sie es online!
Erläuterung:
Die Auswertung erfolgt von rechts nach links.
quelle
JavaScript (ES6), 101 Byte
Aus einer früheren Antwort von mir übernommen .
Code-Snippet anzeigen
quelle
Perl 5 , 89 + 2 (
-F
) = 91 BytesProbieren Sie es online!
quelle