The first, the last, and everything between
up vote
31
down vote
favorite
Given two integers, output the two integers, and then the range between them (excluding both).
The order of the range must be the same as the input.
Examples:
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]
code-golf
|
show 6 more comments
up vote
31
down vote
favorite
Given two integers, output the two integers, and then the range between them (excluding both).
The order of the range must be the same as the input.
Examples:
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]
code-golf
I guess we can't take the inputs in pre-ordered order?
– Kevin Cruijssen
Nov 8 at 9:55
@KevinCruijssen, no, the output order depends on the input order
– TFeld
Nov 8 at 9:58
@StewieGriffin, the output order has to be the same as the input
– TFeld
Nov 8 at 9:58
Is this output format acceptable? Note the newline
– Luis Mendo
Nov 8 at 10:48
2
@KevinCruijssen Any reasonable I/O is acceptable.
– TFeld
Nov 8 at 13:08
|
show 6 more comments
up vote
31
down vote
favorite
up vote
31
down vote
favorite
Given two integers, output the two integers, and then the range between them (excluding both).
The order of the range must be the same as the input.
Examples:
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]
code-golf
Given two integers, output the two integers, and then the range between them (excluding both).
The order of the range must be the same as the input.
Examples:
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]
code-golf
code-golf
edited Nov 9 at 8:43
asked Nov 8 at 8:53
TFeld
13.3k21039
13.3k21039
I guess we can't take the inputs in pre-ordered order?
– Kevin Cruijssen
Nov 8 at 9:55
@KevinCruijssen, no, the output order depends on the input order
– TFeld
Nov 8 at 9:58
@StewieGriffin, the output order has to be the same as the input
– TFeld
Nov 8 at 9:58
Is this output format acceptable? Note the newline
– Luis Mendo
Nov 8 at 10:48
2
@KevinCruijssen Any reasonable I/O is acceptable.
– TFeld
Nov 8 at 13:08
|
show 6 more comments
I guess we can't take the inputs in pre-ordered order?
– Kevin Cruijssen
Nov 8 at 9:55
@KevinCruijssen, no, the output order depends on the input order
– TFeld
Nov 8 at 9:58
@StewieGriffin, the output order has to be the same as the input
– TFeld
Nov 8 at 9:58
Is this output format acceptable? Note the newline
– Luis Mendo
Nov 8 at 10:48
2
@KevinCruijssen Any reasonable I/O is acceptable.
– TFeld
Nov 8 at 13:08
I guess we can't take the inputs in pre-ordered order?
– Kevin Cruijssen
Nov 8 at 9:55
I guess we can't take the inputs in pre-ordered order?
– Kevin Cruijssen
Nov 8 at 9:55
@KevinCruijssen, no, the output order depends on the input order
– TFeld
Nov 8 at 9:58
@KevinCruijssen, no, the output order depends on the input order
– TFeld
Nov 8 at 9:58
@StewieGriffin, the output order has to be the same as the input
– TFeld
Nov 8 at 9:58
@StewieGriffin, the output order has to be the same as the input
– TFeld
Nov 8 at 9:58
Is this output format acceptable? Note the newline
– Luis Mendo
Nov 8 at 10:48
Is this output format acceptable? Note the newline
– Luis Mendo
Nov 8 at 10:48
2
2
@KevinCruijssen Any reasonable I/O is acceptable.
– TFeld
Nov 8 at 13:08
@KevinCruijssen Any reasonable I/O is acceptable.
– TFeld
Nov 8 at 13:08
|
show 6 more comments
51 Answers
51
active
oldest
votes
1 2
next
up vote
14
down vote
R, 39 33 30 bytes
c(a<-scan(),setdiff(a:a[2],a))
Try it online!
Thanks for saved bytes to user2390246 and J.Doe.
You could save a few bytes by taking the input as a vector rather than as two separate integers.
– user2390246
Nov 8 at 11:47
Yeah, that's reasonable, and it actually then becomes even shorter as a full program rather than function.
– Kirill L.
Nov 8 at 12:04
You can abuse the fact the:
operator uses the first element of both args for 30 bytes
– J.Doe
Nov 8 at 12:20
add a comment |
up vote
12
down vote
05AB1E, 4 bytes
Ÿ¦¨«
Try it online!
Explanation
Ÿ # inclusive range [a ... b]
¦¨ # remove the first and last element
« # append to input
add a comment |
up vote
11
down vote
Python 3, 52 48 47 42 bytes
lambda a,b:[a,b,*range(a,b,(a<b)*2-1)[1:]]
Try it online!
Combined former implementations.
New contributor
2
You can remove the space ator-1
to save a byte.
– Kevin Cruijssen
Nov 8 at 9:56
add a comment |
up vote
9
down vote
Python 2 (Cython), 36 35 bytes
lambda x:x+range(*x,-cmp(*x)|1)[1:]
Thanks to @nwellnhof for golfing off 1 byte!
Try it online!
Python 2, 37 bytes
lambda x:x+range(*x+[-cmp(*x)|1])[1:]
Thanks to @JonasAusevicius for the port to CPython!
Try it online!
2
This can be applied to standard Python 2 at 37 bytes, making it the shortest answer yet:lambda x:x+range(*x+[-cmp(*x)|1])[1:]
. Nice solution
– Jonas Ausevicius
Nov 8 at 14:17
add a comment |
up vote
8
down vote
Perl 6, 26 22 bytes
{|@_,|[...^](@_).skip}
Try it online!
Explanation
{ }
|@_, # Slip args a,b into result
[...^](@_) # Reduce args a,b with ...^ operator, same as a...^b
.skip # Skip first element
| # Slip into result
add a comment |
up vote
7
down vote
Python 2, 40 bytes
lambda x,y:[x,y]+range(x,y,-(y<x)|1)[1:]
Try it online!
Really like-(y<x)|1
. very cool but I can't work out why it works! Any chance you can explain it?
– ElPedro
Nov 8 at 19:06
2
@ElPedro Basically,y<x
checks ify
is strictly less thanx
, and returnsTrue
if it is,False
otherwise. After that, unary-
is applied to it, which convertsTrue
to-1
andFalse
to0
. The last step is to bitwise OR this number with1
. This obviously leaves1
(0b1
) unaffected, and also leaves-1
(-0b1
) unaffected (the sign bit of-1
is set, so it's kept as such). However, it does convert0
to1
, so thatrange
doesn't complain about me using astep
of0
.
– Erik the Outgolfer
Nov 8 at 19:32
That is seriously cool and very clever. If I could upvote twice I would. Many thanks for the explanation.
– ElPedro
Nov 8 at 20:27
add a comment |
up vote
6
down vote
Python 3, 64 62 51 bytes
lambda a,b:[a,b]+[*range(a+1,b)]+[*range(a-1,b,-1)]
Try it online!
Python 2, 58 45 bytes
lambda a,b:[a,b]+range(a+1,b)+range(a-1,b,-1)
Try it online!
New contributor
2
Because an empty list is falsey, you can remove thea<=b and
from both answers
– TFeld
Nov 8 at 10:03
You could also use+
instead ofor
– TFeld
Nov 8 at 10:13
@TFeld thank you
– Jonas Ausevicius
Nov 8 at 10:24
add a comment |
up vote
6
down vote
Python 2, 47 41 bytes
lambda a,b:[a,b]+range(a,b,(a<b)*2-1)[1:]
Try it online!
Here's mine, now that a lot of other Python answers have been posted
-6 bytes, thanks to G B
Taking advantage of the empty range when it's invalid is a smart way to deal with forward or backwards lists. I could see that being very useful and is a nice trick to know exists.
– akozi
Nov 8 at 12:21
2
41 bytes using a single range: range(a,b,(a<b)*2-1)
– G B
Nov 8 at 12:35
add a comment |
up vote
6
down vote
Japt, 8 bytes
cUr!õ kU
Try it here
:Implicit input of array U
c :Concatenate
Ur : Reduce U by
!õ : Inclusive range
kU : Remove all elements in original U
add a comment |
up vote
5
down vote
JavaScript (ES6), 51 bytes
Takes input as (a)(b)
.
a=>g=(b,c=b)=>(b+=b<a|-(b>a))-a?[...g(b,c),b]:[a,c]
Try it online!
Commented
a => // main function, taking a
g = ( // g = recursive function
b, // taking b
c = b // we save a backup of the original value of b into c
) => //
(b += // add to b:
b < a | // +1 if b is less than a
-(b > a) // -1 if b is greater than a
) // (or 0 if b = a)
- a ? // if the updated value of b is not equal to a:
[ // generate a new array:
...g(b, c), // prepend all values generated by a recursive call
b // append the current value of b
] //
: // else:
[a, c] // stop recursion and return the first 2 values: a and c
add a comment |
up vote
5
down vote
Java 10, 109 108 104 102 93 62 bytes
Using a space-delimited String:
b->a->{var r=a+" "+b;for(;a<b?++a<b:--a>b;)r+=" "+a;return r;}
Try it online.
Using a List:
b->a->{var r=new java.util.Stack();for(r.add(a),r.add(b);a<b?++a<b:--a>b;)r.add(a);return r;}
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 (109 108 104 102 101 bytes) answer using an array:
a->b->{int s=a<b?1:-1,i=a!=b?(b-a)*s+1:2,r=new int[i];for(r[0]=a,r[1]=b;i>2;)r[--i]=b-=s;return r;}
-7 bytes thanks to @nwellnhof.
Try it online.
Explanation:
a->b->{ // Method with 2 int parameters & int-array return-type
int s= // Step integer, starting at:
a<b?1 // 1 if the first input is smaller than the second
:-1; // -1 otherwise
i= // Array-index integer, starting at:
a!=b? // If the inputs aren't equal:
(b-a)*s+1 // Set it to the absolute difference + 1
: // Else:
2, // Set it to 2
r=new int[i]; // Result-array of that size
for(r[0]=a, // Fill the first value with the first input
r[1]=b; // And the second value with the second input
i>2;) // Loop `i` downwards in the range [`i`,2):
r[--i]= // Decrease `i` by 1 first with `--i`
// Set the `i`'th array-value to:
b-=s; // If the step integer is 1: decrease `b` by 1
// If the step integer is -1: increase `b` by 1
// And set the array-value to this modified `b`
return r;} // Return the result-array
Isn't there anything in Java's standard library for making ranges of integers? Or it is just too verbose to use?
– Οurous
Nov 8 at 11:17
@Οurous It's indeed too verbose: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)
– Kevin Cruijssen
Nov 8 at 12:11
Is it Java 8 or Java 10 ? Because of "var" ^^'
– Neyt
Nov 9 at 10:45
1
@Neyt Ah, fixed. My initial version with the array below didn't usevar
, 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.
– Kevin Cruijssen
Nov 9 at 10:51
add a comment |
up vote
4
down vote
Haskell, 34 bytes
a#b=a:b:[a+1..b-1]++[a-1,a-2..b+1]
Try it online!
This does not work. GHC interpretsb-1
asb $ (-1)
. Useb- 1
instead.
– Mark Neu
2 days ago
@MarkNeu: it does work. See TIO link.
– nimi
2 days ago
Oh, sorry! I hadNegativeLiterals
on.
– Mark Neu
2 days ago
add a comment |
up vote
4
down vote
Jelly, 4 bytes
,œ|r
Try it online!
How it works
,œ|r Main link. Left argument: a. Right argument: b
, Pair; yield [a, b].
r Range; yield [a, ..., b].
œ| Perform multiset union.
add a comment |
up vote
4
down vote
J, 26 bytes
,,[|.@]^:(>{.)<.+1}.i.@|@-
Try it online!
Explanation:
A dyadic verb (takes left and right argument)
- subtracts the arguments
|@ and finds the absolute value
i.@ and makes a list 0..absolute difference
1}. drops the fist element
+ adds to the entire list
<. the smaller of the arguments
|.@] reverses the list
^: only if
[ the left argument
(>{.) is greater than the first item of the list
, appends the list to
, the right argument appended to the left one
1
,,[:}.@}:<.+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.
– Jonah
2 days ago
@Jonah Thank you! Btw FrownyFrog's solution is way better than mine, so I 'm not going to golf it any further.
– Galen Ivanov
2 days ago
add a comment |
up vote
4
down vote
Octave, 45 bytes
@(a,b)[a b linspace(a,b,(t=abs(a-b))+1)(2:t)]
Try it online!
IF the first is larger than the second, the range must be descending
– TFeld
Nov 8 at 11:03
Oh man, I can't read
– Luis Mendo
Nov 8 at 11:03
I ended up changing the language
– Luis Mendo
Nov 8 at 14:33
add a comment |
up vote
4
down vote
J, 13 bytes
,,<.+i.@-~-.=
Try it online!
i.@-~ range [0 .. |difference|-1], reverse if the difference is positive
-.= remove the zero (either "=" is 0 or there’s nothing to remove)
<.+ to each element add the smaller of the args
,, prepend args
Nice solution! I totally forgot abouti.
with negative argument.
– Galen Ivanov
Nov 8 at 17:40
1
this is gorgeous!
– Jonah
2 days ago
add a comment |
up vote
3
down vote
Batch, 107 bytes
@echo %1
@echo %2
@for %%s in (1 -1)do @for /l %%i in (%1,%%s,%2)do @if %1 neq %%i if %%i neq %2 echo %%i
Takes input as command-line arguments. Explanation:
@echo %1
@echo %2
Output the two integers.
@for %%s in (1 -1)do
Try both ascending and descending ranges.
@for /l %%i in (%1,%%s,%2)do
Loop over the inclusive range.
@if %1 neq %%i if %%i neq %2
Exclude the two integers.
echo %%i
Output the current value.
add a comment |
up vote
3
down vote
Pyth, 5 bytes
+QtrF
Input is a two-element list, [input 1, input 2]
. Try it online here, or verify all the test cases at once here.
+QtrFQ Implicit: Q=eval(input())
Trailing Q inferred
rFQ Generate range [input 1 - input 2)
t Discard first element
+Q Prepend Q
UsingF
instead of.*
on 2-element lists is a brilliant trick that I will absolutely be using from here on.
– hakr14
Nov 8 at 16:31
add a comment |
up vote
3
down vote
Red, 75 bytes
func[a b][s: sign? d: b - a prin[a b]loop absolute d - s[prin[""a: a + s]]]
Try it online!
add a comment |
up vote
3
down vote
Clean, 49 bytes
import StdEnv
@a b=init[a,b:tl[a,a+sign(b-a)..b]]
Try it online!
add a comment |
up vote
3
down vote
Python 2, 52 47 41 bytes
lambda i,j:[i,j]+range(i,j,(i<j)*2-1)[1:]
Try 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, 51 49 47 bytes
i,j=input();print[i,j]+range(i,j,(i<j)*2-1)[1:]
Try it online!
-2 with thanks to @JoKing
add a comment |
up vote
3
down vote
APL (Dyalog Classic), 29 bytes
{⍺,⍵,(⌽⍣(⍺>⍵))(⍺⌊⍵)+¯1↓⍳|⍺-⍵}
Try it online!
A port of my J
solution
Wow, I'm surprised this is so long for a seemingly simple task.
– Quintec
Nov 9 at 0:43
@Quintec Probably it can be golfed, or maybe another algorithm will result in much shorter solution.
– Galen Ivanov
Nov 9 at 4:35
add a comment |
up vote
3
down vote
PHP (102 bytes)
function t($a,$b){count($r=range($a,$b))>1?array_splice($r,1,0,array_pop($r)):$r=[$a,$b];print_r($r);}
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 add count($r=range($a,$b))>1?...:$r=[$a,$b];
which adds quite a bit, and unfortunately array_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!
I dont think that this is a right approach for code golf. Check this onefunction t($a,$b){$o=array($a,$b);for($i=$a+1;$i<$b;$i++)$o=$i;print_r($o);}
– th3pirat3
2 days ago
Or something like thisfunction t($a,$b){echo $a.$b;for($i=$a+1;$i<$b;$i++)echo $i};
– th3pirat3
2 days ago
1
It has to be a function and it has to output an array. If you have a better answer your more then welcome to post it.
– ArtisticPhoenix
2 days ago
I edited it, is that a valid submission now? Shall I put it as a new answer or what?
– th3pirat3
2 days ago
That is entirely up to you, I just wanted to do it without a loop ... lol
– ArtisticPhoenix
2 days ago
|
show 2 more comments
up vote
3
down vote
D, 85 bytes
Tf(T)(T a,T b){Tv=[a,b];T c=2*(b>a)-1;for(T i=a+c;a!=b&&b!=i;i+=c)v~=i;return v;}
Try it online!
A port of @HatsuPointerKun's C++ answer into D.
add a comment |
up vote
3
down vote
TI-BASIC, 35 34 bytes
-1 byte from Misha Lavrov
Prompt A,B
Disp A,B
cos(π(A>B
For(I,A+Ans,B-Ans,Ans
Disp I
End
2
And one more byte by replacing1-2(A>B
withcos(π(A>B
.
– Misha Lavrov
Nov 8 at 20:55
@MishaLavrovseq(
wouldn't work for inputs whereA
andB
are the same, unfortunately :(
– kamoroso94
Nov 8 at 22:33
True - also, I left out an argument ofseq(
, so I'm no longer convinced it even is smaller. Still, thecos(
trick should help.
– Misha Lavrov
Nov 8 at 22:34
add a comment |
up vote
2
down vote
Charcoal, 15 bytes
IE²NI…⊕θηI⮌…⊕ηθ
Try it online! Link is to verbose version of code. Explanation:
IE²N
Print the inputs on separate lines.
I…⊕θη
Print the ascending range, if any.
I⮌…⊕ηθ
Print the reverse ascending reverse range, if any.
add a comment |
up vote
2
down vote
Dart, 85 84 bytes
f(a,b)=>[a,b]+((a-b).abs()>1?List.generate((a-b).abs()-1,(i)=>(a>b?-i-1:i+1)+a):);
Try it online!
>=
to >
add a comment |
up vote
2
down vote
QBASIC, 39 53 bytes
INPUT a,b
?a
?b
FOR q=a+1TO b-1 STEP SGN(b-a)
?q
NEXT
Added the STEP
parameter to account for a>b
, and that uses the SGN()
function to get a -1 or a +1 as increment. This however breaks the REPL because the SGN()
function isn't implemented there...
Try it (the old answer) online!
add a comment |
up vote
2
down vote
Ruby, 33 40 bytes
->a,b{[a,b]+[*a..b,*a.downto(b)][1..-2]}
Try it online!
Temporary fix, trying to find a better idea
3
For[4,4]
this gives only one[4]
– Kirill L.
Nov 8 at 9:36
add a comment |
up vote
2
down vote
C (gcc), 65 bytes
f(a,b){for(printf("%d %d",a,b);a<b?++a<b:--a>b;)printf(" %d",a);}
Try it online!
Not very exciting. The loop increment is borrowed from an early version of Kevin Cruijssen's Java answer.
add a comment |
1 2
next
51 Answers
51
active
oldest
votes
51 Answers
51
active
oldest
votes
active
oldest
votes
active
oldest
votes
1 2
next
up vote
14
down vote
R, 39 33 30 bytes
c(a<-scan(),setdiff(a:a[2],a))
Try it online!
Thanks for saved bytes to user2390246 and J.Doe.
You could save a few bytes by taking the input as a vector rather than as two separate integers.
– user2390246
Nov 8 at 11:47
Yeah, that's reasonable, and it actually then becomes even shorter as a full program rather than function.
– Kirill L.
Nov 8 at 12:04
You can abuse the fact the:
operator uses the first element of both args for 30 bytes
– J.Doe
Nov 8 at 12:20
add a comment |
up vote
14
down vote
R, 39 33 30 bytes
c(a<-scan(),setdiff(a:a[2],a))
Try it online!
Thanks for saved bytes to user2390246 and J.Doe.
You could save a few bytes by taking the input as a vector rather than as two separate integers.
– user2390246
Nov 8 at 11:47
Yeah, that's reasonable, and it actually then becomes even shorter as a full program rather than function.
– Kirill L.
Nov 8 at 12:04
You can abuse the fact the:
operator uses the first element of both args for 30 bytes
– J.Doe
Nov 8 at 12:20
add a comment |
up vote
14
down vote
up vote
14
down vote
R, 39 33 30 bytes
c(a<-scan(),setdiff(a:a[2],a))
Try it online!
Thanks for saved bytes to user2390246 and J.Doe.
R, 39 33 30 bytes
c(a<-scan(),setdiff(a:a[2],a))
Try it online!
Thanks for saved bytes to user2390246 and J.Doe.
edited Nov 8 at 12:24
answered Nov 8 at 9:35
Kirill L.
3,1761118
3,1761118
You could save a few bytes by taking the input as a vector rather than as two separate integers.
– user2390246
Nov 8 at 11:47
Yeah, that's reasonable, and it actually then becomes even shorter as a full program rather than function.
– Kirill L.
Nov 8 at 12:04
You can abuse the fact the:
operator uses the first element of both args for 30 bytes
– J.Doe
Nov 8 at 12:20
add a comment |
You could save a few bytes by taking the input as a vector rather than as two separate integers.
– user2390246
Nov 8 at 11:47
Yeah, that's reasonable, and it actually then becomes even shorter as a full program rather than function.
– Kirill L.
Nov 8 at 12:04
You can abuse the fact the:
operator uses the first element of both args for 30 bytes
– J.Doe
Nov 8 at 12:20
You could save a few bytes by taking the input as a vector rather than as two separate integers.
– user2390246
Nov 8 at 11:47
You could save a few bytes by taking the input as a vector rather than as two separate integers.
– user2390246
Nov 8 at 11:47
Yeah, that's reasonable, and it actually then becomes even shorter as a full program rather than function.
– Kirill L.
Nov 8 at 12:04
Yeah, that's reasonable, and it actually then becomes even shorter as a full program rather than function.
– Kirill L.
Nov 8 at 12:04
You can abuse the fact the
:
operator uses the first element of both args for 30 bytes– J.Doe
Nov 8 at 12:20
You can abuse the fact the
:
operator uses the first element of both args for 30 bytes– J.Doe
Nov 8 at 12:20
add a comment |
up vote
12
down vote
05AB1E, 4 bytes
Ÿ¦¨«
Try it online!
Explanation
Ÿ # inclusive range [a ... b]
¦¨ # remove the first and last element
« # append to input
add a comment |
up vote
12
down vote
05AB1E, 4 bytes
Ÿ¦¨«
Try it online!
Explanation
Ÿ # inclusive range [a ... b]
¦¨ # remove the first and last element
« # append to input
add a comment |
up vote
12
down vote
up vote
12
down vote
05AB1E, 4 bytes
Ÿ¦¨«
Try it online!
Explanation
Ÿ # inclusive range [a ... b]
¦¨ # remove the first and last element
« # append to input
05AB1E, 4 bytes
Ÿ¦¨«
Try it online!
Explanation
Ÿ # inclusive range [a ... b]
¦¨ # remove the first and last element
« # append to input
answered Nov 8 at 9:09
Emigna
44.6k432136
44.6k432136
add a comment |
add a comment |
up vote
11
down vote
Python 3, 52 48 47 42 bytes
lambda a,b:[a,b,*range(a,b,(a<b)*2-1)[1:]]
Try it online!
Combined former implementations.
New contributor
2
You can remove the space ator-1
to save a byte.
– Kevin Cruijssen
Nov 8 at 9:56
add a comment |
up vote
11
down vote
Python 3, 52 48 47 42 bytes
lambda a,b:[a,b,*range(a,b,(a<b)*2-1)[1:]]
Try it online!
Combined former implementations.
New contributor
2
You can remove the space ator-1
to save a byte.
– Kevin Cruijssen
Nov 8 at 9:56
add a comment |
up vote
11
down vote
up vote
11
down vote
Python 3, 52 48 47 42 bytes
lambda a,b:[a,b,*range(a,b,(a<b)*2-1)[1:]]
Try it online!
Combined former implementations.
New contributor
Python 3, 52 48 47 42 bytes
lambda a,b:[a,b,*range(a,b,(a<b)*2-1)[1:]]
Try it online!
Combined former implementations.
New contributor
edited Nov 8 at 13:15
New contributor
answered Nov 8 at 9:15
cobaltp
1516
1516
New contributor
New contributor
2
You can remove the space ator-1
to save a byte.
– Kevin Cruijssen
Nov 8 at 9:56
add a comment |
2
You can remove the space ator-1
to save a byte.
– Kevin Cruijssen
Nov 8 at 9:56
2
2
You can remove the space at
or-1
to save a byte.– Kevin Cruijssen
Nov 8 at 9:56
You can remove the space at
or-1
to save a byte.– Kevin Cruijssen
Nov 8 at 9:56
add a comment |
up vote
9
down vote
Python 2 (Cython), 36 35 bytes
lambda x:x+range(*x,-cmp(*x)|1)[1:]
Thanks to @nwellnhof for golfing off 1 byte!
Try it online!
Python 2, 37 bytes
lambda x:x+range(*x+[-cmp(*x)|1])[1:]
Thanks to @JonasAusevicius for the port to CPython!
Try it online!
2
This can be applied to standard Python 2 at 37 bytes, making it the shortest answer yet:lambda x:x+range(*x+[-cmp(*x)|1])[1:]
. Nice solution
– Jonas Ausevicius
Nov 8 at 14:17
add a comment |
up vote
9
down vote
Python 2 (Cython), 36 35 bytes
lambda x:x+range(*x,-cmp(*x)|1)[1:]
Thanks to @nwellnhof for golfing off 1 byte!
Try it online!
Python 2, 37 bytes
lambda x:x+range(*x+[-cmp(*x)|1])[1:]
Thanks to @JonasAusevicius for the port to CPython!
Try it online!
2
This can be applied to standard Python 2 at 37 bytes, making it the shortest answer yet:lambda x:x+range(*x+[-cmp(*x)|1])[1:]
. Nice solution
– Jonas Ausevicius
Nov 8 at 14:17
add a comment |
up vote
9
down vote
up vote
9
down vote
Python 2 (Cython), 36 35 bytes
lambda x:x+range(*x,-cmp(*x)|1)[1:]
Thanks to @nwellnhof for golfing off 1 byte!
Try it online!
Python 2, 37 bytes
lambda x:x+range(*x+[-cmp(*x)|1])[1:]
Thanks to @JonasAusevicius for the port to CPython!
Try it online!
Python 2 (Cython), 36 35 bytes
lambda x:x+range(*x,-cmp(*x)|1)[1:]
Thanks to @nwellnhof for golfing off 1 byte!
Try it online!
Python 2, 37 bytes
lambda x:x+range(*x+[-cmp(*x)|1])[1:]
Thanks to @JonasAusevicius for the port to CPython!
Try it online!
edited Nov 8 at 15:04
answered Nov 8 at 13:22
Dennis♦
183k32293727
183k32293727
2
This can be applied to standard Python 2 at 37 bytes, making it the shortest answer yet:lambda x:x+range(*x+[-cmp(*x)|1])[1:]
. Nice solution
– Jonas Ausevicius
Nov 8 at 14:17
add a comment |
2
This can be applied to standard Python 2 at 37 bytes, making it the shortest answer yet:lambda x:x+range(*x+[-cmp(*x)|1])[1:]
. Nice solution
– Jonas Ausevicius
Nov 8 at 14:17
2
2
This can be applied to standard Python 2 at 37 bytes, making it the shortest answer yet:
lambda x:x+range(*x+[-cmp(*x)|1])[1:]
. Nice solution– Jonas Ausevicius
Nov 8 at 14:17
This can be applied to standard Python 2 at 37 bytes, making it the shortest answer yet:
lambda x:x+range(*x+[-cmp(*x)|1])[1:]
. Nice solution– Jonas Ausevicius
Nov 8 at 14:17
add a comment |
up vote
8
down vote
Perl 6, 26 22 bytes
{|@_,|[...^](@_).skip}
Try it online!
Explanation
{ }
|@_, # Slip args a,b into result
[...^](@_) # Reduce args a,b with ...^ operator, same as a...^b
.skip # Skip first element
| # Slip into result
add a comment |
up vote
8
down vote
Perl 6, 26 22 bytes
{|@_,|[...^](@_).skip}
Try it online!
Explanation
{ }
|@_, # Slip args a,b into result
[...^](@_) # Reduce args a,b with ...^ operator, same as a...^b
.skip # Skip first element
| # Slip into result
add a comment |
up vote
8
down vote
up vote
8
down vote
Perl 6, 26 22 bytes
{|@_,|[...^](@_).skip}
Try it online!
Explanation
{ }
|@_, # Slip args a,b into result
[...^](@_) # Reduce args a,b with ...^ operator, same as a...^b
.skip # Skip first element
| # Slip into result
Perl 6, 26 22 bytes
{|@_,|[...^](@_).skip}
Try it online!
Explanation
{ }
|@_, # Slip args a,b into result
[...^](@_) # Reduce args a,b with ...^ operator, same as a...^b
.skip # Skip first element
| # Slip into result
edited Nov 8 at 10:50
answered Nov 8 at 9:35
nwellnhof
5,628921
5,628921
add a comment |
add a comment |
up vote
7
down vote
Python 2, 40 bytes
lambda x,y:[x,y]+range(x,y,-(y<x)|1)[1:]
Try it online!
Really like-(y<x)|1
. very cool but I can't work out why it works! Any chance you can explain it?
– ElPedro
Nov 8 at 19:06
2
@ElPedro Basically,y<x
checks ify
is strictly less thanx
, and returnsTrue
if it is,False
otherwise. After that, unary-
is applied to it, which convertsTrue
to-1
andFalse
to0
. The last step is to bitwise OR this number with1
. This obviously leaves1
(0b1
) unaffected, and also leaves-1
(-0b1
) unaffected (the sign bit of-1
is set, so it's kept as such). However, it does convert0
to1
, so thatrange
doesn't complain about me using astep
of0
.
– Erik the Outgolfer
Nov 8 at 19:32
That is seriously cool and very clever. If I could upvote twice I would. Many thanks for the explanation.
– ElPedro
Nov 8 at 20:27
add a comment |
up vote
7
down vote
Python 2, 40 bytes
lambda x,y:[x,y]+range(x,y,-(y<x)|1)[1:]
Try it online!
Really like-(y<x)|1
. very cool but I can't work out why it works! Any chance you can explain it?
– ElPedro
Nov 8 at 19:06
2
@ElPedro Basically,y<x
checks ify
is strictly less thanx
, and returnsTrue
if it is,False
otherwise. After that, unary-
is applied to it, which convertsTrue
to-1
andFalse
to0
. The last step is to bitwise OR this number with1
. This obviously leaves1
(0b1
) unaffected, and also leaves-1
(-0b1
) unaffected (the sign bit of-1
is set, so it's kept as such). However, it does convert0
to1
, so thatrange
doesn't complain about me using astep
of0
.
– Erik the Outgolfer
Nov 8 at 19:32
That is seriously cool and very clever. If I could upvote twice I would. Many thanks for the explanation.
– ElPedro
Nov 8 at 20:27
add a comment |
up vote
7
down vote
up vote
7
down vote
Python 2, 40 bytes
lambda x,y:[x,y]+range(x,y,-(y<x)|1)[1:]
Try it online!
Python 2, 40 bytes
lambda x,y:[x,y]+range(x,y,-(y<x)|1)[1:]
Try it online!
answered Nov 8 at 13:06
Erik the Outgolfer
30.2k428100
30.2k428100
Really like-(y<x)|1
. very cool but I can't work out why it works! Any chance you can explain it?
– ElPedro
Nov 8 at 19:06
2
@ElPedro Basically,y<x
checks ify
is strictly less thanx
, and returnsTrue
if it is,False
otherwise. After that, unary-
is applied to it, which convertsTrue
to-1
andFalse
to0
. The last step is to bitwise OR this number with1
. This obviously leaves1
(0b1
) unaffected, and also leaves-1
(-0b1
) unaffected (the sign bit of-1
is set, so it's kept as such). However, it does convert0
to1
, so thatrange
doesn't complain about me using astep
of0
.
– Erik the Outgolfer
Nov 8 at 19:32
That is seriously cool and very clever. If I could upvote twice I would. Many thanks for the explanation.
– ElPedro
Nov 8 at 20:27
add a comment |
Really like-(y<x)|1
. very cool but I can't work out why it works! Any chance you can explain it?
– ElPedro
Nov 8 at 19:06
2
@ElPedro Basically,y<x
checks ify
is strictly less thanx
, and returnsTrue
if it is,False
otherwise. After that, unary-
is applied to it, which convertsTrue
to-1
andFalse
to0
. The last step is to bitwise OR this number with1
. This obviously leaves1
(0b1
) unaffected, and also leaves-1
(-0b1
) unaffected (the sign bit of-1
is set, so it's kept as such). However, it does convert0
to1
, so thatrange
doesn't complain about me using astep
of0
.
– Erik the Outgolfer
Nov 8 at 19:32
That is seriously cool and very clever. If I could upvote twice I would. Many thanks for the explanation.
– ElPedro
Nov 8 at 20:27
Really like
-(y<x)|1
. very cool but I can't work out why it works! Any chance you can explain it?– ElPedro
Nov 8 at 19:06
Really like
-(y<x)|1
. very cool but I can't work out why it works! Any chance you can explain it?– ElPedro
Nov 8 at 19:06
2
2
@ElPedro Basically,
y<x
checks if y
is strictly less than x
, and returns True
if it is, False
otherwise. After that, unary -
is applied to it, which converts True
to -1
and False
to 0
. The last step is to bitwise OR this number with 1
. This obviously leaves 1
(0b1
) unaffected, and also leaves -1
(-0b1
) unaffected (the sign bit of -1
is set, so it's kept as such). However, it does convert 0
to 1
, so that range
doesn't complain about me using a step
of 0
.– Erik the Outgolfer
Nov 8 at 19:32
@ElPedro Basically,
y<x
checks if y
is strictly less than x
, and returns True
if it is, False
otherwise. After that, unary -
is applied to it, which converts True
to -1
and False
to 0
. The last step is to bitwise OR this number with 1
. This obviously leaves 1
(0b1
) unaffected, and also leaves -1
(-0b1
) unaffected (the sign bit of -1
is set, so it's kept as such). However, it does convert 0
to 1
, so that range
doesn't complain about me using a step
of 0
.– Erik the Outgolfer
Nov 8 at 19:32
That is seriously cool and very clever. If I could upvote twice I would. Many thanks for the explanation.
– ElPedro
Nov 8 at 20:27
That is seriously cool and very clever. If I could upvote twice I would. Many thanks for the explanation.
– ElPedro
Nov 8 at 20:27
add a comment |
up vote
6
down vote
Python 3, 64 62 51 bytes
lambda a,b:[a,b]+[*range(a+1,b)]+[*range(a-1,b,-1)]
Try it online!
Python 2, 58 45 bytes
lambda a,b:[a,b]+range(a+1,b)+range(a-1,b,-1)
Try it online!
New contributor
2
Because an empty list is falsey, you can remove thea<=b and
from both answers
– TFeld
Nov 8 at 10:03
You could also use+
instead ofor
– TFeld
Nov 8 at 10:13
@TFeld thank you
– Jonas Ausevicius
Nov 8 at 10:24
add a comment |
up vote
6
down vote
Python 3, 64 62 51 bytes
lambda a,b:[a,b]+[*range(a+1,b)]+[*range(a-1,b,-1)]
Try it online!
Python 2, 58 45 bytes
lambda a,b:[a,b]+range(a+1,b)+range(a-1,b,-1)
Try it online!
New contributor
2
Because an empty list is falsey, you can remove thea<=b and
from both answers
– TFeld
Nov 8 at 10:03
You could also use+
instead ofor
– TFeld
Nov 8 at 10:13
@TFeld thank you
– Jonas Ausevicius
Nov 8 at 10:24
add a comment |
up vote
6
down vote
up vote
6
down vote
Python 3, 64 62 51 bytes
lambda a,b:[a,b]+[*range(a+1,b)]+[*range(a-1,b,-1)]
Try it online!
Python 2, 58 45 bytes
lambda a,b:[a,b]+range(a+1,b)+range(a-1,b,-1)
Try it online!
New contributor
Python 3, 64 62 51 bytes
lambda a,b:[a,b]+[*range(a+1,b)]+[*range(a-1,b,-1)]
Try it online!
Python 2, 58 45 bytes
lambda a,b:[a,b]+range(a+1,b)+range(a-1,b,-1)
Try it online!
New contributor
edited Nov 8 at 10:21
New contributor
answered Nov 8 at 9:21
Jonas Ausevicius
613
613
New contributor
New contributor
2
Because an empty list is falsey, you can remove thea<=b and
from both answers
– TFeld
Nov 8 at 10:03
You could also use+
instead ofor
– TFeld
Nov 8 at 10:13
@TFeld thank you
– Jonas Ausevicius
Nov 8 at 10:24
add a comment |
2
Because an empty list is falsey, you can remove thea<=b and
from both answers
– TFeld
Nov 8 at 10:03
You could also use+
instead ofor
– TFeld
Nov 8 at 10:13
@TFeld thank you
– Jonas Ausevicius
Nov 8 at 10:24
2
2
Because an empty list is falsey, you can remove the
a<=b and
from both answers– TFeld
Nov 8 at 10:03
Because an empty list is falsey, you can remove the
a<=b and
from both answers– TFeld
Nov 8 at 10:03
You could also use
+
instead of or
– TFeld
Nov 8 at 10:13
You could also use
+
instead of or
– TFeld
Nov 8 at 10:13
@TFeld thank you
– Jonas Ausevicius
Nov 8 at 10:24
@TFeld thank you
– Jonas Ausevicius
Nov 8 at 10:24
add a comment |
up vote
6
down vote
Python 2, 47 41 bytes
lambda a,b:[a,b]+range(a,b,(a<b)*2-1)[1:]
Try it online!
Here's mine, now that a lot of other Python answers have been posted
-6 bytes, thanks to G B
Taking advantage of the empty range when it's invalid is a smart way to deal with forward or backwards lists. I could see that being very useful and is a nice trick to know exists.
– akozi
Nov 8 at 12:21
2
41 bytes using a single range: range(a,b,(a<b)*2-1)
– G B
Nov 8 at 12:35
add a comment |
up vote
6
down vote
Python 2, 47 41 bytes
lambda a,b:[a,b]+range(a,b,(a<b)*2-1)[1:]
Try it online!
Here's mine, now that a lot of other Python answers have been posted
-6 bytes, thanks to G B
Taking advantage of the empty range when it's invalid is a smart way to deal with forward or backwards lists. I could see that being very useful and is a nice trick to know exists.
– akozi
Nov 8 at 12:21
2
41 bytes using a single range: range(a,b,(a<b)*2-1)
– G B
Nov 8 at 12:35
add a comment |
up vote
6
down vote
up vote
6
down vote
Python 2, 47 41 bytes
lambda a,b:[a,b]+range(a,b,(a<b)*2-1)[1:]
Try it online!
Here's mine, now that a lot of other Python answers have been posted
-6 bytes, thanks to G B
Python 2, 47 41 bytes
lambda a,b:[a,b]+range(a,b,(a<b)*2-1)[1:]
Try it online!
Here's mine, now that a lot of other Python answers have been posted
-6 bytes, thanks to G B
edited Nov 8 at 13:09
answered Nov 8 at 9:18
TFeld
13.3k21039
13.3k21039
Taking advantage of the empty range when it's invalid is a smart way to deal with forward or backwards lists. I could see that being very useful and is a nice trick to know exists.
– akozi
Nov 8 at 12:21
2
41 bytes using a single range: range(a,b,(a<b)*2-1)
– G B
Nov 8 at 12:35
add a comment |
Taking advantage of the empty range when it's invalid is a smart way to deal with forward or backwards lists. I could see that being very useful and is a nice trick to know exists.
– akozi
Nov 8 at 12:21
2
41 bytes using a single range: range(a,b,(a<b)*2-1)
– G B
Nov 8 at 12:35
Taking advantage of the empty range when it's invalid is a smart way to deal with forward or backwards lists. I could see that being very useful and is a nice trick to know exists.
– akozi
Nov 8 at 12:21
Taking advantage of the empty range when it's invalid is a smart way to deal with forward or backwards lists. I could see that being very useful and is a nice trick to know exists.
– akozi
Nov 8 at 12:21
2
2
41 bytes using a single range: range(a,b,(a<b)*2-1)
– G B
Nov 8 at 12:35
41 bytes using a single range: range(a,b,(a<b)*2-1)
– G B
Nov 8 at 12:35
add a comment |
up vote
6
down vote
Japt, 8 bytes
cUr!õ kU
Try it here
:Implicit input of array U
c :Concatenate
Ur : Reduce U by
!õ : Inclusive range
kU : Remove all elements in original U
add a comment |
up vote
6
down vote
Japt, 8 bytes
cUr!õ kU
Try it here
:Implicit input of array U
c :Concatenate
Ur : Reduce U by
!õ : Inclusive range
kU : Remove all elements in original U
add a comment |
up vote
6
down vote
up vote
6
down vote
Japt, 8 bytes
cUr!õ kU
Try it here
:Implicit input of array U
c :Concatenate
Ur : Reduce U by
!õ : Inclusive range
kU : Remove all elements in original U
Japt, 8 bytes
cUr!õ kU
Try it here
:Implicit input of array U
c :Concatenate
Ur : Reduce U by
!õ : Inclusive range
kU : Remove all elements in original U
edited Nov 8 at 16:37
answered Nov 8 at 9:07
Shaggy
17.9k21663
17.9k21663
add a comment |
add a comment |
up vote
5
down vote
JavaScript (ES6), 51 bytes
Takes input as (a)(b)
.
a=>g=(b,c=b)=>(b+=b<a|-(b>a))-a?[...g(b,c),b]:[a,c]
Try it online!
Commented
a => // main function, taking a
g = ( // g = recursive function
b, // taking b
c = b // we save a backup of the original value of b into c
) => //
(b += // add to b:
b < a | // +1 if b is less than a
-(b > a) // -1 if b is greater than a
) // (or 0 if b = a)
- a ? // if the updated value of b is not equal to a:
[ // generate a new array:
...g(b, c), // prepend all values generated by a recursive call
b // append the current value of b
] //
: // else:
[a, c] // stop recursion and return the first 2 values: a and c
add a comment |
up vote
5
down vote
JavaScript (ES6), 51 bytes
Takes input as (a)(b)
.
a=>g=(b,c=b)=>(b+=b<a|-(b>a))-a?[...g(b,c),b]:[a,c]
Try it online!
Commented
a => // main function, taking a
g = ( // g = recursive function
b, // taking b
c = b // we save a backup of the original value of b into c
) => //
(b += // add to b:
b < a | // +1 if b is less than a
-(b > a) // -1 if b is greater than a
) // (or 0 if b = a)
- a ? // if the updated value of b is not equal to a:
[ // generate a new array:
...g(b, c), // prepend all values generated by a recursive call
b // append the current value of b
] //
: // else:
[a, c] // stop recursion and return the first 2 values: a and c
add a comment |
up vote
5
down vote
up vote
5
down vote
JavaScript (ES6), 51 bytes
Takes input as (a)(b)
.
a=>g=(b,c=b)=>(b+=b<a|-(b>a))-a?[...g(b,c),b]:[a,c]
Try it online!
Commented
a => // main function, taking a
g = ( // g = recursive function
b, // taking b
c = b // we save a backup of the original value of b into c
) => //
(b += // add to b:
b < a | // +1 if b is less than a
-(b > a) // -1 if b is greater than a
) // (or 0 if b = a)
- a ? // if the updated value of b is not equal to a:
[ // generate a new array:
...g(b, c), // prepend all values generated by a recursive call
b // append the current value of b
] //
: // else:
[a, c] // stop recursion and return the first 2 values: a and c
JavaScript (ES6), 51 bytes
Takes input as (a)(b)
.
a=>g=(b,c=b)=>(b+=b<a|-(b>a))-a?[...g(b,c),b]:[a,c]
Try it online!
Commented
a => // main function, taking a
g = ( // g = recursive function
b, // taking b
c = b // we save a backup of the original value of b into c
) => //
(b += // add to b:
b < a | // +1 if b is less than a
-(b > a) // -1 if b is greater than a
) // (or 0 if b = a)
- a ? // if the updated value of b is not equal to a:
[ // generate a new array:
...g(b, c), // prepend all values generated by a recursive call
b // append the current value of b
] //
: // else:
[a, c] // stop recursion and return the first 2 values: a and c
edited Nov 9 at 8:44
answered Nov 8 at 17:03
Arnauld
68.1k584288
68.1k584288
add a comment |
add a comment |
up vote
5
down vote
Java 10, 109 108 104 102 93 62 bytes
Using a space-delimited String:
b->a->{var r=a+" "+b;for(;a<b?++a<b:--a>b;)r+=" "+a;return r;}
Try it online.
Using a List:
b->a->{var r=new java.util.Stack();for(r.add(a),r.add(b);a<b?++a<b:--a>b;)r.add(a);return r;}
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 (109 108 104 102 101 bytes) answer using an array:
a->b->{int s=a<b?1:-1,i=a!=b?(b-a)*s+1:2,r=new int[i];for(r[0]=a,r[1]=b;i>2;)r[--i]=b-=s;return r;}
-7 bytes thanks to @nwellnhof.
Try it online.
Explanation:
a->b->{ // Method with 2 int parameters & int-array return-type
int s= // Step integer, starting at:
a<b?1 // 1 if the first input is smaller than the second
:-1; // -1 otherwise
i= // Array-index integer, starting at:
a!=b? // If the inputs aren't equal:
(b-a)*s+1 // Set it to the absolute difference + 1
: // Else:
2, // Set it to 2
r=new int[i]; // Result-array of that size
for(r[0]=a, // Fill the first value with the first input
r[1]=b; // And the second value with the second input
i>2;) // Loop `i` downwards in the range [`i`,2):
r[--i]= // Decrease `i` by 1 first with `--i`
// Set the `i`'th array-value to:
b-=s; // If the step integer is 1: decrease `b` by 1
// If the step integer is -1: increase `b` by 1
// And set the array-value to this modified `b`
return r;} // Return the result-array
Isn't there anything in Java's standard library for making ranges of integers? Or it is just too verbose to use?
– Οurous
Nov 8 at 11:17
@Οurous It's indeed too verbose: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)
– Kevin Cruijssen
Nov 8 at 12:11
Is it Java 8 or Java 10 ? Because of "var" ^^'
– Neyt
Nov 9 at 10:45
1
@Neyt Ah, fixed. My initial version with the array below didn't usevar
, 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.
– Kevin Cruijssen
Nov 9 at 10:51
add a comment |
up vote
5
down vote
Java 10, 109 108 104 102 93 62 bytes
Using a space-delimited String:
b->a->{var r=a+" "+b;for(;a<b?++a<b:--a>b;)r+=" "+a;return r;}
Try it online.
Using a List:
b->a->{var r=new java.util.Stack();for(r.add(a),r.add(b);a<b?++a<b:--a>b;)r.add(a);return r;}
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 (109 108 104 102 101 bytes) answer using an array:
a->b->{int s=a<b?1:-1,i=a!=b?(b-a)*s+1:2,r=new int[i];for(r[0]=a,r[1]=b;i>2;)r[--i]=b-=s;return r;}
-7 bytes thanks to @nwellnhof.
Try it online.
Explanation:
a->b->{ // Method with 2 int parameters & int-array return-type
int s= // Step integer, starting at:
a<b?1 // 1 if the first input is smaller than the second
:-1; // -1 otherwise
i= // Array-index integer, starting at:
a!=b? // If the inputs aren't equal:
(b-a)*s+1 // Set it to the absolute difference + 1
: // Else:
2, // Set it to 2
r=new int[i]; // Result-array of that size
for(r[0]=a, // Fill the first value with the first input
r[1]=b; // And the second value with the second input
i>2;) // Loop `i` downwards in the range [`i`,2):
r[--i]= // Decrease `i` by 1 first with `--i`
// Set the `i`'th array-value to:
b-=s; // If the step integer is 1: decrease `b` by 1
// If the step integer is -1: increase `b` by 1
// And set the array-value to this modified `b`
return r;} // Return the result-array
Isn't there anything in Java's standard library for making ranges of integers? Or it is just too verbose to use?
– Οurous
Nov 8 at 11:17
@Οurous It's indeed too verbose: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)
– Kevin Cruijssen
Nov 8 at 12:11
Is it Java 8 or Java 10 ? Because of "var" ^^'
– Neyt
Nov 9 at 10:45
1
@Neyt Ah, fixed. My initial version with the array below didn't usevar
, 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.
– Kevin Cruijssen
Nov 9 at 10:51
add a comment |
up vote
5
down vote
up vote
5
down vote
Java 10, 109 108 104 102 93 62 bytes
Using a space-delimited String:
b->a->{var r=a+" "+b;for(;a<b?++a<b:--a>b;)r+=" "+a;return r;}
Try it online.
Using a List:
b->a->{var r=new java.util.Stack();for(r.add(a),r.add(b);a<b?++a<b:--a>b;)r.add(a);return r;}
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 (109 108 104 102 101 bytes) answer using an array:
a->b->{int s=a<b?1:-1,i=a!=b?(b-a)*s+1:2,r=new int[i];for(r[0]=a,r[1]=b;i>2;)r[--i]=b-=s;return r;}
-7 bytes thanks to @nwellnhof.
Try it online.
Explanation:
a->b->{ // Method with 2 int parameters & int-array return-type
int s= // Step integer, starting at:
a<b?1 // 1 if the first input is smaller than the second
:-1; // -1 otherwise
i= // Array-index integer, starting at:
a!=b? // If the inputs aren't equal:
(b-a)*s+1 // Set it to the absolute difference + 1
: // Else:
2, // Set it to 2
r=new int[i]; // Result-array of that size
for(r[0]=a, // Fill the first value with the first input
r[1]=b; // And the second value with the second input
i>2;) // Loop `i` downwards in the range [`i`,2):
r[--i]= // Decrease `i` by 1 first with `--i`
// Set the `i`'th array-value to:
b-=s; // If the step integer is 1: decrease `b` by 1
// If the step integer is -1: increase `b` by 1
// And set the array-value to this modified `b`
return r;} // Return the result-array
Java 10, 109 108 104 102 93 62 bytes
Using a space-delimited String:
b->a->{var r=a+" "+b;for(;a<b?++a<b:--a>b;)r+=" "+a;return r;}
Try it online.
Using a List:
b->a->{var r=new java.util.Stack();for(r.add(a),r.add(b);a<b?++a<b:--a>b;)r.add(a);return r;}
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 (109 108 104 102 101 bytes) answer using an array:
a->b->{int s=a<b?1:-1,i=a!=b?(b-a)*s+1:2,r=new int[i];for(r[0]=a,r[1]=b;i>2;)r[--i]=b-=s;return r;}
-7 bytes thanks to @nwellnhof.
Try it online.
Explanation:
a->b->{ // Method with 2 int parameters & int-array return-type
int s= // Step integer, starting at:
a<b?1 // 1 if the first input is smaller than the second
:-1; // -1 otherwise
i= // Array-index integer, starting at:
a!=b? // If the inputs aren't equal:
(b-a)*s+1 // Set it to the absolute difference + 1
: // Else:
2, // Set it to 2
r=new int[i]; // Result-array of that size
for(r[0]=a, // Fill the first value with the first input
r[1]=b; // And the second value with the second input
i>2;) // Loop `i` downwards in the range [`i`,2):
r[--i]= // Decrease `i` by 1 first with `--i`
// Set the `i`'th array-value to:
b-=s; // If the step integer is 1: decrease `b` by 1
// If the step integer is -1: increase `b` by 1
// And set the array-value to this modified `b`
return r;} // Return the result-array
edited Nov 9 at 10:51
answered Nov 8 at 10:06
Kevin Cruijssen
33.4k554178
33.4k554178
Isn't there anything in Java's standard library for making ranges of integers? Or it is just too verbose to use?
– Οurous
Nov 8 at 11:17
@Οurous It's indeed too verbose: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)
– Kevin Cruijssen
Nov 8 at 12:11
Is it Java 8 or Java 10 ? Because of "var" ^^'
– Neyt
Nov 9 at 10:45
1
@Neyt Ah, fixed. My initial version with the array below didn't usevar
, 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.
– Kevin Cruijssen
Nov 9 at 10:51
add a comment |
Isn't there anything in Java's standard library for making ranges of integers? Or it is just too verbose to use?
– Οurous
Nov 8 at 11:17
@Οurous It's indeed too verbose: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)
– Kevin Cruijssen
Nov 8 at 12:11
Is it Java 8 or Java 10 ? Because of "var" ^^'
– Neyt
Nov 9 at 10:45
1
@Neyt Ah, fixed. My initial version with the array below didn't usevar
, 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.
– Kevin Cruijssen
Nov 9 at 10:51
Isn't there anything in Java's standard library for making ranges of integers? Or it is just too verbose to use?
– Οurous
Nov 8 at 11:17
Isn't there anything in Java's standard library for making ranges of integers? Or it is just too verbose to use?
– Οurous
Nov 8 at 11:17
@Οurous It's indeed too verbose:
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)– Kevin Cruijssen
Nov 8 at 12:11
@Οurous It's indeed too verbose:
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)– Kevin Cruijssen
Nov 8 at 12:11
Is it Java 8 or Java 10 ? Because of "var" ^^'
– Neyt
Nov 9 at 10:45
Is it Java 8 or Java 10 ? Because of "var" ^^'
– Neyt
Nov 9 at 10:45
1
1
@Neyt Ah, fixed. My initial version with the array below didn't use
var
, which is why I usually put those at 8, and the ones that does use var
as 10 (and the ones using String.repeat
as 11). :) Forgot to update it after adding the List and String answers, should be corrected now. Thanks.– Kevin Cruijssen
Nov 9 at 10:51
@Neyt Ah, fixed. My initial version with the array below didn't use
var
, which is why I usually put those at 8, and the ones that does use var
as 10 (and the ones using String.repeat
as 11). :) Forgot to update it after adding the List and String answers, should be corrected now. Thanks.– Kevin Cruijssen
Nov 9 at 10:51
add a comment |
up vote
4
down vote
Haskell, 34 bytes
a#b=a:b:[a+1..b-1]++[a-1,a-2..b+1]
Try it online!
This does not work. GHC interpretsb-1
asb $ (-1)
. Useb- 1
instead.
– Mark Neu
2 days ago
@MarkNeu: it does work. See TIO link.
– nimi
2 days ago
Oh, sorry! I hadNegativeLiterals
on.
– Mark Neu
2 days ago
add a comment |
up vote
4
down vote
Haskell, 34 bytes
a#b=a:b:[a+1..b-1]++[a-1,a-2..b+1]
Try it online!
This does not work. GHC interpretsb-1
asb $ (-1)
. Useb- 1
instead.
– Mark Neu
2 days ago
@MarkNeu: it does work. See TIO link.
– nimi
2 days ago
Oh, sorry! I hadNegativeLiterals
on.
– Mark Neu
2 days ago
add a comment |
up vote
4
down vote
up vote
4
down vote
Haskell, 34 bytes
a#b=a:b:[a+1..b-1]++[a-1,a-2..b+1]
Try it online!
Haskell, 34 bytes
a#b=a:b:[a+1..b-1]++[a-1,a-2..b+1]
Try it online!
answered Nov 8 at 10:58
nimi
30.5k31985
30.5k31985
This does not work. GHC interpretsb-1
asb $ (-1)
. Useb- 1
instead.
– Mark Neu
2 days ago
@MarkNeu: it does work. See TIO link.
– nimi
2 days ago
Oh, sorry! I hadNegativeLiterals
on.
– Mark Neu
2 days ago
add a comment |
This does not work. GHC interpretsb-1
asb $ (-1)
. Useb- 1
instead.
– Mark Neu
2 days ago
@MarkNeu: it does work. See TIO link.
– nimi
2 days ago
Oh, sorry! I hadNegativeLiterals
on.
– Mark Neu
2 days ago
This does not work. GHC interprets
b-1
as b $ (-1)
. Use b- 1
instead.– Mark Neu
2 days ago
This does not work. GHC interprets
b-1
as b $ (-1)
. Use b- 1
instead.– Mark Neu
2 days ago
@MarkNeu: it does work. See TIO link.
– nimi
2 days ago
@MarkNeu: it does work. See TIO link.
– nimi
2 days ago
Oh, sorry! I had
NegativeLiterals
on.– Mark Neu
2 days ago
Oh, sorry! I had
NegativeLiterals
on.– Mark Neu
2 days ago
add a comment |
up vote
4
down vote
Jelly, 4 bytes
,œ|r
Try it online!
How it works
,œ|r Main link. Left argument: a. Right argument: b
, Pair; yield [a, b].
r Range; yield [a, ..., b].
œ| Perform multiset union.
add a comment |
up vote
4
down vote
Jelly, 4 bytes
,œ|r
Try it online!
How it works
,œ|r Main link. Left argument: a. Right argument: b
, Pair; yield [a, b].
r Range; yield [a, ..., b].
œ| Perform multiset union.
add a comment |
up vote
4
down vote
up vote
4
down vote
Jelly, 4 bytes
,œ|r
Try it online!
How it works
,œ|r Main link. Left argument: a. Right argument: b
, Pair; yield [a, b].
r Range; yield [a, ..., b].
œ| Perform multiset union.
Jelly, 4 bytes
,œ|r
Try it online!
How it works
,œ|r Main link. Left argument: a. Right argument: b
, Pair; yield [a, b].
r Range; yield [a, ..., b].
œ| Perform multiset union.
answered Nov 8 at 12:41
Dennis♦
183k32293727
183k32293727
add a comment |
add a comment |
up vote
4
down vote
J, 26 bytes
,,[|.@]^:(>{.)<.+1}.i.@|@-
Try it online!
Explanation:
A dyadic verb (takes left and right argument)
- subtracts the arguments
|@ and finds the absolute value
i.@ and makes a list 0..absolute difference
1}. drops the fist element
+ adds to the entire list
<. the smaller of the arguments
|.@] reverses the list
^: only if
[ the left argument
(>{.) is greater than the first item of the list
, appends the list to
, the right argument appended to the left one
1
,,[:}.@}:<.+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.
– Jonah
2 days ago
@Jonah Thank you! Btw FrownyFrog's solution is way better than mine, so I 'm not going to golf it any further.
– Galen Ivanov
2 days ago
add a comment |
up vote
4
down vote
J, 26 bytes
,,[|.@]^:(>{.)<.+1}.i.@|@-
Try it online!
Explanation:
A dyadic verb (takes left and right argument)
- subtracts the arguments
|@ and finds the absolute value
i.@ and makes a list 0..absolute difference
1}. drops the fist element
+ adds to the entire list
<. the smaller of the arguments
|.@] reverses the list
^: only if
[ the left argument
(>{.) is greater than the first item of the list
, appends the list to
, the right argument appended to the left one
1
,,[:}.@}:<.+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.
– Jonah
2 days ago
@Jonah Thank you! Btw FrownyFrog's solution is way better than mine, so I 'm not going to golf it any further.
– Galen Ivanov
2 days ago
add a comment |
up vote
4
down vote
up vote
4
down vote
J, 26 bytes
,,[|.@]^:(>{.)<.+1}.i.@|@-
Try it online!
Explanation:
A dyadic verb (takes left and right argument)
- subtracts the arguments
|@ and finds the absolute value
i.@ and makes a list 0..absolute difference
1}. drops the fist element
+ adds to the entire list
<. the smaller of the arguments
|.@] reverses the list
^: only if
[ the left argument
(>{.) is greater than the first item of the list
, appends the list to
, the right argument appended to the left one
J, 26 bytes
,,[|.@]^:(>{.)<.+1}.i.@|@-
Try it online!
Explanation:
A dyadic verb (takes left and right argument)
- subtracts the arguments
|@ and finds the absolute value
i.@ and makes a list 0..absolute difference
1}. drops the fist element
+ adds to the entire list
<. the smaller of the arguments
|.@] reverses the list
^: only if
[ the left argument
(>{.) is greater than the first item of the list
, appends the list to
, the right argument appended to the left one
edited Nov 8 at 13:10
answered Nov 8 at 12:58
Galen Ivanov
5,76211032
5,76211032
1
,,[:}.@}:<.+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.
– Jonah
2 days ago
@Jonah Thank you! Btw FrownyFrog's solution is way better than mine, so I 'm not going to golf it any further.
– Galen Ivanov
2 days ago
add a comment |
1
,,[:}.@}:<.+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.
– Jonah
2 days ago
@Jonah Thank you! Btw FrownyFrog's solution is way better than mine, so I 'm not going to golf it any further.
– Galen Ivanov
2 days ago
1
1
,,[:}.@}:<.+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.– Jonah
2 days ago
,,[:}.@}:<.+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.– Jonah
2 days ago
@Jonah Thank you! Btw FrownyFrog's solution is way better than mine, so I 'm not going to golf it any further.
– Galen Ivanov
2 days ago
@Jonah Thank you! Btw FrownyFrog's solution is way better than mine, so I 'm not going to golf it any further.
– Galen Ivanov
2 days ago
add a comment |
up vote
4
down vote
Octave, 45 bytes
@(a,b)[a b linspace(a,b,(t=abs(a-b))+1)(2:t)]
Try it online!
IF the first is larger than the second, the range must be descending
– TFeld
Nov 8 at 11:03
Oh man, I can't read
– Luis Mendo
Nov 8 at 11:03
I ended up changing the language
– Luis Mendo
Nov 8 at 14:33
add a comment |
up vote
4
down vote
Octave, 45 bytes
@(a,b)[a b linspace(a,b,(t=abs(a-b))+1)(2:t)]
Try it online!
IF the first is larger than the second, the range must be descending
– TFeld
Nov 8 at 11:03
Oh man, I can't read
– Luis Mendo
Nov 8 at 11:03
I ended up changing the language
– Luis Mendo
Nov 8 at 14:33
add a comment |
up vote
4
down vote
up vote
4
down vote
Octave, 45 bytes
@(a,b)[a b linspace(a,b,(t=abs(a-b))+1)(2:t)]
Try it online!
Octave, 45 bytes
@(a,b)[a b linspace(a,b,(t=abs(a-b))+1)(2:t)]
Try it online!
edited Nov 8 at 14:33
answered Nov 8 at 10:49
Luis Mendo
73.6k885289
73.6k885289
IF the first is larger than the second, the range must be descending
– TFeld
Nov 8 at 11:03
Oh man, I can't read
– Luis Mendo
Nov 8 at 11:03
I ended up changing the language
– Luis Mendo
Nov 8 at 14:33
add a comment |
IF the first is larger than the second, the range must be descending
– TFeld
Nov 8 at 11:03
Oh man, I can't read
– Luis Mendo
Nov 8 at 11:03
I ended up changing the language
– Luis Mendo
Nov 8 at 14:33
IF the first is larger than the second, the range must be descending
– TFeld
Nov 8 at 11:03
IF the first is larger than the second, the range must be descending
– TFeld
Nov 8 at 11:03
Oh man, I can't read
– Luis Mendo
Nov 8 at 11:03
Oh man, I can't read
– Luis Mendo
Nov 8 at 11:03
I ended up changing the language
– Luis Mendo
Nov 8 at 14:33
I ended up changing the language
– Luis Mendo
Nov 8 at 14:33
add a comment |
up vote
4
down vote
J, 13 bytes
,,<.+i.@-~-.=
Try it online!
i.@-~ range [0 .. |difference|-1], reverse if the difference is positive
-.= remove the zero (either "=" is 0 or there’s nothing to remove)
<.+ to each element add the smaller of the args
,, prepend args
Nice solution! I totally forgot abouti.
with negative argument.
– Galen Ivanov
Nov 8 at 17:40
1
this is gorgeous!
– Jonah
2 days ago
add a comment |
up vote
4
down vote
J, 13 bytes
,,<.+i.@-~-.=
Try it online!
i.@-~ range [0 .. |difference|-1], reverse if the difference is positive
-.= remove the zero (either "=" is 0 or there’s nothing to remove)
<.+ to each element add the smaller of the args
,, prepend args
Nice solution! I totally forgot abouti.
with negative argument.
– Galen Ivanov
Nov 8 at 17:40
1
this is gorgeous!
– Jonah
2 days ago
add a comment |
up vote
4
down vote
up vote
4
down vote
J, 13 bytes
,,<.+i.@-~-.=
Try it online!
i.@-~ range [0 .. |difference|-1], reverse if the difference is positive
-.= remove the zero (either "=" is 0 or there’s nothing to remove)
<.+ to each element add the smaller of the args
,, prepend args
J, 13 bytes
,,<.+i.@-~-.=
Try it online!
i.@-~ range [0 .. |difference|-1], reverse if the difference is positive
-.= remove the zero (either "=" is 0 or there’s nothing to remove)
<.+ to each element add the smaller of the args
,, prepend args
answered Nov 8 at 15:24
FrownyFrog
2,2771518
2,2771518
Nice solution! I totally forgot abouti.
with negative argument.
– Galen Ivanov
Nov 8 at 17:40
1
this is gorgeous!
– Jonah
2 days ago
add a comment |
Nice solution! I totally forgot abouti.
with negative argument.
– Galen Ivanov
Nov 8 at 17:40
1
this is gorgeous!
– Jonah
2 days ago
Nice solution! I totally forgot about
i.
with negative argument.– Galen Ivanov
Nov 8 at 17:40
Nice solution! I totally forgot about
i.
with negative argument.– Galen Ivanov
Nov 8 at 17:40
1
1
this is gorgeous!
– Jonah
2 days ago
this is gorgeous!
– Jonah
2 days ago
add a comment |
up vote
3
down vote
Batch, 107 bytes
@echo %1
@echo %2
@for %%s in (1 -1)do @for /l %%i in (%1,%%s,%2)do @if %1 neq %%i if %%i neq %2 echo %%i
Takes input as command-line arguments. Explanation:
@echo %1
@echo %2
Output the two integers.
@for %%s in (1 -1)do
Try both ascending and descending ranges.
@for /l %%i in (%1,%%s,%2)do
Loop over the inclusive range.
@if %1 neq %%i if %%i neq %2
Exclude the two integers.
echo %%i
Output the current value.
add a comment |
up vote
3
down vote
Batch, 107 bytes
@echo %1
@echo %2
@for %%s in (1 -1)do @for /l %%i in (%1,%%s,%2)do @if %1 neq %%i if %%i neq %2 echo %%i
Takes input as command-line arguments. Explanation:
@echo %1
@echo %2
Output the two integers.
@for %%s in (1 -1)do
Try both ascending and descending ranges.
@for /l %%i in (%1,%%s,%2)do
Loop over the inclusive range.
@if %1 neq %%i if %%i neq %2
Exclude the two integers.
echo %%i
Output the current value.
add a comment |
up vote
3
down vote
up vote
3
down vote
Batch, 107 bytes
@echo %1
@echo %2
@for %%s in (1 -1)do @for /l %%i in (%1,%%s,%2)do @if %1 neq %%i if %%i neq %2 echo %%i
Takes input as command-line arguments. Explanation:
@echo %1
@echo %2
Output the two integers.
@for %%s in (1 -1)do
Try both ascending and descending ranges.
@for /l %%i in (%1,%%s,%2)do
Loop over the inclusive range.
@if %1 neq %%i if %%i neq %2
Exclude the two integers.
echo %%i
Output the current value.
Batch, 107 bytes
@echo %1
@echo %2
@for %%s in (1 -1)do @for /l %%i in (%1,%%s,%2)do @if %1 neq %%i if %%i neq %2 echo %%i
Takes input as command-line arguments. Explanation:
@echo %1
@echo %2
Output the two integers.
@for %%s in (1 -1)do
Try both ascending and descending ranges.
@for /l %%i in (%1,%%s,%2)do
Loop over the inclusive range.
@if %1 neq %%i if %%i neq %2
Exclude the two integers.
echo %%i
Output the current value.
answered Nov 8 at 9:54
Neil
77.6k744174
77.6k744174
add a comment |
add a comment |
up vote
3
down vote
Pyth, 5 bytes
+QtrF
Input is a two-element list, [input 1, input 2]
. Try it online here, or verify all the test cases at once here.
+QtrFQ Implicit: Q=eval(input())
Trailing Q inferred
rFQ Generate range [input 1 - input 2)
t Discard first element
+Q Prepend Q
UsingF
instead of.*
on 2-element lists is a brilliant trick that I will absolutely be using from here on.
– hakr14
Nov 8 at 16:31
add a comment |
up vote
3
down vote
Pyth, 5 bytes
+QtrF
Input is a two-element list, [input 1, input 2]
. Try it online here, or verify all the test cases at once here.
+QtrFQ Implicit: Q=eval(input())
Trailing Q inferred
rFQ Generate range [input 1 - input 2)
t Discard first element
+Q Prepend Q
UsingF
instead of.*
on 2-element lists is a brilliant trick that I will absolutely be using from here on.
– hakr14
Nov 8 at 16:31
add a comment |
up vote
3
down vote
up vote
3
down vote
Pyth, 5 bytes
+QtrF
Input is a two-element list, [input 1, input 2]
. Try it online here, or verify all the test cases at once here.
+QtrFQ Implicit: Q=eval(input())
Trailing Q inferred
rFQ Generate range [input 1 - input 2)
t Discard first element
+Q Prepend Q
Pyth, 5 bytes
+QtrF
Input is a two-element list, [input 1, input 2]
. Try it online here, or verify all the test cases at once here.
+QtrFQ Implicit: Q=eval(input())
Trailing Q inferred
rFQ Generate range [input 1 - input 2)
t Discard first element
+Q Prepend Q
answered Nov 8 at 10:23
Sok
3,309722
3,309722
UsingF
instead of.*
on 2-element lists is a brilliant trick that I will absolutely be using from here on.
– hakr14
Nov 8 at 16:31
add a comment |
UsingF
instead of.*
on 2-element lists is a brilliant trick that I will absolutely be using from here on.
– hakr14
Nov 8 at 16:31
Using
F
instead of .*
on 2-element lists is a brilliant trick that I will absolutely be using from here on.– hakr14
Nov 8 at 16:31
Using
F
instead of .*
on 2-element lists is a brilliant trick that I will absolutely be using from here on.– hakr14
Nov 8 at 16:31
add a comment |
up vote
3
down vote
Red, 75 bytes
func[a b][s: sign? d: b - a prin[a b]loop absolute d - s[prin[""a: a + s]]]
Try it online!
add a comment |
up vote
3
down vote
Red, 75 bytes
func[a b][s: sign? d: b - a prin[a b]loop absolute d - s[prin[""a: a + s]]]
Try it online!
add a comment |
up vote
3
down vote
up vote
3
down vote
Red, 75 bytes
func[a b][s: sign? d: b - a prin[a b]loop absolute d - s[prin[""a: a + s]]]
Try it online!
Red, 75 bytes
func[a b][s: sign? d: b - a prin[a b]loop absolute d - s[prin[""a: a + s]]]
Try it online!
answered Nov 8 at 10:25
Galen Ivanov
5,76211032
5,76211032
add a comment |
add a comment |
up vote
3
down vote
Clean, 49 bytes
import StdEnv
@a b=init[a,b:tl[a,a+sign(b-a)..b]]
Try it online!
add a comment |
up vote
3
down vote
Clean, 49 bytes
import StdEnv
@a b=init[a,b:tl[a,a+sign(b-a)..b]]
Try it online!
add a comment |
up vote
3
down vote
up vote
3
down vote
Clean, 49 bytes
import StdEnv
@a b=init[a,b:tl[a,a+sign(b-a)..b]]
Try it online!
Clean, 49 bytes
import StdEnv
@a b=init[a,b:tl[a,a+sign(b-a)..b]]
Try it online!
answered Nov 8 at 11:15
Οurous
5,76311031
5,76311031
add a comment |
add a comment |
up vote
3
down vote
Python 2, 52 47 41 bytes
lambda i,j:[i,j]+range(i,j,(i<j)*2-1)[1:]
Try 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, 51 49 47 bytes
i,j=input();print[i,j]+range(i,j,(i<j)*2-1)[1:]
Try it online!
-2 with thanks to @JoKing
add a comment |
up vote
3
down vote
Python 2, 52 47 41 bytes
lambda i,j:[i,j]+range(i,j,(i<j)*2-1)[1:]
Try 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, 51 49 47 bytes
i,j=input();print[i,j]+range(i,j,(i<j)*2-1)[1:]
Try it online!
-2 with thanks to @JoKing
add a comment |
up vote
3
down vote
up vote
3
down vote
Python 2, 52 47 41 bytes
lambda i,j:[i,j]+range(i,j,(i<j)*2-1)[1:]
Try 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, 51 49 47 bytes
i,j=input();print[i,j]+range(i,j,(i<j)*2-1)[1:]
Try it online!
-2 with thanks to @JoKing
Python 2, 52 47 41 bytes
lambda i,j:[i,j]+range(i,j,(i<j)*2-1)[1:]
Try 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, 51 49 47 bytes
i,j=input();print[i,j]+range(i,j,(i<j)*2-1)[1:]
Try it online!
-2 with thanks to @JoKing
edited Nov 8 at 13:05
answered Nov 8 at 10:22
ElPedro
3,4131023
3,4131023
add a comment |
add a comment |
up vote
3
down vote
APL (Dyalog Classic), 29 bytes
{⍺,⍵,(⌽⍣(⍺>⍵))(⍺⌊⍵)+¯1↓⍳|⍺-⍵}
Try it online!
A port of my J
solution
Wow, I'm surprised this is so long for a seemingly simple task.
– Quintec
Nov 9 at 0:43
@Quintec Probably it can be golfed, or maybe another algorithm will result in much shorter solution.
– Galen Ivanov
Nov 9 at 4:35
add a comment |
up vote
3
down vote
APL (Dyalog Classic), 29 bytes
{⍺,⍵,(⌽⍣(⍺>⍵))(⍺⌊⍵)+¯1↓⍳|⍺-⍵}
Try it online!
A port of my J
solution
Wow, I'm surprised this is so long for a seemingly simple task.
– Quintec
Nov 9 at 0:43
@Quintec Probably it can be golfed, or maybe another algorithm will result in much shorter solution.
– Galen Ivanov
Nov 9 at 4:35
add a comment |
up vote
3
down vote
up vote
3
down vote
APL (Dyalog Classic), 29 bytes
{⍺,⍵,(⌽⍣(⍺>⍵))(⍺⌊⍵)+¯1↓⍳|⍺-⍵}
Try it online!
A port of my J
solution
APL (Dyalog Classic), 29 bytes
{⍺,⍵,(⌽⍣(⍺>⍵))(⍺⌊⍵)+¯1↓⍳|⍺-⍵}
Try it online!
A port of my J
solution
answered Nov 8 at 14:10
Galen Ivanov
5,76211032
5,76211032
Wow, I'm surprised this is so long for a seemingly simple task.
– Quintec
Nov 9 at 0:43
@Quintec Probably it can be golfed, or maybe another algorithm will result in much shorter solution.
– Galen Ivanov
Nov 9 at 4:35
add a comment |
Wow, I'm surprised this is so long for a seemingly simple task.
– Quintec
Nov 9 at 0:43
@Quintec Probably it can be golfed, or maybe another algorithm will result in much shorter solution.
– Galen Ivanov
Nov 9 at 4:35
Wow, I'm surprised this is so long for a seemingly simple task.
– Quintec
Nov 9 at 0:43
Wow, I'm surprised this is so long for a seemingly simple task.
– Quintec
Nov 9 at 0:43
@Quintec Probably it can be golfed, or maybe another algorithm will result in much shorter solution.
– Galen Ivanov
Nov 9 at 4:35
@Quintec Probably it can be golfed, or maybe another algorithm will result in much shorter solution.
– Galen Ivanov
Nov 9 at 4:35
add a comment |
up vote
3
down vote
PHP (102 bytes)
function t($a,$b){count($r=range($a,$b))>1?array_splice($r,1,0,array_pop($r)):$r=[$a,$b];print_r($r);}
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 add count($r=range($a,$b))>1?...:$r=[$a,$b];
which adds quite a bit, and unfortunately array_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!
I dont think that this is a right approach for code golf. Check this onefunction t($a,$b){$o=array($a,$b);for($i=$a+1;$i<$b;$i++)$o=$i;print_r($o);}
– th3pirat3
2 days ago
Or something like thisfunction t($a,$b){echo $a.$b;for($i=$a+1;$i<$b;$i++)echo $i};
– th3pirat3
2 days ago
1
It has to be a function and it has to output an array. If you have a better answer your more then welcome to post it.
– ArtisticPhoenix
2 days ago
I edited it, is that a valid submission now? Shall I put it as a new answer or what?
– th3pirat3
2 days ago
That is entirely up to you, I just wanted to do it without a loop ... lol
– ArtisticPhoenix
2 days ago
|
show 2 more comments
up vote
3
down vote
PHP (102 bytes)
function t($a,$b){count($r=range($a,$b))>1?array_splice($r,1,0,array_pop($r)):$r=[$a,$b];print_r($r);}
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 add count($r=range($a,$b))>1?...:$r=[$a,$b];
which adds quite a bit, and unfortunately array_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!
I dont think that this is a right approach for code golf. Check this onefunction t($a,$b){$o=array($a,$b);for($i=$a+1;$i<$b;$i++)$o=$i;print_r($o);}
– th3pirat3
2 days ago
Or something like thisfunction t($a,$b){echo $a.$b;for($i=$a+1;$i<$b;$i++)echo $i};
– th3pirat3
2 days ago
1
It has to be a function and it has to output an array. If you have a better answer your more then welcome to post it.
– ArtisticPhoenix
2 days ago
I edited it, is that a valid submission now? Shall I put it as a new answer or what?
– th3pirat3
2 days ago
That is entirely up to you, I just wanted to do it without a loop ... lol
– ArtisticPhoenix
2 days ago
|
show 2 more comments
up vote
3
down vote
up vote
3
down vote
PHP (102 bytes)
function t($a,$b){count($r=range($a,$b))>1?array_splice($r,1,0,array_pop($r)):$r=[$a,$b];print_r($r);}
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 add count($r=range($a,$b))>1?...:$r=[$a,$b];
which adds quite a bit, and unfortunately array_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!
PHP (102 bytes)
function t($a,$b){count($r=range($a,$b))>1?array_splice($r,1,0,array_pop($r)):$r=[$a,$b];print_r($r);}
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 add count($r=range($a,$b))>1?...:$r=[$a,$b];
which adds quite a bit, and unfortunately array_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!
edited Nov 8 at 20:13
answered Nov 8 at 20:04
ArtisticPhoenix
3396
3396
I dont think that this is a right approach for code golf. Check this onefunction t($a,$b){$o=array($a,$b);for($i=$a+1;$i<$b;$i++)$o=$i;print_r($o);}
– th3pirat3
2 days ago
Or something like thisfunction t($a,$b){echo $a.$b;for($i=$a+1;$i<$b;$i++)echo $i};
– th3pirat3
2 days ago
1
It has to be a function and it has to output an array. If you have a better answer your more then welcome to post it.
– ArtisticPhoenix
2 days ago
I edited it, is that a valid submission now? Shall I put it as a new answer or what?
– th3pirat3
2 days ago
That is entirely up to you, I just wanted to do it without a loop ... lol
– ArtisticPhoenix
2 days ago
|
show 2 more comments
I dont think that this is a right approach for code golf. Check this onefunction t($a,$b){$o=array($a,$b);for($i=$a+1;$i<$b;$i++)$o=$i;print_r($o);}
– th3pirat3
2 days ago
Or something like thisfunction t($a,$b){echo $a.$b;for($i=$a+1;$i<$b;$i++)echo $i};
– th3pirat3
2 days ago
1
It has to be a function and it has to output an array. If you have a better answer your more then welcome to post it.
– ArtisticPhoenix
2 days ago
I edited it, is that a valid submission now? Shall I put it as a new answer or what?
– th3pirat3
2 days ago
That is entirely up to you, I just wanted to do it without a loop ... lol
– ArtisticPhoenix
2 days ago
I dont think that this is a right approach for code golf. Check this one
function t($a,$b){$o=array($a,$b);for($i=$a+1;$i<$b;$i++)$o=$i;print_r($o);}
– th3pirat3
2 days ago
I dont think that this is a right approach for code golf. Check this one
function t($a,$b){$o=array($a,$b);for($i=$a+1;$i<$b;$i++)$o=$i;print_r($o);}
– th3pirat3
2 days ago
Or something like this
function t($a,$b){echo $a.$b;for($i=$a+1;$i<$b;$i++)echo $i};
– th3pirat3
2 days ago
Or something like this
function t($a,$b){echo $a.$b;for($i=$a+1;$i<$b;$i++)echo $i};
– th3pirat3
2 days ago
1
1
It has to be a function and it has to output an array. If you have a better answer your more then welcome to post it.
– ArtisticPhoenix
2 days ago
It has to be a function and it has to output an array. If you have a better answer your more then welcome to post it.
– ArtisticPhoenix
2 days ago
I edited it, is that a valid submission now? Shall I put it as a new answer or what?
– th3pirat3
2 days ago
I edited it, is that a valid submission now? Shall I put it as a new answer or what?
– th3pirat3
2 days ago
That is entirely up to you, I just wanted to do it without a loop ... lol
– ArtisticPhoenix
2 days ago
That is entirely up to you, I just wanted to do it without a loop ... lol
– ArtisticPhoenix
2 days ago
|
show 2 more comments
up vote
3
down vote
D, 85 bytes
Tf(T)(T a,T b){Tv=[a,b];T c=2*(b>a)-1;for(T i=a+c;a!=b&&b!=i;i+=c)v~=i;return v;}
Try it online!
A port of @HatsuPointerKun's C++ answer into D.
add a comment |
up vote
3
down vote
D, 85 bytes
Tf(T)(T a,T b){Tv=[a,b];T c=2*(b>a)-1;for(T i=a+c;a!=b&&b!=i;i+=c)v~=i;return v;}
Try it online!
A port of @HatsuPointerKun's C++ answer into D.
add a comment |
up vote
3
down vote
up vote
3
down vote
D, 85 bytes
Tf(T)(T a,T b){Tv=[a,b];T c=2*(b>a)-1;for(T i=a+c;a!=b&&b!=i;i+=c)v~=i;return v;}
Try it online!
A port of @HatsuPointerKun's C++ answer into D.
D, 85 bytes
Tf(T)(T a,T b){Tv=[a,b];T c=2*(b>a)-1;for(T i=a+c;a!=b&&b!=i;i+=c)v~=i;return v;}
Try it online!
A port of @HatsuPointerKun's C++ answer into D.
answered Nov 10 at 2:37
Zacharý
5,07511035
5,07511035
add a comment |
add a comment |
up vote
3
down vote
TI-BASIC, 35 34 bytes
-1 byte from Misha Lavrov
Prompt A,B
Disp A,B
cos(π(A>B
For(I,A+Ans,B-Ans,Ans
Disp I
End
2
And one more byte by replacing1-2(A>B
withcos(π(A>B
.
– Misha Lavrov
Nov 8 at 20:55
@MishaLavrovseq(
wouldn't work for inputs whereA
andB
are the same, unfortunately :(
– kamoroso94
Nov 8 at 22:33
True - also, I left out an argument ofseq(
, so I'm no longer convinced it even is smaller. Still, thecos(
trick should help.
– Misha Lavrov
Nov 8 at 22:34
add a comment |
up vote
3
down vote
TI-BASIC, 35 34 bytes
-1 byte from Misha Lavrov
Prompt A,B
Disp A,B
cos(π(A>B
For(I,A+Ans,B-Ans,Ans
Disp I
End
2
And one more byte by replacing1-2(A>B
withcos(π(A>B
.
– Misha Lavrov
Nov 8 at 20:55
@MishaLavrovseq(
wouldn't work for inputs whereA
andB
are the same, unfortunately :(
– kamoroso94
Nov 8 at 22:33
True - also, I left out an argument ofseq(
, so I'm no longer convinced it even is smaller. Still, thecos(
trick should help.
– Misha Lavrov
Nov 8 at 22:34
add a comment |
up vote
3
down vote
up vote
3
down vote
TI-BASIC, 35 34 bytes
-1 byte from Misha Lavrov
Prompt A,B
Disp A,B
cos(π(A>B
For(I,A+Ans,B-Ans,Ans
Disp I
End
TI-BASIC, 35 34 bytes
-1 byte from Misha Lavrov
Prompt A,B
Disp A,B
cos(π(A>B
For(I,A+Ans,B-Ans,Ans
Disp I
End
edited yesterday
answered Nov 8 at 18:08
kamoroso94
65149
65149
2
And one more byte by replacing1-2(A>B
withcos(π(A>B
.
– Misha Lavrov
Nov 8 at 20:55
@MishaLavrovseq(
wouldn't work for inputs whereA
andB
are the same, unfortunately :(
– kamoroso94
Nov 8 at 22:33
True - also, I left out an argument ofseq(
, so I'm no longer convinced it even is smaller. Still, thecos(
trick should help.
– Misha Lavrov
Nov 8 at 22:34
add a comment |
2
And one more byte by replacing1-2(A>B
withcos(π(A>B
.
– Misha Lavrov
Nov 8 at 20:55
@MishaLavrovseq(
wouldn't work for inputs whereA
andB
are the same, unfortunately :(
– kamoroso94
Nov 8 at 22:33
True - also, I left out an argument ofseq(
, so I'm no longer convinced it even is smaller. Still, thecos(
trick should help.
– Misha Lavrov
Nov 8 at 22:34
2
2
And one more byte by replacing
1-2(A>B
with cos(π(A>B
.– Misha Lavrov
Nov 8 at 20:55
And one more byte by replacing
1-2(A>B
with cos(π(A>B
.– Misha Lavrov
Nov 8 at 20:55
@MishaLavrov
seq(
wouldn't work for inputs where A
and B
are the same, unfortunately :(– kamoroso94
Nov 8 at 22:33
@MishaLavrov
seq(
wouldn't work for inputs where A
and B
are the same, unfortunately :(– kamoroso94
Nov 8 at 22:33
True - also, I left out an argument of
seq(
, so I'm no longer convinced it even is smaller. Still, the cos(
trick should help.– Misha Lavrov
Nov 8 at 22:34
True - also, I left out an argument of
seq(
, so I'm no longer convinced it even is smaller. Still, the cos(
trick should help.– Misha Lavrov
Nov 8 at 22:34
add a comment |
up vote
2
down vote
Charcoal, 15 bytes
IE²NI…⊕θηI⮌…⊕ηθ
Try it online! Link is to verbose version of code. Explanation:
IE²N
Print the inputs on separate lines.
I…⊕θη
Print the ascending range, if any.
I⮌…⊕ηθ
Print the reverse ascending reverse range, if any.
add a comment |
up vote
2
down vote
Charcoal, 15 bytes
IE²NI…⊕θηI⮌…⊕ηθ
Try it online! Link is to verbose version of code. Explanation:
IE²N
Print the inputs on separate lines.
I…⊕θη
Print the ascending range, if any.
I⮌…⊕ηθ
Print the reverse ascending reverse range, if any.
add a comment |
up vote
2
down vote
up vote
2
down vote
Charcoal, 15 bytes
IE²NI…⊕θηI⮌…⊕ηθ
Try it online! Link is to verbose version of code. Explanation:
IE²N
Print the inputs on separate lines.
I…⊕θη
Print the ascending range, if any.
I⮌…⊕ηθ
Print the reverse ascending reverse range, if any.
Charcoal, 15 bytes
IE²NI…⊕θηI⮌…⊕ηθ
Try it online! Link is to verbose version of code. Explanation:
IE²N
Print the inputs on separate lines.
I…⊕θη
Print the ascending range, if any.
I⮌…⊕ηθ
Print the reverse ascending reverse range, if any.
answered Nov 8 at 9:42
Neil
77.6k744174
77.6k744174
add a comment |
add a comment |
up vote
2
down vote
Dart, 85 84 bytes
f(a,b)=>[a,b]+((a-b).abs()>1?List.generate((a-b).abs()-1,(i)=>(a>b?-i-1:i+1)+a):);
Try it online!
>=
to >
add a comment |
up vote
2
down vote
Dart, 85 84 bytes
f(a,b)=>[a,b]+((a-b).abs()>1?List.generate((a-b).abs()-1,(i)=>(a>b?-i-1:i+1)+a):);
Try it online!
>=
to >
add a comment |
up vote
2
down vote
up vote
2
down vote
Dart, 85 84 bytes
f(a,b)=>[a,b]+((a-b).abs()>1?List.generate((a-b).abs()-1,(i)=>(a>b?-i-1:i+1)+a):);
Try it online!
>=
to >
Dart, 85 84 bytes
f(a,b)=>[a,b]+((a-b).abs()>1?List.generate((a-b).abs()-1,(i)=>(a>b?-i-1:i+1)+a):);
Try it online!
>=
to >
answered Nov 8 at 10:10
Elcan
27115
27115
add a comment |
add a comment |
up vote
2
down vote
QBASIC, 39 53 bytes
INPUT a,b
?a
?b
FOR q=a+1TO b-1 STEP SGN(b-a)
?q
NEXT
Added the STEP
parameter to account for a>b
, and that uses the SGN()
function to get a -1 or a +1 as increment. This however breaks the REPL because the SGN()
function isn't implemented there...
Try it (the old answer) online!
add a comment |
up vote
2
down vote
QBASIC, 39 53 bytes
INPUT a,b
?a
?b
FOR q=a+1TO b-1 STEP SGN(b-a)
?q
NEXT
Added the STEP
parameter to account for a>b
, and that uses the SGN()
function to get a -1 or a +1 as increment. This however breaks the REPL because the SGN()
function isn't implemented there...
Try it (the old answer) online!
add a comment |
up vote
2
down vote
up vote
2
down vote
QBASIC, 39 53 bytes
INPUT a,b
?a
?b
FOR q=a+1TO b-1 STEP SGN(b-a)
?q
NEXT
Added the STEP
parameter to account for a>b
, and that uses the SGN()
function to get a -1 or a +1 as increment. This however breaks the REPL because the SGN()
function isn't implemented there...
Try it (the old answer) online!
QBASIC, 39 53 bytes
INPUT a,b
?a
?b
FOR q=a+1TO b-1 STEP SGN(b-a)
?q
NEXT
Added the STEP
parameter to account for a>b
, and that uses the SGN()
function to get a -1 or a +1 as increment. This however breaks the REPL because the SGN()
function isn't implemented there...
Try it (the old answer) online!
edited Nov 8 at 11:49
answered Nov 8 at 10:59
steenbergh
6,77411739
6,77411739
add a comment |
add a comment |
up vote
2
down vote
Ruby, 33 40 bytes
->a,b{[a,b]+[*a..b,*a.downto(b)][1..-2]}
Try it online!
Temporary fix, trying to find a better idea
3
For[4,4]
this gives only one[4]
– Kirill L.
Nov 8 at 9:36
add a comment |
up vote
2
down vote
Ruby, 33 40 bytes
->a,b{[a,b]+[*a..b,*a.downto(b)][1..-2]}
Try it online!
Temporary fix, trying to find a better idea
3
For[4,4]
this gives only one[4]
– Kirill L.
Nov 8 at 9:36
add a comment |
up vote
2
down vote
up vote
2
down vote
Ruby, 33 40 bytes
->a,b{[a,b]+[*a..b,*a.downto(b)][1..-2]}
Try it online!
Temporary fix, trying to find a better idea
Ruby, 33 40 bytes
->a,b{[a,b]+[*a..b,*a.downto(b)][1..-2]}
Try it online!
Temporary fix, trying to find a better idea
edited Nov 8 at 12:55
answered Nov 8 at 9:01
G B
7,4461327
7,4461327
3
For[4,4]
this gives only one[4]
– Kirill L.
Nov 8 at 9:36
add a comment |
3
For[4,4]
this gives only one[4]
– Kirill L.
Nov 8 at 9:36
3
3
For
[4,4]
this gives only one [4]
– Kirill L.
Nov 8 at 9:36
For
[4,4]
this gives only one [4]
– Kirill L.
Nov 8 at 9:36
add a comment |
up vote
2
down vote
C (gcc), 65 bytes
f(a,b){for(printf("%d %d",a,b);a<b?++a<b:--a>b;)printf(" %d",a);}
Try it online!
Not very exciting. The loop increment is borrowed from an early version of Kevin Cruijssen's Java answer.
add a comment |
up vote
2
down vote
C (gcc), 65 bytes
f(a,b){for(printf("%d %d",a,b);a<b?++a<b:--a>b;)printf(" %d",a);}
Try it online!
Not very exciting. The loop increment is borrowed from an early version of Kevin Cruijssen's Java answer.
add a comment |
up vote
2
down vote
up vote
2
down vote
C (gcc), 65 bytes
f(a,b){for(printf("%d %d",a,b);a<b?++a<b:--a>b;)printf(" %d",a);}
Try it online!
Not very exciting. The loop increment is borrowed from an early version of Kevin Cruijssen's Java answer.
C (gcc), 65 bytes
f(a,b){for(printf("%d %d",a,b);a<b?++a<b:--a>b;)printf(" %d",a);}
Try it online!
Not very exciting. The loop increment is borrowed from an early version of Kevin Cruijssen's Java answer.
edited Nov 8 at 13:14
answered Nov 8 at 11:25
nwellnhof
5,628921
5,628921
add a comment |
add a comment |
1 2
next
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f175485%2fthe-first-the-last-and-everything-between%23new-answer', 'question_page');
}
);
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
I guess we can't take the inputs in pre-ordered order?
– Kevin Cruijssen
Nov 8 at 9:55
@KevinCruijssen, no, the output order depends on the input order
– TFeld
Nov 8 at 9:58
@StewieGriffin, the output order has to be the same as the input
– TFeld
Nov 8 at 9:58
Is this output format acceptable? Note the newline
– Luis Mendo
Nov 8 at 10:48
2
@KevinCruijssen Any reasonable I/O is acceptable.
– TFeld
Nov 8 at 13:08