Aquí está el desafío. Escriba un código para generar todos los enteros en un rango. Suena fácil, pero aquí está la parte difícil. Comenzará con el número más bajo, luego el más alto. Luego, el número más bajo que aún no está en la matriz. Entonces el más alto que aún no está en él.
Ejemplo:
Tomemos de 1 a 5 como nuestro comienzo
Los números son [1, 2, 3, 4, 5].
Tomamos el primero, entonces [1]. Los números restantes son [2, 3, 4, 5]. Tomamos el último, la nueva matriz es [1, 5]. Los números restantes son [2, 3, 4]. Tomamos la primera, nueva matriz es [1, 5, 2]. Los números restantes son [3, 4]. Tomamos el último, la nueva matriz es [1, 5, 2, 4]. Los números restantes son [3]. Tomamos la primera, nueva matriz es [1, 5, 2, 4, 3]. No quedan números, hemos terminado. Salida [1, 5, 2, 4, 3]
Reglas:
- Este es el código de golf, escríbalo en la menor cantidad de bytes, en cualquier idioma.
- No hay lagunas estándar.
- Enlaces a un intérprete en línea, por favor? (Por ejemplo, https://tio.run/ )
- Dos entradas, ambos enteros. Extremo bajo del rango y extremo alto del rango.
- No me importa cuál es el tipo de datos de la salida, pero debe mostrar los números en el orden correcto.
Ejemplos
Bajo: 4 Alto: 6 Resultado: 4 6 5
Bajo: 1 Alto: 5 Resultado: 1 5 2 4 3
Bajo: -1 Alto: 1 Resultado: -1 1 0
Bajo: -1 alto: 2 Resultado: -1 2 0 1
Bajo: -50 Alto: 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 golf!
Respuestas:
R ,
383736 bytesPruébalo en línea!
Explotando el hecho de que R almacena matrices en columnas
fuente
rbind
es mucho mejor que mi enfoque, pero puede guardar 1 byte usando en[seq(a:b)]
lugar deunique
.seq(a:b)
Haskell , 30 bytes
Pruébalo en línea!
fuente
R ,
65646160 bytes-1 byte gracias a Robert S.
-4 más gracias a digEmAll
Pruébalo en línea!
fuente
length(z)
consum(z|1)
para guardar 1 byte :)|
edita con 1. Que siempre es igual a 1. Cuando tomas la suma, tienes un vector lleno deTRUE
s para que el resultado sea igual a la longitud del vector. Si el vector está vacío, no hay nada|
con lo que el vector de salida lo estálogical(0)
. Cuando tomas esa suma, es 0Haskell , 39 bytes
Pruébalo en línea!
fuente
Python 2 , 44 bytes
Pruébalo en línea!
fuente
PowerShell ,
5948 bytesPruébalo en línea!
(Parece largo ...)Toma datos
$a
y$b
construye el rango0 .. ($b-$a)
, los almacena$z
y luego recorre ese rango. El bucle a través de ese rango solo se usa como un contador para garantizar que obtengamos suficientes iteraciones. Cada iteración, ponemos$a
y$b
en la tubería con suma / resta. Eso nos da algo así,1,5,2,4,3,3,4,2,5,1
por lo que debemos dividirlo desde0
hasta el$b-$a
(es decir, el recuento) de la matriz original, por lo que solo nos quedan los elementos apropiados. Eso queda en la tubería y la salida es implícita.-11 bytes gracias a mazzy.
fuente
$b-$a
truco, ¡eso es inteligente!05AB1E , 6 bytes
Pruébalo en línea!
Explicación
fuente
.ι
;)Japt , 14 bytes
Pruébalo en línea!
fuente
Stax , 7 bytes
Ejecutar y depurarlo
fuente
R , 51 bytes
Pruébalo en línea!
Explicación: Para una secuencia
x:y
de longitudN
, cree una matriz de dos por N que consista en la secuencia x: y en la fila superior e y: x en la fila inferiormatrix(c(z,rev(z)),2,,T)
. Si seleccionamos los primerosN
elementos de la matriz[seq(z)]
, se elegirán por columna, dando el resultado requerido.Superado por digEmAll
fuente
cQuents , 19 bytes
Pruébalo en línea!
Tenga en cuenta que no funciona en TIO en este momento porque el intérprete de TIO no está actualizado.
Explicación
fuente
Haskell, 39 bytes
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) , 46 bytes
¡Guardado 4 bytes gracias a dana!
Pruébalo en línea!
C # (compilador interactivo de Visual C #) , 65 bytes
Pruébalo en línea!
fuente
Código de bytes JVM (OpenJDK asmtools JASM), 449 bytes
Sin golf (y un poco más limpio)
Función independiente, debe llamarse desde Java como
b.a(num1,num2)
.Explicación
Este código utiliza los parámetros del método como variables, así como un booleano en el local # 3 que decide qué número generar. Se genera cada iteración de bucle, ya sea la izquierda o la derecha, y ese número se incrementa para la izquierda o disminuye para la derecha. El bucle continúa hasta que ambos números sean iguales, luego se emite ese número.
... Tengo el presentimiento de que me han superado enormemente en el recuento de bytes
fuente
Wolfram Language (Mathematica) ,
5654 bytesEsta es mi primera vez jugando al golf!
Pruébalo en línea!
Guardado 2 bytes usando notación infija.
Explicación:
Alternativamente, podríamos usar
Take[...,b-a+1]
para el mismo resultado.Pruebas:
Ouput:
fuente
APL (dzaima / APL) , 21 bytes
Pruébalo en línea!
fuente
Japt, 7 bytes
Toma la entrada como una matriz.
Pruébalo o ejecuta todos los casos de prueba
fuente
MATL , 8 bytes
Pruébalo en línea!
Explicación
fuente
JavaScript, 40 bytes
¡Pruébelo en línea!
fuente
Adelante (gforth) , 52 bytes
Pruébalo en línea!
Explicación
Bucle de 0 a (Fin - Inicio). Coloque Fin e Inicio en la parte superior de la pila.
Cada iteración:
Explicación del código
fuente
Julia 0.7 , 29 bytes
Pruébalo en línea!
fuente
Haskell, 30 bytes
Uso:
3%7
da `[3,7,4,6,5]Para las entradas,
l, h
la función llama recursivamente con las entradasl+1, h-1
y se sumal,h
al comienzo. En lugar de cualquier condición de detención, el código usatake(h-l)
para acortar la secuencia a la longitud correcta (que de lo contrario sería una secuencia infinita de números crecientes y decrecientes).fuente
Brachylog , 15 bytes
La entrada es una lista de 2 elementos [lo, hi]. Tenga en cuenta que el subrayado se usa para números negativos. Pruébalo en línea!
Explicación
fuente
MathGolf , 6 bytes
Pruébalo en línea!
Explicación con
(1, 5)
La razón por la que esto funciona se debe al hecho de que todos los elementos en la salida deben ser únicos, por lo que el operador de elementos únicos filtrará la segunda mitad de la matriz, produciendo la salida correcta.
fuente
Perl 5
-ln
, 37 bytesPruébalo en línea!
fuente
Java (JDK) , 52 bytes
Pruébalo en línea!
fuente
Limpio , 48 bytes
Pruébalo en línea!
fuente
Ruby ,
373633 bytesPruébalo en línea!
Versión recursiva con 3 bytes guardados por G B.
Rubí , 38 bytes.
Pruébalo en línea!
Versión no recursiva.
fuente
Cubix, 16 bytes
Pruébalo aquí
Cubified
Explicación
Básicamente, esto mueve los dos límites más cerca uno por uno hasta que se encuentran. Cada vez a través del ciclo, nosotros
s
los límites,O
utilizamos, tomamos la diferencia e incrementamos)
o disminuimos(
según el signo.fuente
Pyth,
108 bytesPruébalo aquí
Explicación
fuente