Ausgehend von einer Liste eindeutiger Zeichenfolgen, die Anagramme voneinander sind, geben Sie ein Anagramm der Wörter aus, die sich von den einzelnen Wörtern in der Liste unterscheiden.
Die Zeichenfolgen sind alphanumerisch und es wird garantiert ein gültiges Anagramm angezeigt.
Das Programm oder die Funktion kann, muss aber nicht nicht deterministisch sein, dh bei gleicher Eingabe kann die Mehrfachausführung eines Codes zu unterschiedlichen Ausgaben führen, sofern jede mögliche Ausgabe eine gültige ist.
Testfälle
[Input] -> Possible output
-----------------
[ab] -> ba
[aba, aab] -> baa
[123, 132, 231, 312, 321] -> 213
[hq999, 9h9q9, 9qh99] -> 999hq
[abcde123, ab3e1cd2, 321edbac, bcda1e23] -> ba213ecd
code-golf
string
permutations
MilderMilquetoast
quelle
quelle
itertools
jemals die Antwort?f=\
den Try it Online-Header einfügen und die Funktion anonym lassen, ohne den automatischen TiO-Byte-Zähler zu beeinflussen05AB1E , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
Pyth , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
Gelee , 6 Bytes
Probieren Sie es online!
1 Byte mehr als die 05AB1E- und die Pyth-Antwort.
Erläuterung:
Ich habe gewählt,
X
weil es der kürzeste Weg ist, ein Element aus der Liste auszuwählen, ohne die Liste zu ändern (Ḣ
undṪ
funktioniert nicht,ḷ/
undṛ/
ist länger), und es verursacht Zufälligkeiten.Das
µ
hier ist ziemlich redundant, aber ohne dasḢ
würde das mit dem gepaart werdenḟ
, und es wird als "Kopf der Eingabe herausfiltern" interpretiert, was ich hier nicht brauche (was ich brauche, ist "die Eingabe herausfiltern, und nimm den Kopf ").quelle
Javascript, 118 Bytes
verwendet einen fehlerhaften Zufallsgenerator, um jede "zufällige" Permutation zu durchlaufen.
Wahrscheinlich falsch, aber der schlechte Zufallsgenerator bedeutet nur, dass wir keine echte Zufälligkeit erhalten, aber trotzdem jede Permutation erhalten.
Scheint auf allen Fällen in Chrome für mich zu funktionieren, aber anscheinend aufgrund undefinierten Verhaltens bei dieser Art Missbrauch, kann es in einigen Browsern nicht funktionieren.
(Wahrscheinlich sehr ungolfed fühlen Sie sich frei, es in Ihren eigenen Lösungen zu verbessern)
80 Bytes
Dank PirateBays Kommentar - viele Bytes
-4 Bytes dank Rick
quelle
a=>b
anstelle vonfunction(a){return b}
). Das spart eine Menge Bytes.s.split("")
kann sein[...s]
. Auchjoin("")
kann `join``` seinsort
Funktion niemals zurückkehrt0
(oder zumindest extrem selten). Deshalb hat sie nicht funktioniert.Haskell , 58 Bytes
-1 Byte und ein Update dank Laikoni.
Probieren Sie es online!
Es lohnt sich wahrscheinlich nicht
Data.List
für Permutationen zu importieren, aber eh.quelle
notElem
. Ich wäre überrascht, wenn jemand eine Permutationsfunktion findet, die den Import schlägt. Mein kürzester Ansatz ist 60 Bytes im Vergleich zu den 29 Bytes des Imports.$
es vorher fehltl!!0
.Ruby , 46 Bytes
Probieren Sie es online!
quelle
Brachylog , 7 Bytes
Probieren Sie es online!
Erläuterung
quelle
Mathematica, 57 Bytes
nicht deterministisch
Probieren Sie es online!
Mathematica, 56 Bytes
deterministisch
Probieren Sie es online!
quelle
Japt ,
76 Bytes-1 Byte dank @Shaggy
Probieren Sie es online!
Nimmt Eingabezeichenfolgen als mehrere Eingaben statt als Array. Gibt eine zufällige Permutation aus. Wechseln Sie
ö
zug
, um stattdessen die erste zu erhalten.Erläuterung
quelle
á kN ö
.MATL ,
15,13, 12 BytesProbieren Sie es online!
2 Bytes dank Sanchises gespart.
setdiff(...,'rows')
ist kürzer als das Negierenismember(...,'rows')
und vermeidet eine Duplizierung. Dank Luis Mendo konnte ein weiteres Byte eingespart werden, indem auf Zellen anstatt auf Arrays gewechselt wurde.Erläuterung:
Die MATLAB / Octave-Entsprechungen sind ebenfalls enthalten.
Die Eingabe muss im Format erfolgen
{'abc', 'acb'}
.quelle
Python 3 , 78 Bytes
Probieren Sie es online!
-1 Byte danke an Herrn Xcoder
quelle
if x not in a
istif~-(x in a)
für 17878
, richtig?Pip , 11 Bytes
Übernimmt die Eingaben als Befehlszeilenargumente. Probieren Sie es online!
Erläuterung
quelle
Python 3 , 87 Bytes
Ich glaube, dies ist die einzige Einreichung, die bisher weder eine eingebaute Permutation noch zufälliges Mischen / Sortieren verwendet. Obwohl es länger ist, finde ich den Algorithmus ziemlich ordentlich.
Probieren Sie es online!
Erläuterung
Was wir tun, ist im Grunde Folgendes:
Hier ist ein Beweis, dass es funktioniert:
Der Code iteriert
front(S)
für jedenS
inL
und wählt eineS'
der nicht inL
. Aufgrund des obigen Ergebnisses wird es mindestens eines gebenS'
, das sich qualifiziert.quelle
C # (Visual C # Interactive Compiler) ,
11696 ByteMeine Golffähigkeiten sind sicherlich besser geworden, seit ich das zum ersten Mal gepostet habe!
Probieren Sie es online!
quelle
JavaScript (ES7), 172 Byte
Suchen Sie die erste lexikografische Permutation des ersten Elements des Arrays, das nicht im Array enthalten ist.
quelle
Kotlin , 104 Bytes
Verschönert
Prüfung
quelle
C ++, 169 Bytes
Probieren Sie es online!
quelle
Scala, 50 Bytes
Probieren Sie es online!
Erläuterung
quelle
R 89 Bytes
Probieren Sie die Buchstaben aus dem ersten Eintrag wiederholt aus (da sie Anagramme voneinander sein sollten) und hören Sie auf, wenn eines dieser Beispiele nicht in der ursprünglichen Liste enthalten ist.
quelle
Schale , 6 Bytes
Probieren Sie es online!
quelle
PHP , 70 Bytes
Laufen Sie auf einem Webserver und geben Sie 0 indizierte Get-Werte ein oder versuchen Sie es online!
Ungolfed
quelle
do{...}while($j);
anstelle von$j=1;while($j){...}
. Verwenden Sie die In-Place-Definition$g
, um die geschweiften Klammern zu entfernen (und vier Bytes zu sparen).PHP,
58-55Bytesnicht deterministisch; Nimmt Eingaben von Befehlszeilenargumenten entgegen
Laufen Sie mit
php -r <code>
durch Leerzeichen getrennten Wörtern oder probieren Sie es online aus .quelle
Attache , 16 Bytes
Probieren Sie es online!
Erläuterung
Alternativen
17 Bytes :
{&\S! !S@_[0]Ø_}
18 Bytes :
{&\S! !Id@_[0]Ø_}
19 Bytes :
{&\S!(!Id)@_[0]Ø_}
26 Bytes :
{&\S!Permutations@_[0]Ø_}
26 Bytes :
{&\S!Permutations[_@0]Ø_}
26 Bytes :
{(Permutations[_@0]Ø_)@0}
26 Bytes :
&\S##~`Ø#Permutations@&\S
27 Bytes :
Last@{Permutations[_@0]Ø_}
27 Bytes :
`@&0@{Permutations[_@0]Ø_}
28 Bytes :
Last##~`Ø#Permutations@&{_}
28 Bytes :
Last##~`Ø#Permutations@Last
28 Bytes :
First@{Permutations[_@0]Ø_}
30 Bytes :
{NestWhile[Shuffle,`in&_,_@0]}
33 Bytes :
{If[(q.=Shuffle[_@0])in _,$@_,q]}
33 Bytes :
{q.=Shuffle[_@0]If[q in _,$@_,q]}
34 Bytes :
{If[Has[_,q.=Shuffle[_@0]],$@_,q]}
quelle
J , 25 Bytes
Die Eingabe ist eine Liste von Boxed-Strings. Ich fand es fair, diese Listen nicht explizit als 4 8 $ 'abcde123', 'ab3e1cd2', '321edbac', 'bcda1e23' zu deklarieren.
Ich mag das @ mess in meinem Code nicht, aber dieses Mal gibt es viele serialisierte Verben.
Wie es funktioniert:
Probieren Sie es online!
quelle
{.@(-.~i.@!@#@{.A.{.)
. Probieren Sie es online!05AB1E , 5 Bytes
Probieren Sie es online!
Erläuterung
Ziemlich genau die gleiche Antwort, die @ThePirateBay gefunden hat.
quelle
JavaScript, 87 Bytes
Probieren Sie es online!
Diese Antwort basiert (obwohl stark modifiziert) auf Immes Antwort . Schlug er in einem Kommentar vor dass dies eine andere Antwort sein sollte.
Das Problem mit dem alten Ansatz ist, weil
sort
vollständig von der Implementierung abhängt. Der Standard garantiert nicht die Reihenfolge des Aufrufs der Sortierfunktion, weshalb er theoretisch niemals für den ersten oder den zweiten Testfall enden kann.Dieser Ansatz ist einige Bytes länger, aber er garantiert, dass er in begrenzter Zeit beendet wird, auch wenn er
Math.random
niemals zurückkehrt.5
.quelle
CJam , 11 Bytes
Probieren Sie es online!
Erläuterung
quelle
Perl 6 , 42 Bytes
Probieren Sie es online!
Mischt die erste Zeichenfolge der Eingabe nach dem Zufallsprinzip, bis sie kein Element der Eingabe mehr ist.
Erläuterung:
quelle