Bei einer Länge von N Zeichenfolgen mit Vorzeichen kleiner als und größer als ( <
, >
) fügen Sie die Ganzzahlen 0 bis N am Anfang und am Ende sowie zwischen die einzelnen Zeichenpaare ein, sodass alle Ungleichungen erfüllt sind. Die resultierende Zeichenfolge ausgeben. Wenn es mehrere gültige Ausgaben gibt, geben Sie eine (und nur eine) davon aus.
Zum Beispiel
<<><><<
Hat 7 Zeichen, daher müssen alle Zahlen von 0 bis einschließlich 7 eingegeben werden. Eine gültige Ausgabe ist
2<3<4>1<5>0<6<7
weil alle Ungleichungen eines nach dem anderen genommen
2<3
3<4
4>1
1<5
5>0
0<6
6<7
sind wahr.
Falls gewünscht, kann die Ausgabe Leerzeichen aufweisen, die die Zeichen umgeben, z 2 < 3 < 4 > 1 < 5 > 0 < 6 < 7
.
Der kürzeste Code in Bytes gewinnt.
Testfälle
Die erste Zeile nach einer Leerzeile ist die Eingabe und die nächste (n) Zeile (n) sind jeweils gültige Ausgabebeispiele.
[empty string]
0
<
0<1
>
1>0
<<
0<1<2
<>
1<2>0
><
1>0<2
2>0<1
>>
2>1>0
<<<
0<1<2<3
><>
1>0<3>2
>><
3>2>0<1
3>1>0<2
2>1>0<3
>>>
3>2>1>0
>>><<<
3>2>1>0<4<5<6
6>3>1>0<2<4<5
4>2>1>0<3<5<6
4>3>1>0<2<5<6
<<><><<
2<3<4>1<5>0<6<7
>><><>>
7>6>0<5>1<4>3>2
<<<<<<<<<<<<<<
0<1<2<3<4<5<6<7<8<9<10<11<12<13<14
>><<<<><>><><<
6>5>4<7<8<9<10>3<11>2>1<12>0<13<14
14>5>4<7<8<9<10>3<11>2>1<12>0<13<6
quelle
Antworten:
Netzhaut , 20 Bytes
Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Probieren Sie es online! (Die erste Zeile aktiviert eine durch Zeilenvorschub getrennte Testsuite.)
Erläuterung
Eine einfache Möglichkeit, eine gültige Permutation zu finden, besteht darin, zunächst die Zahlen von
0
bisN
in der richtigen Reihenfolge einzufügen und dann die Zahlen umzukehren, die die einzelnen Unterzeichenfolgen von>
s umgeben. Nehmen Sie<><<>>><<
als Beispiel:Beide Aufgaben sind in Retina relativ einfach, obwohl wir nur mit Strings arbeiten können. Wir können ein zusätzliches Byte sparen, indem wir die Zahlen von
N
unten nach unten einfügen0
und<
stattdessen die umgebenden Abschnitte umkehren , aber das Prinzip ist dasselbe.Stufe 1: Substitution
Wir beginnen damit, die Länge von
$'
(das Suffix, dh alles nach dem Match) in jede mögliche Position in der Eingabe einzufügen. Dies fügt die Zahlen vonN
unten bis ein0
.Stufe 2: Split
Wir teilen die Eingabe
>
in separate Zeilen auf, sodass jede Zeile entweder eine einzelne Zahl oder eine Liste von Zahlen ist, mit denen sie verbunden ist<
.Stufe 3: Sortieren
Innerhalb jeder Zeile (
%
) sortieren ( ) wirO
die Zahlen (\d#
) nach ihrem numerischen Wert (#
). Da wir die Nummer in umgekehrter numerischer Reihenfolge eingegeben haben, werden sie dadurch umgekehrt.Stufe 4: Substitution
Wir verwandeln die Zeilenvorschübe
>
wieder in, um alles wieder zu einer einzigen Zeile zusammenzufügen. Das ist es.Als Randnotiz wollte ich eine Möglichkeit hinzufügen
%
, andere Trennzeichen als Zeilenvorschübe zu verwenden. Hätte ich das schon getan, hätte diese Übermittlung 14 Bytes betragen, denn dann wären die letzten drei Stufen auf eine einzige reduziert worden:quelle
> <> ,
464335 + 4 für-s=
= 39 BytesDies ist eine Implementierung von xnors Algorithmus in> <>.
Es nimmt die Eingabezeichenfolge auf dem Stapel (
-s
Flag mit dem Standardinterpreter).Sie können es mit dem Online-Dolmetscher ausprobieren .
quelle
> <> , 26 + 4 = 30 Bytes
Probieren Sie es online! +4 Bytes für das
-s=
Flag - Wenn dies nur-s
in Ordnung ist (dies würde bedeuten, dass das Flag für leere Eingaben vollständig gelöscht werden müsste), wäre dies stattdessen +3.Es wird davon ausgegangen, dass die STDIN-Eingabe leer ist, sodass
i
-1 erzeugt wird (was bei EOF der Fall ist). Das Programm versucht, -1 als Zeichen auszugeben.Verwendet den Max-of-Num-bisher
>
-für-Min-of-Num-bisher-für-<
Ansatz.Ein Programm, das sauber beendet wird und die Annahme über STDIN nicht trifft, besteht aus 4 zusätzlichen Bytes:
quelle
CJam , 16 Bytes
Probieren Sie es online!
Ein Port meiner Retina-Antwort .
Erläuterung
quelle
Perl, 29 Bytes
Beinhaltet +2 für
-lp
Mit Eingabe auf STDIN ausführen, z
Ausgabe:
order.pl
:Erläuterung
Haben Sie zwei Zähler, max beginnend mit der Zeichenkettenlänge, min beginnend mit 0. Dann an jeder Grenze (einschließlich Anfang und Ende der Zeichenkette), wenn es gerade vor a ist,
<
setzen Sie das Minimum dort und erhöhen Sie um 1, sonst setzen Sie das Maximum dort und verringern Sie um 1 (am Ende der Zeichenkette spielt es keine Rolle, welchen Zähler Sie nehmen, da beide gleich sind)quelle
s{}{/\G/...}
Ich habe das noch nie gesehen, es ist brillant.Python 2, 67 Bytes
Eine rekursive Funktion. Befriedigt jeden Bediener, indem er den kleinsten unbenutzten Wert
x
fürx<
und den größten für einsetztx>
. Der kleinste nicht verwendete Wert wird gespeicherti
und aktualisiert, und der größte nicht verwendete Wert wird ausi
der verbleibenden Länge abgeleitet.quelle
(s>'=')
anstatt(s>='>')
ein Byte zu speichern?<
und>
nicht aufeinander folgen Codepoints.=
zwischen<
und zu haben>
.Python 2,
163137 BytesMischt die Zahlen, bis die Aussage zu ausgewertet wird
True
.Versuch es.
quelle
APL, 33 Bytes
⍋⍋
ist ungewöhnlich nützlich.Erläuterung
quelle
⍋⍋
)?⍋
ist eine Note höher, die Angaben in sortierter Reihenfolge zurückgibt. Wenn Sie es zweimal machen, erhalten Sie,1
wo die kleinste Zahl war,2
wo die nächstkleinere Zahl war, ect.JavaScript (ES6),
7456 ByteBeginnt mit der Menge der Zahlen
0...N
. In jeder Phase wird einfach die größte (l
) oder die kleinste (j
) der verbleibenden Zahlen genommen. Die nächste Zahl muss per definitionem kleiner oder größer sein. Bearbeiten: Dank @Arnauld wurden massive 18 Bytes gespeichert.quelle
replace
? Vielleichts=>s.replace(/./g,c=>(c<'>'?j++:l--)+c,j=0,l=s.length)+j
replace
) auf 74 Bytes reduzieren ...Pyth - 19 Bytes
Ein Hoch auf die Vergleichsverkettung!
Funktioniert aus Sicherheitsgründen nicht online.
quelle
2sable , 20 Bytes
Erläuterung
Probieren Sie es online!
Für N <10 könnte dies 14 Bytes gewesen sein:
quelle
C #
10299 BytesUngolfed:
quelle
r = r +
Teil nicht in eine zusammengesetzte Zuweisung ändern, um ein paar Bytes zu sparen?r+
Teil auf der rechten Seite teilt dem Compiler mit, dass das Ganze ein String ist, daher wird die String-Darstellung vonc
verwendet. Wenn ich das verwender+=
, würde das?:
Teil zu einem ausgewertetint
, der Ordnungswert vonc
würde dazu addiert und nur dann würde es in seine Zeichenfolgendarstellung konvertiert.Java 8,
126125 BytesIch glaube nicht, dass das funktioniert, hehe
Ungolfed Testprogramm
quelle
.replaceAll
zu.replace
und die Klammer entfernen um(c+"")
5 Bytes zu speichern.Jelly ,
27 1412 BytesPort von @Martin Enders CJam Lösung
-2 Bytes dank @Dennis
Testen Sie es bei TryItOnline
Wie?
Vorherige Methode war mathematisch interessant, aber nicht so golfen ...
Hierbei wird das faktorielle Basissystem verwendet, um einen Index der Permutationen von [0, N] zu finden, der die Gleichung erfüllt.
quelle
U
vektorisiert, so dass Sie nicht brauchen€
.żJ0;
speichert ein weiteres Byte.Clojure,
152132126 BytesHabe eine ganze Menge Bytes gespart, indem ich so viel Leerzeichen wie möglich entfernt habe. Ich habe festgestellt, dass Leerzeichen nicht erforderlich sind, um eine Klammer von einem anderen Zeichen zu trennen.
Grundsätzlich eine Clojure-Portierung von @ Scepheos Antwort. Arbeitet identisch.
Diese
recur
Anrufe sind Killer!Ich nehme an, ich hätte Atome verwenden können, um es zu säubern.Dieswap!
Aufrufe, die erforderlich sind, um zur Anzahl hinzugefügte Atome zu verwenden: /Vielen Dank an @amalloy, dass du mir ein paar Bytes gespart hast.
Ungolfed:
quelle
loop
Bindung davors
und danach speicherna
. Sie könnten auch ein bisschen durch den Austausch des rasierenif
Baum mit eincase
:(case c \< (recur ...) nil (str ...) (recur ...))
. Und natürlichcr
könnte ein kürzerer Name sein.Haskell, 162 Bytes
Das ist verdammt lang.
quelle
Perl (107 + 1 für -p) 108
Algorithmus aus Martin Enders Antwort gestohlen
quelle
Ruby, 135 Bytes
Hinweis: Die zeitliche Komplexität ist groß (O (n!)).
quelle
Python 2,
176172 BytesEs ist nicht sehr kurz im Vergleich zu den anderen, aber ich bin froh, dass ich es so schnell gelöst habe.
Probieren Sie es online aus
Ungolfed:
Probieren Sie es online aus
quelle
zip
pop
), aber es ist ein bisschen kürzer. WennN<10
ja, könnte ich die Bespannung kürzer machen.PHP, 190 Bytes
Zufälliges Mischen, bis eine gültige Lösung vorliegt
381 Bytes erhalten alle Lösungen und wählen eine aus
quelle