Geben Sie bei zwei gegebenen Ganzzahlen die beiden Ganzzahlen und dann den Bereich zwischen ihnen aus (ohne beide).
Die Reihenfolge des Bereichs muss mit der Eingabe übereinstimmen.
Beispiele:
Input Output
0, 5 -> [0, 5, 1, 2, 3, 4]
-3, 8 -> [-3, 8, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
4, 4 -> [4, 4]
4, 5 -> [4, 5]
8, 2 -> [8, 2, 7, 6, 5, 4, 3]
-2, -7 -> [-2, -7, -3, -4, -5, -6]
Antworten:
R ,
393330 BytesProbieren Sie es online!
Vielen Dank für die gespeicherten Bytes an User2390246 und J.Doe.
quelle
:
Operator das erste Element beider Argumente für 30 Bytes verwendet05AB1E , 4 Bytes
Probieren Sie es online!
Erläuterung
quelle
Python 3 ,
5248474241 BytesProbieren Sie es online!
Kombinierte frühere Implementierungen.
quelle
or-1
, um ein Byte zu speichern.Python 2 (Cython) ,
36-35BytesVielen Dank an @nwellnhof für das Golfen ab 1 Byte!
Probieren Sie es online!
Python 2 , 37 Bytes
Vielen Dank an @JonasAusevicius für den Port zu CPython!
Probieren Sie es online!
quelle
lambda x:x+range(*x+[-cmp(*x)|1])[1:]
. Schöne LösungPerl 6 ,
2622 BytesProbieren Sie es online!
Erläuterung
quelle
Python 2 , 40 Bytes
Probieren Sie es online!
quelle
-(y<x)|1
. sehr cool, aber ich kann nicht herausfinden, warum es funktioniert! Kannst du das erklären?y<x
Überprüft grundsätzlich, ob der Werty
kleiner als istx
, und gibtTrue
ihnFalse
ansonsten zurück, wenn dies der Fall ist . Danach wird unary darauf-
angewendet, wasTrue
zu-1
undFalse
zu konvertiert0
. Der letzte Schritt ist das bitweise ODER dieser Nummer mit1
. Dies lässt offensichtlich1
(0b1
) unberührt und lässt auch-1
(-0b1
) unberührt (das Vorzeichenbit von-1
wird gesetzt, so dass es als solches beibehalten wird). Es konvertiert jedoch0
zu1
, sodassrange
ich mich nicht über die Verwendung von astep
von beschwere0
.Python 3,
646251 Byteslambda a,b:[a,b]+[*range(a+1,b)]+[*range(a-1,b,-1)]
Probieren Sie es online!
Python 2,
5845 Byteslambda a,b:[a,b]+range(a+1,b)+range(a-1,b,-1)
Probieren Sie es online!
quelle
a<=b and
beiden Antworten entfernen+
anstelle vonor
lambda a,b:[a,b,*range(a+1,b),*range(a-1,b,-1)]
Japt, 8 Bytes
Probieren Sie es hier aus
quelle
JavaScript (ES6), 51 Byte
Übernimmt die Eingabe als
(a)(b)
.Probieren Sie es online!
Kommentiert
quelle
Python 2 ,
474140 BytesProbieren Sie es online!
Hier ist meine, jetzt wo viele andere Python-Antworten gepostet wurden
-6 Bytes dank GB
quelle
a<b or-1
ist kürzer für den 3. Bereichsparameter. Der kürzeste, den ich bekommen habe, warlambda x,y:[x,y]+range(x+(x<y or-1),y,x<y or-1)
Java 10,
1091081041029362 BytesVerwenden einer durch Leerzeichen getrennten Zeichenfolge:
Probieren Sie es online aus.
Verwenden einer Liste:
Probieren Sie es online aus.
(
a<b?++a<b:--a>b
Kann++a<b||(a-=2)>b
für die gleiche Byteanzahl gelten: Online für die Zeichenfolge oder Online für die Liste .)Alte (
109108104102101 Bytes) Antwort unter Verwendung eines Arrays:-7 Bytes dank @nwellnhof .
Probieren Sie es online aus.
Erläuterung:
quelle
a->b->{var L=java.util.stream.IntStream.range(a,b).boxed().collect(java.util.Collectors.toList());L.add(0,b);L.add(0,a);return L;}
(130 Bytes)var
, weshalb ich diese normalerweise auf 8 gesetzt habe und diejenigen, dievar
als 10 verwendet werden (und diejenigen, dieString.repeat
als 11 verwenden). :) Ich habe vergessen, es zu aktualisieren, nachdem ich die Antworten "Liste" und "Zeichenfolge" hinzugefügt habe. Es sollte jetzt korrigiert werden. Vielen Dank.APL (Dyalog Extended) , 5 Bytes
Anonyme Infix-Funktion.
Probieren Sie es online!
,
die erste und letzte (lit. die Verkettung der Argumente),
und (lit. verkettet an)…
die Reichweite~
ohne,
die erste und letzte (lit. die Verkettung der Argumente)quelle
Haskell, 34 Bytes
Probieren Sie es online!
quelle
b-1
alsb $ (-1)
. Verwenden Sieb- 1
stattdessen.NegativeLiterals
an.Gelee , 4 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
J , 26 Bytes
Probieren Sie es online!
Erläuterung:
Ein dyadisches Verb (nimmt linkes und rechtes Argument)
quelle
,,[:}.@}:<.+i.@-@(+*)@-
für 23 Bytes und keine spezielle Groß- und Kleinschreibung bei der relativen Reihenfolge der Argumente (eher: es ist im Signum versteckt*
). Ich glaube, das könnte unter 20 werden, aber ich bin müde.Oktave , 45 Bytes
Probieren Sie es online!
quelle
J , 13 Bytes
Probieren Sie es online!
quelle
i.
mit negativen Argumenten.Batch, 107 Bytes
Übernimmt Eingaben als Befehlszeilenargumente. Erläuterung:
Geben Sie die zwei Ganzzahlen aus.
Probieren Sie sowohl aufsteigende als auch absteigende Bereiche aus.
Schleife über den Inklusivbereich.
Schließen Sie die zwei Ganzzahlen aus.
Den aktuellen Wert ausgeben.
quelle
Pyth , 5 Bytes
Die Eingabe ist eine Liste mit zwei Elementen
[input 1, input 2]
. Versuchen Sie es online hier oder überprüfen alle Testfälle auf einmal hier .quelle
F
von.*
Listen mit 2 Elementen anstelle von Listen mit 2 Elementen ist ein brillanter Trick, den ich von nun an unbedingt anwenden werde.Rot , 75 Bytes
Probieren Sie es online!
quelle
Sauber , 49 Bytes
Probieren Sie es online!
quelle
Ruby ,
33 bis40 BytesProbieren Sie es online!
Temporärer Fix, um eine bessere Idee zu finden
quelle
[4,4]
gibt es nur einen[4]
Python 2 ,
524741 BytesProbieren Sie es online!
-5 danke an @JoKing
-6 durch Schneiden des ersten Elements aus dem Bereich (Idee von und mit Gutschrift auf @TFeld gestohlen)
Nicht-Lambda-Version ...
Python 2 ,
514947 BytesProbieren Sie es online!
-2 mit Dank an @JoKing
quelle
APL (Dyalog Classic) , 29 Byte
Probieren Sie es online!
Ein Port meiner
J
Lösungquelle
PHP (102 Bytes)
Sandkasten
Leider hat PHP (für Golf) ziemlich ausführliche Funktionsnamen, die viel zur Länge beitragen. Die Grundidee ist jedoch, einen Bereich zu erstellen, dann das letzte Element abzuspringen und es an der Stelle 1 wieder einzunähen. Für das
4,4
Beispiel musste ich hinzufügencount($r=range($a,$b))>1?...:$r=[$a,$b];
was einiges hinzufügt, und leiderarray_splice()
ist es ein Hinweis, der mich für ein paar mehr getroffen hat Bytes ($r= and a ;
). Alles wegen diesem "Randfall", lol.Na sowieso viel Spaß!
quelle
function t($a,$b){$o=array($a,$b);for($i=$a+1;$i<$b;$i++)$o[]=$i;print_r($o);}
function t($a,$b){echo $a.$b;for($i=$a+1;$i<$b;$i++)echo $i};
Clojure , 61 Bytes
Eine anonyme Funktion, die einen 2-Vektor als Eingabe verwendet und eine Liste zurückgibt.
Probieren Sie es online!
Erläuterung
quelle
D 85 Bytes
Probieren Sie es online!
Ein Port von @ HatsuPointerKuns C ++ Antwort in D.
quelle
TI-BASIC,
3534 Bytes-1 Byte von Mischa Lawrow
quelle
1-2(A>B
durchcos(π(A>B
.seq(
würde nicht für Eingaben funktionieren, bei denenA
undB
sind leider die gleichen :(seq(
, daher bin ich nicht mehr davon überzeugt, dass es sogar kleiner ist. Trotzdem sollte dercos(
Trick helfen.Kohle , 15 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Drucken Sie die Eingaben in separaten Zeilen.
Geben Sie den aufsteigenden Bereich aus, falls vorhanden.
Drucken Sie den umgekehrten aufsteigenden umgekehrten Bereich, falls vorhanden.
quelle
Dart ,
8584 BytesProbieren Sie es online!
>=
bis>
quelle