Aufgabe
Rückwärtsdurchläufe der ungeraden Zahlen in einer gegebenen Liste von 2 bis 2 15 nicht negativen ganzen Zahlen sind .
Beispiele
0 1
→ 0 1
1 3
→ 3 1
1 2 3
→ 1 2 3
1 3 2
→ 3 1 2
10 7 9 6 8 9
→ 10 9 7 6 8 9
23 12 32 23 25 27
→ 23 12 32 27 25 23
123 123 345 0 1 9
→ 345 123 123 0 9 1
Antworten:
Python 2,
756863 Bytes5 Bytes dank Dennis.
Und ich habe Dennis übertroffen .
Dank an Byeonggon Lee für den Kern des Algorithmus.
Ideone es!
Alte Version: 75 Bytes
quelle
print
braucht keine Eltern. Sie können es auch nura
einmal verwenden, sodass keine Variable erforderlich ist.Python 2,
797573 BytesDies ist eine Funktion, die ihr Argument ändert. Die zweite Einzugsebene ist ein Tabulator.
Teste es auf Ideone .
quelle
APL,
21-20BytesProbieren Sie es aus || Alle Testfälle
Erläuterung:
Edit:
~
Dank De Morgans Gesetzen gerettetquelle
Haskell,
4644 BytesVielen Dank an @xnor für das Erkennen einer Falte und das Speichern von zwei Bytes.
quelle
(h*)
! Sie können durch das Schreiben eines Byte auf dem Basisfall speichernf x=x
zweiten passen die leere Liste, obwohl es sieht aus wie einfoldr
noch kürzer:h%p|(l,r)<-span(odd.(h*))p=l++h:r;foldr(%)[]
:foldr
! Vielen Dank.Gelee , 10 Bytes
Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
Python 2,
7875 BytesSuper hacky :)
quelle
k.i
?k.i=0
in der letzten Zeile. Es ist nur eine Variable.k
undk.i
verwandt?k.i
ist eine persistente Variable zwischen den Aufrufen vonk
. Betrachten Sie es als eine provisorische Welt, ohne dasglobal
Schlüsselwort zu verwenden.Python3, 96 Bytes
Dank Leaky Nun konnten viele Bytes gespart werden!
quelle
C 107 Bytes
quelle
MATL , 20 Bytes
Die Eingabe ist ein Spaltenarray, das
;
als Trennzeichen verwendet wird.Probieren Sie es online!
Erläuterung
Betrachten Sie als Beispiel das Eingabearray
[1;2;3;5;7;4;6;7;9]
. Der erste Teil des CodesTiodgv
konvertiert dieses Array in[1;1;1;0;0;1;0;1;0]
, wobei1
eine Änderung der Parität angezeigt wird . (Insbesondere erhält der Code die Parität jedes Eintrags des Eingabearrays, berechnet aufeinanderfolgende Differenzen, konvertiert Werte ungleich Null in1
und stellt a voran1
.)Dann
Ys
berechnet die kumulative Summe , geben[1;2;3;3;3;4;4;5;5]
. Jede dieser Nummern wird als Bezeichnung verwendet , anhand derer die Elemente der Eingabe gruppiert werden . Dies geschieht durchG8XQ!
Aufteilen des Eingabearrays in ein Zellenarray, das die Gruppen enthält. In diesem Fall gibt es{[1] [2] [3;5;7] [4;6] [7;9]}
.Der Rest des Codes iteriert (
"
) im Zellenarray. Jedes konstituierende numerische Array wird mit gepusht@g
.to
erstellt eine Kopie und berechnet die Parität . Wenn (?
) das Ergebnis wahr ist, dh der Inhalt des Arrays ist ungerade, wird das Array umgedreht (P
).Der Stapel wird implizit am Ende angezeigt . Jedes numerische vertikale Array wird angezeigt und enthält eine Liste von Zahlen, die durch Zeilenumbrüche getrennt sind.
quelle
Pyth, 14 Bytes
Testfälle
quelle
J ,
333130 BytesVerwendung
quelle
C #,
179178177 BytesIch benutze ein C # Lambda. Sie können es auf .NETFiddle versuchen .
Der Code weniger verkleinern:
Ein großes Lob an Byeonggon Lee für den ursprünglichen Algorithmus.
quelle
foreach(var
und auf ändernif(n%2==1)
,if(n%2>0)
um 2 Bytes zu speichern (oder tatsächlich 1, da Ihre aktuelle Antwort 179 Bytes anstelle von 178 Bytes ist).Pyth,
2928 BytesTestsuite.
Direkte Übersetzung meiner Python-Antwort (wann ist die Übersetzung von Python zu Python eine gute Idee?)
quelle
TSQL 118 Bytes
Geige
quelle
Clojure, 86 Bytes
Hier ist die ungolfed Version
Grundsätzlich durchläuft es die Eingabesequenz und wenn es auf eine gerade Zahl stößt, addiert es die Zahl und den leeren Vektor, ansonsten, wenn es eine ungerade Zahl ist, ersetzt es das letzte Element durch diese Zahl plus dem, was im letzten Element war.
Zum Beispiel für diese Folge sieht
2 4 6 1 3 7 2
es so aus:[]<=2
[2 []]<=4
[2 [] 4 []]<=6
[2 [] 4 [] 6 []]<=1
[2 [] 4 [] 6 [1 []]]<=3
[2 [] 4 [] 6 [3 [1 []]]]<=7
[2 [] 4 [] 6 [7 [3 [1 []]]]]<=2
[2 [] 4 [] 6 [7 [3 [1 []]]] 2 []]
Wenn Sie diesen Vektor abflachen, erhalten Sie die richtige Ausgabe. Sie können es hier online sehen: https://ideone.com/d2LLEC
quelle
JavaScript (ES6)
7066Bearbeite 4 Bytes gespeichert als @Neil
quelle
:r=r.concat(o,x,o=[]),
spart Ihnen ein paar Bytes. Ich glaube , Sie können dann diese zwei weitere wie speichern gehen:a=>[...a,[]].map(x=>x&1?o=[x,...o]:r=r.concat(o,x,o=[]),r=o=[])&&r
....o
?Stax ,
1510 Bytes CP437Probieren Sie es online!
Gebundenes Gelee! So traurig, dass beim Packen nur ein Byte gespart wurde.
Entpackte Version mit 11 Bytes:
Erläuterung
{|e_^*}
ist ein Block, der alle geraden Zahlen abbildetn
zun+1
, und alle ungeraden Zahlenn
auf0
.quelle
Schale , 7 Bytes
Probieren Sie es online!
Erläuterung
quelle
Ruby , 51 Bytes
Probieren Sie es online!
Einige geringfügige Abweichungen:
quelle
Perl 5 mit
-p
42 BytesProbieren Sie es online!
quelle