Biorąc pod uwagę dwie liczby całkowite, wypisz dwie liczby całkowite, a następnie zakres między nimi (z wyłączeniem obu).
Kolejność zakresu musi być taka sama jak na wejściu.
Przykłady:
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]
Odpowiedzi:
R ,
393330 bajtówWypróbuj online!
Dzięki za zapisane bajty dla użytkownika 2390246 i J.Doe.
źródło
:
operator używa pierwszego elementu obu argumentów przez 30 bajtów05AB1E , 4 bajty
Wypróbuj online!
Wyjaśnienie
źródło
Python 3 ,
5248474241 bajtówWypróbuj online!
Połączone poprzednie wdrożenia.
źródło
or-1
aby zapisać bajt.Python 2 (Cython) ,
3635 bajtówDzięki @nwellnhof za grę w golfa na 1 bajcie!
Wypróbuj online!
Python 2 , 37 bajtów
Dzięki @JonasAusevicius za port do CPython!
Wypróbuj online!
źródło
lambda x:x+range(*x+[-cmp(*x)|1])[1:]
. Dobre rozwiązaniePerl 6 ,
2622 bajtówWypróbuj online!
Wyjaśnienie
źródło
Python 2 , 40 bajtów
Wypróbuj online!
źródło
-(y<x)|1
. bardzo fajnie, ale nie mogę zrozumieć, dlaczego to działa! Czy masz szansę to wyjaśnić?y<x
sprawdza, czyy
jest mniej niżx
, i zwraca,True
jeśli tak, wFalse
przeciwnym razie. Następnie-
stosuje się do niej jednoargumentowy , który konwertujeTrue
na-1
iFalse
na0
. Ostatnim krokiem jest bitowa LUB ta liczba za pomocą1
. To oczywiście liście1
(0b1
) nienaruszone, a także liści-1
(-0b1
) zmianie (bit znaku-1
jest ustawiona, więc jest utrzymywane jako takie). Jednak to nie konwertuje0
do1
, tak, żerange
nie narzekają mnie przy użyciustep
od0
.Python 3,
646251 byteslambda a,b:[a,b]+[*range(a+1,b)]+[*range(a-1,b,-1)]
Try it online!
Python 2,
5845 byteslambda a,b:[a,b]+range(a+1,b)+range(a-1,b,-1)
Try it online!
źródło
a<=b and
from both answers+
instead ofor
lambda a,b:[a,b,*range(a+1,b),*range(a-1,b,-1)]
Japt, 8 bytes
Try it here
źródło
JavaScript (ES6), 51 bytes
Takes input as
(a)(b)
.Try it online!
Commented
źródło
Python 2,
474140 bytesTry it online!
Here's mine, now that a lot of other Python answers have been posted
-6 bytes, thanks to G B
źródło
a<b or-1
is shorter for the 3rd range parameter. The shortest I got waslambda x,y:[x,y]+range(x+(x<y or-1),y,x<y or-1)
Java 10,
1091081041029362 bytesUsing a space-delimited String:
Try it online.
Using a List:
Try it online.
(
a<b?++a<b:--a>b
can be++a<b||(a-=2)>b
for the same byte-count: Try it online for the String or Try it online for the List.)Old (
109108104102101 bytes) answer using an array:-7 bytes thanks to @nwellnhof.
Try it online.
Explanation:
źródło
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
, which is why I usually put those at 8, and the ones that does usevar
as 10 (and the ones usingString.repeat
as 11). :) Forgot to update it after adding the List and String answers, should be corrected now. Thanks.APL (Dyalog Extended), 5 bytes
Anonymous infix function.
Try it online!
,
the first and last (lit. the concatenation of the arguments),
and (lit. concatenated to)…
the range~
without,
the first and last (lit. the concatenation of the arguments)źródło
Haskell, 34 bytes
Try it online!
źródło
b-1
asb $ (-1)
. Useb- 1
instead.NegativeLiterals
on.Jelly, 4 bytes
Try it online!
How it works
źródło
J, 26 bytes
Try it online!
Explanation:
A dyadic verb (takes left and right argument)
źródło
,,[:}.@}:<.+i.@-@(+*)@-
for 23 bytes and no special casing on relative argument ordering (rather: it's hidden inside the signum*
). i feel like this could get down under 20 but i'm tired.Octave, 45 bytes
Try it online!
źródło
J, 13 bytes
Try it online!
źródło
i.
with negative argument.Batch, 107 bytes
Takes input as command-line arguments. Explanation:
Output the two integers.
Try both ascending and descending ranges.
Loop over the inclusive range.
Exclude the two integers.
Output the current value.
źródło
Pyth, 5 bytes
Input is a two-element list,
[input 1, input 2]
. Try it online here, or verify all the test cases at once here.źródło
F
instead of.*
on 2-element lists is a brilliant trick that I will absolutely be using from here on.Red, 75 bytes
Try it online!
źródło
Clean, 49 bytes
Try it online!
źródło
Ruby,
3340 bytesTry it online!
Temporary fix, trying to find a better idea
źródło
[4,4]
this gives only one[4]
Python 2,
524741 bytesTry it online!
-5 with thanks to @JoKing
-6 by slicing the first element from the range (idea stolen from and with credit to @TFeld)
Non-lambda version...
Python 2,
514947 bytesTry it online!
-2 with thanks to @JoKing
źródło
APL (Dyalog Classic), 29 bytes
Try it online!
A port of my
J
solutionźródło
PHP (102 bytes)
Sandbox
Unfortunately (for golf) PHP has rather verbose function names, which contribute a lot to the length. But the basic idea is to create a range, then pop off the last element and stitch it back in at offset 1. For the
4,4
example I had to addcount($r=range($a,$b))>1?...:$r=[$a,$b];
which adds quite a bit, and unfortunatelyarray_splice()
is by reference which hit me for a few more bytes ($r= and a ;
). All because of that "edge case", lol.Well anyway enjoy!
źródło
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
An anonymous function that takes a 2-vector as input and returns a list.
Try it online!
Explanation
źródło
D, 85 bytes
Try it online!
A port of @HatsuPointerKun's C++ answer into D.
źródło
TI-BASIC,
3534 bytes-1 byte from Misha Lavrov
źródło
1-2(A>B
withcos(π(A>B
.seq(
wouldn't work for inputs whereA
andB
are the same, unfortunately :(seq(
, so I'm no longer convinced it even is smaller. Still, thecos(
trick should help.Charcoal, 15 bytes
Try it online! Link is to verbose version of code. Explanation:
Print the inputs on separate lines.
Print the ascending range, if any.
Print the reverse ascending reverse range, if any.
źródło
Dart,
8584 bytesTry it online!
>=
to>
źródło