Wenn Sie eine Zeichenfolge als Eingabe angeben, geben Sie eine oder mehrere Varianten der Zeichenfolge so aus, dass:
- Kein Charakter befindet sich an seiner ursprünglichen Position
- Zu einem Zeichen, zu dem es ursprünglich gehörte, ist kein Zeichen benachbart
Sie können davon ausgehen, dass dies für die angegebene Zeichenfolge immer möglich ist und nur alphabetische Zeichen in Groß- und Kleinschreibung enthält ( [a-z]
oder [A-Z]
wenn Sie dies vorziehen).
Beachten Sie, dass Duplikate desselben Zeichens nicht als eindeutig gelten.
Beispiel: Bei der Eingabe programming
darf die Ausgabe m
beim 7. oder 8. Zeichen kein und g
beim 4. oder 11. Zeichen kein (1 indiziert) enthalten.
Beispiel:
Nimm die Schnur abcdef
Folgendes wäre eine gültige Ausgabe: daecfb
Folgendes wäre jedoch ungültig: fdbcae
wie in diesem Beispiel c
und b
immer noch benachbart.
Adjacency auch Wraps, das heißt , Sie nicht tun konnte , fdbeca
wie f
und a
sind noch immer nebeneinander.
Testfälle:
Beachten Sie, dass dies nicht die einzigen gültigen Ausgaben für die angegebenen Eingaben sind
Geschrieben als input -> output
:
helowi -> ioewhl
mayube -> euabmy
stephens -> nhseespt
aabcdeffghij -> dbfhjfigaeca
Wertung:
Dies ist Codegolf, so dass die wenigsten Bytes in jeder Sprache gewinnen!
quelle
No character is adjacent to a character that it was originally adjacent to
. Ist Ordnung nicht wichtig für die Nachbarschaft? Die Eingabe "abcd" kann also nirgendwo "ab" und auch nirgendwo "ba" enthalten?Antworten:
Gelee ,
2423 BytesProbieren Sie es online!
Extrem lang, weil ich mich in Jelly schrecklich fühle, aber es funktioniert endlich, zumindest ... immer noch beim Golfen.
quelle
Python 2 , 185 Bytes
Probieren Sie es online!
Gibt alle gültigen Zeichenfolgen aus
quelle
mayube
,stephens
undhelowi
scheint für alle 3. Ich muss arbeiten , eine Ausgabe Validator machen etwas intensivere Tests zu tun , obwohlaabcdeffghij
, aber das heißt nicht, dass es nicht funktioniert, nur dass es länger als eine Minute dauert für diesen Eingangprint next(l for l in permutations(x) if not((g(l)|g(l[::-1]))&(g(x)|g(x[::-1]))or any(a==b for a,b in zip(x,l))))
`l`[2::5]
= /PHP> = 7.1, 147 Bytes
PHP Sandbox Online
PHP> = 7.1, 184 Bytes
Verwenden Sie den levenshtein-Abstand anstelle eines Regex-Weges
PHP Sandbox Online
PHP , 217 Bytes
Version unter 7.1
Probieren Sie es online!
quelle
helowi
, Ausgängeioewlh
,i
undh
benachbart sindBrachylog , 21 Bytes
Probieren Sie es online!
Erläuterung
Ich hätte wirklich gerne
p.;?z≠ᵐ&j¬{s₂p~s~j}
für 2 Bytes weniger gearbeitet, aber es scheint~j
nicht schlau genug zu sein ...quelle
PHP 7.1,
136131 Bytesinspiriert von Jörgs Lösung :
Laufen Sie als Pipe mit
-r
oder testen Sie es online . (Stellen Sie sicher, dass PHP Version 7.1 oder höher ausgewählt ist.)Benötigt PHP 7.1; Addiere 14 Bytes für älteres PHP: Ersetze
$k-1
mit($k?:strlen($a))-1
;(zwei weitere Bytes für PHP <5.3:
$k?$k-1:strlen($a)-1
)Nervenzusammenbruch
quelle
$c=$a[$k=0], $d=$a[$k-1]
) über behandelt$s.$s
.PHP 7.1,
187 185 172 178143 BytesLaufen Sie als Pipe mit
-r
oder testen Sie es online . (Stellen Sie sicher, dass PHP Version 7.1.0 oder höher ausgewählt ist!)Nervenzusammenbruch
quelle
mayube
, Ausgängeyeuamb
,m
unda
benachbart sindRuby,
11097102 BytesProbieren Sie es online!
quelle
3594817062
als ausgang auf deinen tio link bekommen.JavaScript 6, 116 Bytes
quelle
Stax ,
2321 BytesOnline ausführen und debuggen!
Vielen Dank für @recursive für das Speichern von 2 Bytes.
Es dauert sehr lange zu laufen. Eine vernünftigere / ausführbarere Version ist (nur 2 Bytes länger)
Online ausführen und debuggen!
Erläuterung
Verwendet die entpackte Version, um zu erklären.
quelle
G
. Sie{...}X!...x!
führen denselben Block zweimal aus. Im Allgemeinen können Sie dies als umschreibenG...G
mit}...
am Ende des Programms, wie diese .G
in einem anderen Beitrag durch das Ersetzen ein Byte speichern{...}*
mitD...
. Ich denke, ich bin es einfach noch nicht ganz