Probablemente un simple desafío de código de golf. Dados 2 enteros positivos my n, haga una lista de nvalores que sean enteros positivos cuya suma sea igual al número m. O todos los valores en la salida son el mismo valor o la diferencia es exactamente 1.
Ejemplos
Por ejemplo
m=6yn=3se convertiría2, 2, 2m=7yn=3se convertiría2, 2, 3o2, 3, 2o3, 2, 2m=7yn=2se convertiría3, 4o4, 3m=7yn=1se convertiría7m=7yn=8generaría un error porque la suma de 8 enteros positivos no puede ser 7.m=10yn=4se convertiría en3, 3, 2, 2cualquier otra permutación
Reglas
- Tanto la entrada como la salida son solo enteros positivos.
- O todos los valores en la salida son el mismo valor o la diferencia es exactamente 1.
- El orden de los valores en la lista no es importante.
- La suma de los valores en la lista es igual a
m. - Cuando no se puede resolver, genere un error o un valor falso (en el caso de m = 7 yn = 8, por ejemplo).
- Como resultado de las otras reglas
m=8yn=3generaría cualquiera de las permutaciones de3, 3, 2(no2, 2, 4)
El ganador
Este es el código de golf, por lo que gana la respuesta válida más corta, medida en bytes.

float a = -0f, b = 0f; System.out.println(a == b); System.out.println(a + "," + b);... producetruey-0.0,0.0. Mira, 0 positivo y 0 negativo son claramente dos números distintos ... ¡la implementación lo dice!Respuestas:
Gaia , 4 bytes
Casi solo hay un incorporado para esto ...
Explicación
fuente
Python 2 ,
4843 bytesDevoluciones
0por error.Pruébalo en línea!
41 bytes (con el truco de @ xnor)
Lanza
NameErroren error.Pruébalo en línea!
fuente
Mathematica, 33 bytes
entrada
salida
da como resultado Falso cuando no es solucionable
fuente
MATL , 7 bytes
Cuando no hay solución, la salida es una matriz que contiene al menos un cero, que es falso en MATL .
Pruébalo en línea!
Explicación
Considere las entradas
m = 10yn = 4.fuente
Haskell , 30 bytes
Pruébalo en línea!
fuente
Carbón , 15 bytes después de aplicar NDD 1
Pruébalo en línea!
No genera nada si no hay solución. Enlace a la versión detallada .
1 NDD = Desarrollo Neil-Driven.
Mi respuesta anterior:
Carbón ,
32 27 2420 bytesPruébalo en línea!
No genera nada si no hay solución. Enlace a la versión detallada .
Por supuesto, no podría haber jugado golf sin la ayuda de Neil.
fuente
Castoperador funciona por alguna razón, pero este no es un algoritmo ideal ... Tengo una solución de 16 bytes.Castsé que funciona en las listas, he reducido a 11 bytes ...Map, ¿cómo demonios funciona?Mapes como la versión de expresión defor, hasta usar la misma variable de bucle. Entonces, en su ejemplo, en lugar de insertar una expresión en una lista cada vez, lasMaprecopila automáticamente y las evalúa en la lista de resultados.R , 33 bytes
Un puerto de la respuesta de octava de Luis Mendo . Es bastante triste que esto sea casi un 50% más corto que mi respuesta anterior.
Pruébalo en línea!
respuesta anterior, 63 bytes:
Una función anónima que toma dos argumentos (obligatorios)
myn, y dos opcionales que son para los propósitos de golf. Devuelve un vector en orden creciente. Para el fallo, el primer valor será0, que es falsey en R, ya queifsolo usa el primer valor del vector (con una advertencia).Es esencialmente equivalente a la siguiente función:
Pruébalo en línea!
fuente
pryr::f(diff(trunc(0:n*m/n)))funciona y es mas corto!Gelatina ,
76 bytesPruébalo en línea!No produce nada por falsedad.
Cómo funciona
fuente
TI-Basic, 23 bytes
Devuelve ERR: DIVIDE BY 0 en caso de error
fuente
Octava , 24 bytes
El código define una función anónima. La salida es una matriz numérica (vector de fila). Cuando no hay esta matriz contiene al menos un cero, que es falso en Octave.
Pruébalo en línea!
Explicación
0:m/n:mproduce una matriz den+1valores de0amcon pasom/n.fixredondea cada entrada hacia0ydiffcalcula diferencias consecutivas.A modo de ejemplo, aquí están todos los resultados intermedios para
m = 7,n = 3:fuente
Haskell ,
938988878671 bytesPruébalo en línea!
Explicación
La función principal aquí es
e.etomará una lista y esencialmente ejecutará un rodillo a lo largo de izquierda a derecha. Si bien hay un elemento en la lista que es mayor que su vecino a la derecha, moveremos uno de él a la derecha.Ahora todo lo que tenemos que hacer es alimentar esta función con una lista lo suficientemente desproporcionada y permitirle hacer la magia. La lista que elegiremos va
mseguida den-1ceros. Ya que eso es fácil de hacer.Lo último que debemos hacer es asegurarnos de que se maneje el caso de error. Para esto solo lanzamos un
Non-exhaustive patterns in functionerror siempre quem>n.fuente
error[]al no con un patrón no exhaustiva en su lugar:m!n|m>n=e$m:replicate(n-1)0.(0<$[1..n-1])es más corto quereplicate(n-1)0.C # (.NET Core) ,
868271 bytesarroja un error para entradas no válidas.
Pruébalo en línea!
-4 bytes gracias a TheLethalCoder
-11 bytes gracias a OlivierGrégoire
fuente
a=>b=>al comienzo.using System.Collections.Genericsi devuelvo unIEnumerable<int>?IEnumerable<int>estaría en la definición de la función, no necesitará incluir elusing.Haskell, 48 bytes
Comience con una lista de
nceros. Repita losmtiempos: tome el primer elemento, agregue uno y colóquelo al final de la lista.Falla con un error de coincidencia de patrón si
n < m.Pruébalo en línea!
fuente
Braingolf , 30 bytes
Pruébalo en línea!
Toma entradas en orden inverso (
nes la primera entrada,mes la segunda)Divide
mporn, duplica losntiempos de resultado , luego recorre e incrementa uno por unom % nvecesfuente
Lote, 71 bytes
cmd/cset/ano genera ningún separador, así que tengo que usarecho(((evita la impresiónECHO is on.).fuente
PHP> = 7.1, 62 bytes
PHP Sandbox en línea
fuente
Python 2 , 41 bytes
Pruébalo en línea!
NameErrorcuando es imposiblePython 2 , 43 bytes
Pruébalo en línea!
ValueErrorcuando es imposiblefuente
NameErrorpara salir por errorJavascript (ES6),
57 56 5341 bytesLa respuesta ahora incluye una forma más inteligente de crear los valores. Gracias @Neil
Uso
Historia
Primero mio
Luego agregó el operador de propagación y la sintaxis de currículum con punta de @Arnauld
fuente
_=>m++/n|0Guarda un montón de bytes.Java (OpenJDK 8) ,
8073636159 bytesPruébalo en línea!
Nota, para fines de curry,
mynse invierten.fuente
Pyth , 11 bytes
Pruébalo en línea!
fuente
Pyth , 13 bytes
Pruébalo en línea! Salida
0por error.Hacer trampa, 6 bytes
Pruébalo en línea! La matriz contiene un
0error. Lamentablemente, esto no es falso en Pyth .Explicación
fuente
CJam ,
1312 bytesPruébalo en línea!
Este es un bloque anónimo que toma la entrada como
n men la pila. Hubiera sido una buena respuesta, pero el requisito de manejo de errores lo eliminó por completo.Errores con una división por cero cuando no es posible resolverlo.
Explicación
Si se levanta el requisito de manejo de errores, esto se puede acortar a 7 bytes, lo que es una disminución de más del 40%:
fuente