Hier ist die Herausforderung. Schreiben Sie Code, um alle Ganzzahlen in einem Bereich auszugeben. Klingt einfach, aber hier ist der schwierige Teil. Es beginnt mit der niedrigsten und dann mit der höchsten Zahl. Dann die niedrigste Zahl, die noch nicht im Array ist. Dann das Höchste, was noch nicht drin ist.
Beispiel:
Nehmen wir als Start 1 bis 5
Die Zahlen sind [1, 2, 3, 4, 5].
Wir nehmen den ersten, also [1]. Die verbleibenden Zahlen sind [2, 3, 4, 5]. Wir nehmen das letzte, neue Array ist [1, 5]. Die verbleibenden Zahlen sind [2, 3, 4]. Wir nehmen das erste, neue Array [1, 5, 2]. Die verbleibenden Zahlen sind [3, 4]. Wir nehmen das letzte neue Array [1, 5, 2, 4]. Die restlichen Zahlen sind [3]. Wir nehmen das erste, neue Array [1, 5, 2, 4, 3]. Keine Nummern übrig, wir sind fertig. Ausgang [1, 5, 2, 4, 3]
Regeln:
- Dies ist Code Golf, schreiben Sie es in den wenigsten Bytes, in jeder Sprache.
- Keine Standardlücken.
- Links zu einem Online-Dolmetscher, bitte? (ZB https://tio.run/ )
- Zwei Eingänge, beide Ganzzahlen. Niedriges Ende der Reichweite und hohes Ende der Reichweite.
- Ich habe nichts dagegen, was der Datentyp der Ausgabe ist, aber es müssen die Zahlen in der richtigen Reihenfolge angezeigt werden.
Beispiele
Niedrig: 4 Hoch: 6 Ergebnis: 4 6 5
Niedrig: 1 Hoch: 5 Ergebnis: 1 5 2 4 3
Niedrig: -1 Hoch: 1 Ergebnis: -1 1 0
Niedrig: -1 Hoch: 2 Ergebnis: -1 2 0 1
Niedrig: -50 Hoch: 50 Ergebnis: -50 50 -49 49 -48 48 -47 47 -46 46 -45 45 -44 44 -43 43 -42 42 -41 41 -40 40 -39 39 -38 38 -37 37 -36 36 -35 35 -34 34 -33 33 -32 32 -31 31 -30 30 -29 29 -28 28 -27 27 -26 26 -25 25 -24 24 -23 23 -22 22 -21 21 - 20 20 -19 19 -18 18 -17 17 -16 16 -15 15 -14 14 -13 13 -12 12 -11 11 -10 10 -9 9 -8 8 -7 7 -6 6 -5 5 -4 4 -3 3 -2 2 -1 1 0
Viel Spaß beim Golfen!
Antworten:
R ,
383736 BytesProbieren Sie es online!
Ausnutzen der Tatsache, dass R Matrizen spaltenweise speichert
quelle
rbind
ist viel besser als mein Ansatz, aber Sie können 1 Byte sparen, indem Sie[seq(a:b)]
anstelle von verwendenunique
.seq(a:b)
Haskell , 30 Bytes
Probieren Sie es online!
quelle
R ,
65646160 Bytes-1 Byte dank Robert S.
-4 mehr dank digEmAll
Probieren Sie es online!
quelle
length(z)
mitsum(z|1)
zu speichern 1 Byte :)|
mit 1 versehen. Dies ist immer gleich 1. Wenn Sie die Summe nehmen, haben Sie einen Vektor, der mitTRUE
s gefüllt ist, sodass das Ergebnis der Länge des Vektors entspricht. Wenn der Vektor leer ist, haben Sie nichts damit zu tun,|
sodass der Ausgabevektor leer istlogical(0)
. Wenn Sie diese Summe nehmen, ist es 0Haskell , 39 Bytes
Probieren Sie es online!
quelle
Python 2 , 44 Bytes
Probieren Sie es online!
quelle
PowerShell ,
5948 BytesProbieren Sie es online!
(Scheint lang ...)Nimmt Eingaben auf
$a
und erstellt$b
den Bereich0 .. ($b-$a)
, speichert diesen in$z
und durchläuft dann diesen Bereich in einer Schleife. Die Schleife durch diesen Bereich wird nur als Zähler verwendet, um sicherzustellen, dass genügend Iterationen vorliegen. Bei jeder Iteration setzen wir$a
und$b
auf die Pipeline mit Addition / Subtraktion. Das gibt uns so etwas,1,5,2,4,3,3,4,2,5,1
dass wir uns von der Anzahl0
bis zur$b-$a
Anzahl des ursprünglichen Arrays darauf aufteilen müssen, damit wir nur noch die entsprechenden Elemente haben. Das bleibt in der Pipeline und die Ausgabe ist implizit.-11 bytes dank mazzy.
quelle
$b-$a
Trick - das ist klug!05AB1E , 6 Bytes
Probieren Sie es online!
Erläuterung
quelle
.ι
;)Japt , 14 Bytes
Probieren Sie es online!
quelle
Stax , 7 Bytes
Führen Sie es aus und debuggen Sie es
quelle
R , 51 Bytes
Probieren Sie es online!
Erläuterung: Erstellen Sie für eine Folge
x:y
von LängenN
eine Zwei-mal-N-Matrix, die aus der Folge x: y in der oberen Zeile und y: x in der unteren Zeile bestehtmatrix(c(z,rev(z)),2,,T)
. Wenn wir die erstenN
Elemente der Matrix auswählen[seq(z)]
, werden sie spaltenweise ausgewählt und ergeben die gewünschte Ausgabe.Von digEmAll überfordert
quelle
cQuents , 19 Bytes
Probieren Sie es online!
Beachten Sie, dass es momentan nicht mit TIO funktioniert, da der Interpreter von TIO nicht auf dem neuesten Stand ist.
Erläuterung
quelle
Haskell, 39 Bytes
Probieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) , 46 Byte
4 Bytes gespart dank dana!
Probieren Sie es online!
C # (Visual C # Interactive Compiler) , 65 Byte
Probieren Sie es online!
quelle
JVM-Bytecode (OpenJDK asmtools JASM), 449 Byte
Ungolfed (und etwas sauberer)
Standalone-Funktion, muss von Java als aufgerufen werden
b.a(num1,num2)
.Erläuterung
In diesem Code werden die Methodenparameter als Variablen sowie ein Boolescher Wert in der lokalen Nummer 3 verwendet, der über die auszugebende Zahl entscheidet. Bei jeder Schleifeniteration wird entweder links oder rechts ausgegeben, und diese Zahl wird für links inkrementiert oder für rechts dekrementiert. Die Schleife wird fortgesetzt, bis beide Zahlen gleich sind, und dann wird diese Zahl ausgegeben.
... Ich habe ein ausgeprägtes Gefühl, bei der Anzahl der Bytes massiv überfordert zu sein
quelle
Wolfram Language (Mathematica) ,
5654 BytesDies ist mein erstes Mal Golf!
Probieren Sie es online!
2 Bytes unter Verwendung der Infixnotation gespeichert.
Erläuterung:
Alternativ könnten wir
Take[...,b-a+1]
für das gleiche Ergebnis verwenden.Tests:
Ausgang:
quelle
APL (Dzaima / APL) , 21 Bytes
Probieren Sie es online!
quelle
Japt, 7 Bytes
Übernimmt die Eingabe als Array.
Probieren Sie es aus oder führen Sie alle Testfälle aus
quelle
MATL , 8 Bytes
Probieren Sie es online!
Erläuterung
quelle
JavaScript, 40 Bytes
Probieren Sie es online!
quelle
Viertens (gviertens) , 52 Bytes
Probieren Sie es online!
Erläuterung
Schleife von 0 bis (Ende - Start). Legen Sie End und Start auf den Stapel.
Jede Iteration:
Code-Erklärung
quelle
Julia 0,7 , 29 Bytes
Probieren Sie es online!
quelle
Haskell, 30 Bytes
Verbrauch:
3%7
gibt `[3,7,4,6,5]Für die Eingaben
l, h
ruft die Funktion die Eingaben rekursiv aufl+1, h-1
und fügtl,h
sie dem Anfang hinzu. Anstelle einer Haltebedingung wird im Codetake(h-l)
die Sequenz auf die richtige Länge gekürzt (andernfalls wäre dies eine unendliche Folge von auf- und absteigenden Zahlen).quelle
Brachylog , 15 Bytes
Die Eingabe ist eine Liste mit 2 Elementen [lo, hi]. Beachten Sie, dass der Unterstrich für negative Zahlen verwendet wird. Probieren Sie es online!
Erläuterung
quelle
MathGolf , 6 Bytes
Probieren Sie es online!
Erklärung mit
(1, 5)
Der Grund, warum dies funktioniert, ist die Tatsache, dass alle Elemente in der Ausgabe eindeutig sein sollten, sodass der Operator für eindeutige Elemente die zweite Hälfte des Arrays herausfiltert und die richtige Ausgabe erzeugt.
quelle
Perl 5
-ln
, 37 BytesProbieren Sie es online!
quelle
Java (JDK) , 52 Byte
Probieren Sie es online!
quelle
Sauber , 48 Bytes
Probieren Sie es online!
quelle
Ruby ,
373633 BytesProbieren Sie es online!
Rekursive Version mit 3 Bytes, die von GB gespeichert wurden.
Ruby , 38 Bytes
Probieren Sie es online!
Nicht rekursive Version.
quelle
Cubix, 16 Bytes
Probieren Sie es hier aus
Cubified
Erläuterung
Grundsätzlich rücken die beiden Grenzen so lange schrittweise näher zusammen, bis sie sich treffen. Jedes Mal
s
,O
wenn wir die Schleife durchlaufen , tauschen wir die Grenzen aus, geben aus, nehmen die Differenz und erhöhen mit)
oder verringern mit,(
basierend auf dem Vorzeichen.quelle
Pyth,
108 BytesProbieren Sie es hier aus
Erläuterung
quelle