Primeira pergunta aqui, não grite comigo se isso for uma duplicata ou um mau desafio.
Introdução
Eu mesmo pensei nesse desafio e parece ser um bom quebra-cabeça básico para jogadores iniciantes de código. Também pode me ajudar a decidir qual idioma do código de golfe aprender.
Desafio
Dada uma matriz de números inteiros menores ou iguais a n
, produza ou retorna o número mínimo de números da matriz que somam exatamente n
.
Você pode optar por escrever uma função ou um programa completo.
Entrada
Você pode assumir com segurança 0 <= n < 2^31
.
Pegue uma matriz ou lista de qualquer tipo ( vector
para C ++ ou Java é LinkedList
permitido), junto com n
e um parâmetro opcional length
, que especifica o comprimento da matriz.
Você também pode considerar a entrada como uma sequência separada n
por espaço, separada por vírgula ou espaço:
1 5 7 3 7 3 6 3 2 6 3,10
1 5 7 3 7 3 6 3 2 6 3 10
se for mais fácil.
Resultado
Saída ou retorne o número mínimo de números da matriz que somam exatamente n
. Usando o exemplo acima:
1 5 7 3 7 3 6 3 2 6 3,10
Seu programa deve imprimir:
2
porque o número mínimo de números que soma 10
é 2
( 7
e 3
).
No caso de não haver solução, imprima ou retorne um negativo, 0
"Nenhuma solução" (embora isso não seja inteligente), ∞
(como sugerido) ou qualquer outro valor falso, com exceção de uma sequência vazia.
Exemplo de entrada e saída
Entrada:
1 5 7 3 7 3 6 3 2 6 3,10
143 1623 1646 16336 1624 983 122,18102
5 6 9,12
Resultado:
2
3
-1
Pontuação
Isso é código-golfe, então o código mais curto em bytes vence.
A resposta principal será aceita no Natal.
false
para casos sem soluções?