Objetivo : dado un entero positivo n
:
- Si
n
es impar, muestre la lista den
números más cercanos0
en orden creciente - Si
n
es par, genera un valor de Falsey.
Casos de prueba :
5 -> [-2,-1,0,1,2]
4 -> false (or any Falsey value)
1 -> [0]
Implementación de referencia
function update(){
var num = +document.getElementById("yield").value;
if(num){
var out = document.getElementById("output");
if(num % 2 == 1){
// base is balanced
var baseArr = [];
for(var i=0;i<num;i++){
baseArr.push(i-Math.floor(num/2));
}
out.innerHTML = baseArr.join(" ");
} else {
out.innerHTML = "false";
}
} else {
out.innerHTML = "<i>enter input</i>";
}
}
setInterval(update,1);
* {
font-family: "Constantia", "Consolas", monospace;
}
[type="number"] {
width: 10px;
width: 2em;
}
#output {
font-family: "Consolas", monospace;
}
Input: <input type="number" id="yield" value="3"> is <span id="output"><i>enter input</i></span>
code-golf
math
number
number-theory
Conor O'Brien
fuente
fuente
Respuestas:
Pyth, 10 bytes
Pruébalo en línea.
Cómo funciona
fuente
APL,
161513 bytes¡Gracias a @Dennis por -2 bytes!
Este es un tren monádico que proporciona una matriz vacía para una entrada uniforme. A continuación se muestra el diagrama:
Primero,
⊢×2|⊢
le da a la entrada veces su mod 2; es decir, las probabilidades se darán a sí mismas, y las pares darán 0. Usamos⍳
para crear una lista de números de 1 a eso (⍳0
da la matriz vacía), y luego restamos la mitad de la entrada y el piso.fuente
Mathematica,
323024 bytesTruco de golf de código: el último argumento para
And
no tiene que ser un booleano.fuente
Floor
.Range[-a,a=...]
parece funcionar, guardando otro byte.OddQ@#&&Range@#-(#+1)/2&
PowerShell,
5052 bytesOof Respuesta bastante detallada. Toma entrada
$a
, luego establece una nueva variable$b
como el "piso" de$a/2
. Genera un nuevo rango de números desde(0-$b)
hasta$b
, luegojoin
s el rango con espacios, y lo tiene como el segundo elemento de una matriz de dos elementos (el primer elemento es0
). Luego se utiliza$a%2
para indexar en esa matriz para la salida.Versión alternativa que usa un flujo if / else más "tradicional", a 54 bytes:
Editar: necesario para agregar algo de lógica para generar un valor falsey si la entrada es uniforme
fuente
(0-$b)
a solo-$b
. Además, simplemente multiplicando por*0
generará una cadena nula (se evalúa como falsa en powershell). (ver: codegolf.stackexchange.com/a/63005/45925 )Haskell,
373631 bytesDesequilibrado se indica mediante la lista vacía. Ejemplo de uso:
g 7
->[-3,-2,-1,0,1,2,3]
.@xnor encontró 5 bytes. ¡Gracias!
fuente
g n=[x|x<-[-div n 2..(n+1)/2],odd n]
es igual de largo.g n=[1|odd n]>>[-div n 2..div n 2]
g n=[1|odd n]>>take n[-div n 2..]
También ahorra un char.JavaScript (ES6),
44434241 bytestachado 44 sigue siendo regular 44; (
Para entradas impares, devuelve una matriz entera de longitud
x
, centrada en0
; para incluso, devuelve 0. Creo que esto es lo más corto posible. (¡Ahorré un par de bytes gracias a @ edc65 y @ ן nɟuɐɯɹɐ ן oɯ!)Alternativa ES6: (42 bytes, gracias a @intrepidcoder)
Sugerencias bienvenidas!
fuente
x%2&&[for(y of...]
guarda un byte.n=>Array(n&1&&n--).fill().map((x,i)=>i-n/2)
si está permitido devolver una matriz vacíax=>x%2&&[for(y of Array(x--).keys())y-x/2]
es 42.Minkolang 0.10 , 18 bytes
Explicación
fuente
J, 12 bytes
Este es un verbo monádico que devuelve
0
(falso) para números pares. Pruébelo en línea con J.js .Prueba de funcionamiento
Cómo funciona
fuente
DUP , 31 bytes
Try it here.
Lambda anónima. Uso:
Explicación
fuente
Python 2,
3432 BytesEn este momento no estoy seguro si puedo generar lo que quiera si no está equilibrado, por lo que actualmente esto solo devuelve una lista vacía en el caso de una base desequilibrada. Es una función lambda anónima, así que dale un nombre para usarla.
fuente
k%2*
, puedes evitar a los padres.CJam,
1312 bytesEsta es una función anónima que saca un número entero de la pila y empuja una matriz de dígitos (base impar) o una matriz vacía (base par) a cambio. Pruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
O, 18
Demo en vivo.
fuente
Vitsy,
2725 bytesMañana jugaré golf, pero realmente debería irme a la cama ahora.
fuente
TeaScript , 16 bytes
18Bastante simple. Los caracteres especiales son en realidad "abreviaturas" para secuencias de código más largas.
Todavía no he hecho enlaces permanentes, así que tendrás que copiar y pegar en el intérprete
Explicación
Esta respuesta no es competitiva.
fuente
F #, 38 bytes
El resultado falsey es una lista vacía.
fuente
𝔼𝕊𝕄𝕚𝕟, 21 caracteres / 37 bytes
Try it here (Firefox only).
Aquí hay una respuesta de 20 caracteres / 35 bytes (no competitiva, ya que la respuesta utiliza cambios implementados después de que se hizo la pregunta):
Try it here (Firefox only).
fuente
Japt,
2119 bytesJapt es una versión abreviada de Ja vaScri pt .
Para entradas impares, devuelve una matriz entera de longitud
x
, centrada en0
; para par, devuelve 0. Traducción aproximada de JS:donde
x.range(y)
crea una lista de enteros dex
ay
. ¡Pruébalo en línea!En Japt moderno, esto es solo 11 bytes:
Pruébalo en línea!
fuente
R, 30 bytes
A grandes rasgos,
x:-x
devuelve los números enteros dex
a-x
, donde hicex
a(1-n)/2
. También utilizo el factor módulo 2n%%2
en la definición dex
forzarx
a cero cuandon
es par, en cuyo caso,0:0
retornos0
(falsey).fuente
Perl, 36 bytes
Tengo la sensación de que esto se puede acortar:
El rango trata los flotantes como enteros, por lo que, por ejemplo, 5/2 = 2.5 se convierte silenciosamente en 2.
(Si el formato no importa, elimínelo
$,=$";
por un total de 30 bytes).fuente
Powershell, 49 bytes
Números pares evaluados
$false
ya que proporcionan una salida de línea vacía.Los números impares generan la cadena de referencia exacta. Puede guardar 4 bytes más (ahora
45
) quitando el[]
de la cadena de salida.Powershell, 36 bytes
Esto tiene el mismo resultado falsey pero genera la lista de números separados por nuevas líneas:
fuente
Perl 6, 25 bytes
La expresión lambda más corta que se me ocurrió que genera una lista en lugar de un rango es:
Pruebas:
Esto aprovecha el hecho de que Perl 6 trata el número
0
como un valor falso. Si la salida tuvo que ser exactamenteFalse
podría reemplazar$_%2
con$_!%%2
.fuente
05AB1E , 8 bytes (no competitivos)
El lenguaje es posterior al desafío y, por lo tanto, no es competitivo. Código:
Pruébalo en línea!
Explicación:
Utiliza la codificación CP-1252 .
fuente
PHP, 50 bytes
programa, toma la entrada de STDIN, imprime la
_
lista delimitada o0
.o
La función toma argumento, devuelve matriz o
0
.fuente
Java, 145 bytes
Explicación: Lo siento, sé que esto es realmente largo. No vi una respuesta para Java, así que decidí poner una. Avíseme si necesito escribir la función principal (no estoy seguro de si esa es la política o no). Básicamente divide el número por dos y lo multiplica por -1 para el límite inferior y para el límite superior solo usa el número dividido por dos. Soy un poco nuevo en esta página, así que si no formateé nada correctamente, avíseme. Además, sé que las respuestas se pueden acortar con las funciones lambda, pero no sé cómo usarlas y no estoy seguro de si Java las admite.
Aquí hay una versión más legible que es menos golf:
fuente
return
- el valor de retorno es una forma legítima de salida - en lugar de necesitar usarSystem.out
, aunque en este caso parareturn
trabajar necesitaría almacenar parcialmente listas construidas en una cadena). Java reciente admite lambdas, y normalmente son más cortas que una definición de función "regular". (Además, ¿por qué el espacio en blanco principal?)Rubí, 25 bytes.
fuente
Rubí, 27 bytes
Crea una función lambda anónima que devolverá la matriz de
n
números más cercana a 0 si n es impar y, de lo contrario, devuelve nil (un valor falsey en rubí).Ruby redondea su división entera hacia -infinito, pero
0-n/2
es más corta que-n/2+1
(ya que el signo menos está ahí de todos modos), y debido a que n ahora se considera positivo, el redondeo funciona a mi favor.Versión anterior (28 bytes)
fuente