Dados dois números inteiros, produza os dois números inteiros e, em seguida, o intervalo entre eles (excluindo ambos).
A ordem do intervalo deve ser igual à entrada.
Exemplos:
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]
Respostas:
R ,
393330 bytesExperimente online!
Obrigado por bytes salvos em user2390246 e J.Doe.
fonte
:
operador usa o primeiro elemento de ambos os argumentos para 30 bytes05AB1E , 4 bytes
Experimente online!
Explicação
fonte
Python 3 ,
5248474241 bytesExperimente online!
Implementações anteriores combinadas.
fonte
or-1
para salvar um byte.Python 2 (Cython) ,
3635 bytesObrigado a @nwellnhof por jogar fora um byte!
Experimente online!
Python 2 , 37 bytes
Obrigado a @JonasAusevicius pela porta do CPython!
Experimente online!
fonte
lambda x:x+range(*x+[-cmp(*x)|1])[1:]
. Solução agradávelPerl 6 ,
2622 bytesExperimente online!
Explicação
fonte
Python 2 , 40 bytes
Experimente online!
fonte
-(y<x)|1
. muito legal, mas não sei por que funciona! Alguma chance de você explicar isso?y<x
verifica sey
é estritamente menor quex
e retornaTrue
,False
caso contrário. Depois disso, unário-
é aplicado a ele, que se converteTrue
em-1
eFalse
para0
. O último passo é OR bit a bit com1
. Obviamente, isso deixa1
(0b1
) não afetado, e também deixa-1
(-0b1
) não afetado (o bit de sinal-1
é definido, portanto é mantido como tal). No entanto, ele se converte0
em1
, para querange
não se queixe de eu usar umstep
dos0
.Python 3,
646251 byteslambda a,b:[a,b]+[*range(a+1,b)]+[*range(a-1,b,-1)]
Experimente online!
Python 2,
5845 byteslambda a,b:[a,b]+range(a+1,b)+range(a-1,b,-1)
Experimente online!
fonte
a<=b and
partir de ambas as respostas+
vez de #or
lambda a,b:[a,b,*range(a+1,b),*range(a-1,b,-1)]
Japonês, 8 bytes
Experimente aqui
fonte
JavaScript (ES6), 51 bytes
Toma entrada como
(a)(b)
.Experimente online!
Comentado
fonte
Python 2 ,
474140 bytesExperimente online!
Aqui está a minha, agora que muitas outras respostas em Python foram postadas
-6 bytes, graças a GB
fonte
a<b or-1
é mais curto para o parâmetro da 3ª faixa. O mais curto que recebi foilambda x,y:[x,y]+range(x+(x<y or-1),y,x<y or-1)
Java 10,
1091081041029362 bytesUsando uma String delimitada por espaço:
Experimente online.
Usando uma lista:
Experimente online.
(
a<b?++a<b:--a>b
pode ser++a<b||(a-=2)>b
para o mesmo número de bytes: experimente online para a String ou experimente online para a Lista .)Resposta antiga (
109108104102101 bytes) usando uma matriz:-7 bytes graças a @nwellnhof .
Experimente online.
Explicação:
fonte
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
, e é por isso que costumo colocá-las em 8, e as que usamvar
como 10 (e as que usamString.repeat
como 11). :) Esqueceu-se de atualizá-lo após adicionar as respostas Lista e String, deve ser corrigido agora. Obrigado.APL (Dyalog Extended) , 5 bytes
Função de infixo anônimo.
Experimente online!
,
o primeiro e o último (lit. a concatenação dos argumentos),
e (lit. concatenado para)…
o alcance~
sem,
o primeiro e o último (lit. a concatenação dos argumentos)fonte
Haskell, 34 bytes
Experimente online!
fonte
b-1
comob $ (-1)
. Use emb- 1
vez disso.NegativeLiterals
usando.Gelatina , 4 bytes
Experimente online!
Como funciona
fonte
J , 26 bytes
Experimente online!
Explicação:
Um verbo diádico (aceita argumentos à esquerda e à direita)
fonte
,,[:}.@}:<.+i.@-@(+*)@-
por 23 bytes e nenhuma caixa especial na ordenação relativa de argumentos (em vez disso: está oculta dentro do sinal*
). Eu sinto que isso pode diminuir para menos de 20 anos, mas estou cansado.Oitava , 45 bytes
Experimente online!
fonte
J , 13 bytes
Experimente online!
fonte
i.
com argumento negativo.Lote, 107 bytes
Recebe entrada como argumentos da linha de comando. Explicação:
Saída os dois números inteiros.
Tente os intervalos ascendente e descendente.
Loop sobre o intervalo inclusivo.
Exclua os dois números inteiros.
Saída o valor atual.
fonte
Pitão , 5 bytes
Entrada é uma lista de dois elementos
[input 1, input 2]
. Experimente online aqui ou verifique todos os casos de teste de uma vez aqui .fonte
F
vez de.*
em listas de 2 elementos é um truque brilhante que eu absolutamente usarei daqui em diante.Vermelho , 75 bytes
Experimente online!
fonte
Limpo , 49 bytes
Experimente online!
fonte
Ruby ,
3340 bytesExperimente online!
Correção temporária, tentando encontrar uma ideia melhor
fonte
[4,4]
isso dá apenas uma[4]
Python 2 ,
524741 bytesExperimente online!
-5 com agradecimentos a @JoKing
-6 cortando o primeiro elemento do intervalo (ideia roubada de e com crédito para @TFeld)
Versão não lambda ...
Python 2 ,
514947 bytesExperimente online!
-2 com agradecimentos a @JoKing
fonte
APL (Dyalog Classic) , 29 bytes
Experimente online!
Uma porta da minha
J
soluçãofonte
PHP (102 bytes)
Caixa de areia
Infelizmente (para o golfe), o PHP tem nomes de funções bastante detalhados, que contribuem muito para o comprimento. Mas a idéia básica é criar um intervalo, depois sair do último elemento e costurá-lo de volta no deslocamento 1. No
4,4
exemplo que eu tive que adicionar, ocount($r=range($a,$b))>1?...:$r=[$a,$b];
que adiciona um pouco, e infelizmentearray_splice()
é por referência que me atingiu por mais alguns bytes ($r= and a ;
). Tudo por causa desse "caso de ponta", lol.Bem, de qualquer maneira, aproveite!
fonte
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
Uma função anônima que recebe um vetor de 2 como entrada e retorna uma lista.
Experimente online!
Explicação
fonte
D , 85 bytes
Experimente online!
Uma porta da resposta C ++ de @ HatsuPointerKun para D.
fonte
TI-BASIC,
3534 bytes-1 byte de Misha Lavrov
fonte
1-2(A>B
porcos(π(A>B
.seq(
não iria trabalhar para entradas ondeA
eB
são os mesmos, infelizmente :(seq(
, então não estou mais convencido de que seja menor. Ainda assim, ocos(
truque deve ajudar.Carvão , 15 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Imprima as entradas em linhas separadas.
Imprima o intervalo crescente, se houver.
Imprima a faixa inversa ascendente inversa, se houver.
fonte
Dardo ,
8584 bytesExperimente online!
>=
para>
fonte