Aqui está o desafio. Escreva algum código para gerar todos os números inteiros em um intervalo. Parece fácil, mas aqui está a parte complicada. Começará com o número mais baixo e depois o mais alto. Em seguida, o número mais baixo que ainda não está no array. Então o mais alto que ainda não está nele.
Exemplo:
Vamos levar de 1 a 5 como o nosso começo
Os números são [1, 2, 3, 4, 5].
Nós pegamos o primeiro, então [1]. Os números restantes são [2, 3, 4, 5]. Tomamos o último, novo array é [1, 5]. Os números restantes são [2, 3, 4]. Tomamos o primeiro, novo array é [1, 5, 2]. Os números restantes são [3, 4]. Tomamos o último, novo array é [1, 5, 2, 4]. Os números restantes são [3]. Tomamos o primeiro, novo array é [1, 5, 2, 4, 3]. Sem números restantes, terminamos. Saída [1, 5, 2, 4, 3]
Regras:
- Isso é código de golfe, escreva no menor número de bytes, em qualquer idioma.
- Sem brechas padrão.
- Links para um intérprete online, por favor? (Por exemplo, https://tio.run/ )
- Duas entradas, ambos inteiros. Fim baixo do intervalo e fim alto do intervalo.
- Não me importo qual é o tipo de dado da saída, mas ele deve mostrar os números na ordem correta.
Exemplos
Baixa: 4 Alta: 6 Resultado: 4 6 5
Baixa: 1 Alta: 5 Resultado: 1 5 2 4 3
Baixa: -1 Alta: 1 Resultado: -1 1 0
Baixa: -1 alta: 2 Resultado: -1 2 0 1
Baixa: -50 Alta: 50 Resultado: -50 50 -49 49 -48 48 -47 47 -46 46 -45 45 -44 44 -43 43 -42 42 -41 41 -40 40 -39 39 -38 38 -37 37 -36 36 -35 35 -34 34 -33 33 -32 32 -31 31 -30 30 -29 29 -28 28 -27 27 -26 26 -25 25 -24 24 -23 23 -22 22 -21 21 - 20 20 -19 19 -18 18 -17 17 -16 16 -15 15 -14 14 -13 13 -12 12 -11 11 -10 10 -9 9 -8 8 -7 7 -6 6 -5 5 -4 4 -3 3 -2 2 -1 1 0
Feliz golfe!
Respostas:
R ,
383736 bytesExperimente online!
Explorando o fato de que R armazena matrizes em colunas
fonte
rbind
é muito melhor do que minha abordagem, mas você pode salvar 1 byte usando em[seq(a:b)]
vez deunique
.seq(a:b)
Haskell , 30 bytes
Experimente online!
fonte
R ,
65646160 bytes-1 byte graças a Robert S.
-4 mais graças a digEmAll
Experimente online!
fonte
length(z)
porsum(z|1)
para salvar 1 byte :)|
editado com 1. O que é sempre igual a 1. Quando você pega a soma, você tem um vetor preenchido comTRUE
s, de modo que o resultado é igual ao comprimento do vetor. Se o vetor estiver vazio, você não tem nada a ver|
com o vetor de saídalogical(0)
. Quando você recebe essa soma, é 0Haskell , 39 bytes
Experimente online!
fonte
Python 2 , 44 bytes
Experimente online!
fonte
PowerShell ,
5948 bytesExperimente online!
(Parece longo ...)Pega entrada
$a
e$b
, constrói o intervalo0 .. ($b-$a)
, armazena-o$z
e depois passa por esse intervalo. O loop desse intervalo é usado apenas como um contador para garantir que recebemos iterações suficientes. Cada iteração, nós colocamos$a
e$b
no gasoduto com adição / subtração. Isso nos dá algo1,5,2,4,3,3,4,2,5,1
assim, precisamos dividir isso0
até a$b-$a
(ou seja, a contagem) da matriz original, para que só fiquemos com os elementos apropriados. Isso é deixado no pipeline e a produção está implícita.-11 bytes graças ao mazzy.
fonte
$b-$a
truque - isso é inteligente!05AB1E , 6 bytes
Experimente online!
Explicação
fonte
.ι
;)Japonês , 14 bytes
Experimente online!
fonte
Stax , 7 bytes
Execute e depure
fonte
R , 51 bytes
Experimente online!
Explicação: Para uma sequência
x:y
de comprimentoN
, crie uma matriz dois por N consistindo na sequência x: y na linha superior e y: x na linha inferiormatrix(c(z,rev(z)),2,,T)
. Se selecionarmos os primeirosN
elementos da matriz[seq(z)]
, eles serão escolhidos por coluna, fornecendo a saída necessária.Superado por digEmAll
fonte
cQuents , 19 bytes
Experimente online!
Observe que ele não funciona no TIO no momento porque o intérprete do TIO não está atualizado.
Explicação
fonte
Haskell, 39 bytes
Experimente online!
fonte
C # (compilador interativo do Visual C #) , 46 bytes
Guardado 4 bytes graças a dana!
Experimente online!
C # (compilador interativo do Visual C #) , 65 bytes
Experimente online!
fonte
Bytecode da JVM (OpenJDK asmtools JASM), 449 bytes
Ungolfed (e um pouco mais limpo)
Função autônoma, precisa ser chamada de Java como
b.a(num1,num2)
.Explicação
Esse código usa os parâmetros do método como variáveis, bem como um booleano no local # 3, decidindo qual número deve ser produzido. Cada iteração de loop, esquerda ou direita, é exibida e esse número é incrementado para a esquerda ou decrementado para a direita. O loop continua até que os dois números sejam iguais, e esse número é emitido.
... Tenho uma sensação distinta de que sou massivamente superado com a contagem de bytes
fonte
Wolfram Language (Mathematica) ,
5654 bytesEsta é a minha primeira vez jogando golfe!
Experimente online!
2 bytes salvos usando a notação infix.
Explicação:
Como alternativa, poderíamos usar
Take[...,b-a+1]
o mesmo resultado.Testes:
Ouput:
fonte
APL (dzaima / APL) , 21 bytes
Experimente online!
fonte
Japonês, 7 bytes
Recebe entrada como uma matriz.
Experimente ou execute todos os casos de teste
fonte
MATL , 8 bytes
Experimente online!
Explicação
fonte
JavaScript, 40 bytes
Experimente Online!
fonte
Quarto (gforth) , 52 bytes
Experimente online!
Explicação
Loop de 0 a (Fim - Início). Coloque Fim e Início no topo da pilha.
Cada iteração:
Código Explicação
fonte
Julia 0,7 , 29 bytes
Experimente online!
fonte
Haskell, 30 bytes
Uso:
3%7
dá `[3,7,4,6,5]Para as entradas,
l, h
a função chama recursivamente com as entradasl+1, h-1
e adicional,h
ao início. Em vez de qualquer condição de parada, o código usatake(h-l)
para encurtar a sequência para o comprimento correto (que seria uma sequência infinita de números crescentes e decrescentes).fonte
Braquilog , 15 bytes
Entrada é uma lista de 2 elementos [lo, hi]. Observe que o sublinhado é usado para números negativos. Experimente online!
Explicação
fonte
MathGolf , 6 bytes
Experimente online!
Explicação com
(1, 5)
A razão pela qual isso funciona é devido ao fato de que todos os elementos na saída devem ser exclusivos, portanto o operador de elementos exclusivos filtrará a segunda metade da matriz, produzindo a saída correta.
fonte
Perl 5
-ln
, 37 bytesExperimente online!
fonte
Java (JDK) , 52 bytes
Experimente online!
fonte
Limpo , 48 bytes
Experimente online!
fonte
Ruby ,
373633 bytesExperimente online!
Versão recursiva com 3 bytes salvos por G B.
Ruby , 38 bytes
Experimente online!
Versão não recursiva.
fonte
Cubix, 16 bytes
Experimente aqui
Cubificado
Explicação
Basicamente, isso aproxima os dois limites um passo de cada vez até que eles se encontrem. Cada vez que percorremos o loop, alteramos
s
os limites, aO
quantidade, a diferença e aumentamos)
ou diminuímos com(
base no sinal.fonte
Pitão,
108 bytesExperimente aqui
Explicação
fonte