Provavelmente um simples desafio de código-golfe. Dados 2 inteiros positivos m
e n
, faça uma lista de n
valores inteiros positivos cuja soma é igual ao número m
. Todos os valores na saída são o mesmo valor ou a diferença é exatamente 1.
Exemplos
Por exemplo
m=6
en=3
se tornaria2, 2, 2
m=7
en=3
se tornaria2, 2, 3
ou2, 3, 2
ou3, 2, 2
m=7
en=2
se tornaria3, 4
ou4, 3
m=7
en=1
se tornaria7
m=7
en=8
geraria um erro porque a soma de 8 números inteiros positivos não pode ser 7.m=10
en=4
se tornaria3, 3, 2, 2
ou qualquer outra permutação
Regras
- Tanto a entrada como a saída são apenas números inteiros positivos.
- Todos os valores na saída são o mesmo valor ou a diferença é exatamente 1.
- A ordem dos valores na lista não é importante.
- A soma dos valores na lista é igual a
m
. - Quando não for solucionável, gere um erro ou um valor falso (no caso de m = 7 en = 8, por exemplo).
- Como resultado de outras regras
m=8
en=3
geraria qualquer uma das permutações de3, 3, 2
(não2, 2, 4
)
O vencedor
Isso é código-golfe, então a resposta mais curta e válida - medida em bytes - vence.
float a = -0f, b = 0f; System.out.println(a == b); System.out.println(a + "," + b);
... produztrue
e-0.0,0.0
. Veja, 0 positivo e 0 negativo são claramente dois números distintos ... a implementação diz isso!Respostas:
Gaia , 4 bytes
Há quase apenas um built-in para isso ...
Explicação
fonte
Python 2 ,
4843 bytesRetorna
0
por erro.Experimente online!
41 bytes (com o truque de @ xnor)
Lança
NameError
com erro.Experimente online!
fonte
Mathematica, 33 bytes
entrada
resultado
gera False quando não é solucionável
fonte
MATL , 7 bytes
Quando não há solução, a saída é uma matriz que contém pelo menos um zero, o que é falso no MATL.
Experimente online!
Explicação
Considere entradas
m = 10
en = 4
.fonte
Haskell , 30 bytes
Experimente online!
fonte
Carvão vegetal , 15 bytes após a aplicação do NDD 1
Experimente online!
Não produz nada se não houver solução. Link para a versão detalhada .
1 NDD = Desenvolvimento Dirigido por Neil.
Minha resposta anterior:
Carvão ,
32 27 2420 bytesExperimente online!
Não produz nada se não houver solução. Link para a versão detalhada .
Claro, eu não poderia ter jogado o jogo sem a ajuda de Neil.
fonte
Cast
operador funciona por algum motivo, mas este não é um algoritmo ideal ... Eu tenho uma solução de 16 bytes.Cast
funciona em listas que eu sou até 11 bytes ...Map
, como na Terra funciona?Map
é como a versão da expressãofor
, usando a mesma variável de loop. Portanto, no seu exemplo, em vez de enviar uma expressão para uma lista a cada vez,Map
as coleta automaticamente e avalia a lista de resultados.R , 33 bytes
Um porto da resposta oitava de Luis Mendo . Muito triste que isso seja quase 50% menor que minha resposta anterior.
Experimente online!
resposta anterior, 63 bytes:
Uma função anônima que recebe dois argumentos (obrigatórios)
m
en
, e dois opcionais, para fins de golfe. Retorna um vetor em ordem crescente. Para falha, o primeiro valor será0
, que é falsey em R, poisif
usa apenas o primeiro valor do vetor (com um aviso).É essencialmente equivalente à seguinte função:
Experimente online!
fonte
pryr::f(diff(trunc(0:n*m/n)))
funciona e é mais curto!Geléia ,
76 bytesExperimente online! Não produz nada por falsidade.
Como funciona
fonte
TI-Basic, 23 bytes
Retorna ERR: DIVIDE BY 0 em erro
fonte
Oitava , 24 bytes
O código define uma função anônima. A saída é uma matriz numérica (vetor de linha). Quando não existe, essa matriz contém pelo menos um zero, o que é falso na oitava.
Experimente online!
Explicação
0:m/n:m
produz uma matriz den+1
valores de0
param
com o passom/n
.fix
arredonda cada entrada para0
ediff
calcula diferenças consecutivas.Como um exemplo, estão aqui todos os resultados intermédios para
m = 7
,n = 3
:fonte
Haskell ,
938988878671 bytesExperimente online!
Explicação
A principal função aqui é
e
.e
fará uma lista e essencialmente executará um rolo ao longo da esquerda para a direita. Enquanto houver um elemento na lista que seja maior que seu vizinho à direita, moveremos um deles para a direita.Agora tudo o que precisamos fazer é alimentar essa função com uma lista suficientemente desigual e permitir que ela faça a mágica. A lista que escolheremos é apenas
m
seguida porn-1
zeros. Desde que é fácil de fazer.A última coisa que precisamos fazer é garantir que o caso de erro seja tratado. Para isso, apenas lançamos um
Non-exhaustive patterns in function
erro enquantom>n
.fonte
error[]
ao não com um padrão não exaustiva em vez disso:m!n|m>n=e$m:replicate(n-1)0
.(0<$[1..n-1])
é mais curto quereplicate(n-1)0
.C # (.NET Core) ,
868271 bytesgera um erro para entradas inválidas.
Experimente online!
-4 bytes graças ao TheLethalCoder
-11 bytes graças a OlivierGrégoire
fonte
a=>b=>
no início.using System.Collections.Generic
se eu retornar umIEnumerable<int>
?IEnumerable<int>
aparecer no seu código e, como seria na definição da função, você não precisará incluir ousing
.Haskell, 48 bytes
Comece com uma lista de
n
zeros. Repetirm
tempos: pegue o primeiro elemento, adicione um e coloque-o no final da lista.Falha com um erro de correspondência de padrão se
n < m
.Experimente online!
fonte
Braingolf , 30 bytes
Experimente online!
Recebe entradas na ordem inversa (
n
é a primeira entrada,m
é a segunda)Divide
m
porn
, duplica osn
tempos do resultado , depois percorre e incrementa uma a umam % n
vezesfonte
Lote, 71 bytes
cmd/cset/a
não produz nenhum separador, então eu tenho que usarecho(
((
evita a impressãoECHO is on.
).fonte
PHP> = 7.1, 62 bytes
Sandbox do PHP Online
fonte
Python 2 , 41 bytes
Experimente online!
NameError
quando impossível.Python 2 , 43 bytes
Experimente online!
ValueError
quando impossível.fonte
NameError
a saída através de erroJavascript (ES6),
57 56 5341 bytesA resposta agora inclui uma maneira mais inteligente de criar os valores. Obrigado @Neil
Uso
História
Primeira mina
Em seguida, adicionou o operador de propagação e a sintaxe de currying com dicas de @Arnauld
fonte
_=>m++/n|0
salva um monte de bytes.Java (OpenJDK 8) ,
8073636159 bytesExperimente online!
Observe, para currying,
m
en
são revertidos.fonte
Pitão , 11 bytes
Experimente online!
fonte
Pitão , 13 bytes
Experimente online! Saída
0
com erro.Trapaça, 6 bytes
Experimente online! A matriz contém um
0
erro. Infelizmente, isso não é falso em Pyth .Explicação
fonte
CJam ,
1312 bytesExperimente online!
Este é um bloco anônimo que recebe a entrada como
n m
na pilha. Teria sido uma boa resposta, mas o requisito de manipulação de erros o eliminou completamente.Erros com uma divisão por zero quando não é possível resolver.
Explicação
Se o requisito de tratamento de erros for levantado, ele poderá ser reduzido para 7 bytes, o que representa uma diminuição de mais de 40%:
fonte