Maneiras de chegar ao número

10

Dada a entrada do primeiro número e o segundo número (ambos inteiros positivos, zero EXCLUÍDA), determinar em quantas maneiras você poderia fazer o segundo fora do primeiro, usando seguintes ações: +1, +2e *3. As operações são simplesmente aplicadas da esquerda para a direita.

Exemplos:

  1. Entrada: 1 2. Saída: 1. Ou seja, você só poderia começar 2fazendo +1, por isso de uma maneira.

  2. Entrada: 1 3. Saída: 3. Ou seja, você pode obter 3 fazendo +2ou +1+1, ou*3

  3. Entrada: 1 4. Saída: 4.

  4. Entrada: 2 6. Saída: 6.

  5. Entrada: 2 7. Saída: 9.

  6. Entrada: 1 10. Saída: 84.

Caso não haja maneiras, por exemplo 100 100, ou 100 80, a saída é 0.

Você também pode receber a entrada como uma matriz ou string com qualquer separador conveniente.

A solução mais curta vence.

nicael
fonte
Parece que pode ser um tolo, desculpe se for - não encontrou uma pergunta semelhante.
Nicael
4
E quanto às entradas para as quais a resposta deve ser infinita? Por exemplo, qualquer entrada em que o primeiro número inteiro seja negativo, porque você pode multiplicar por três e depois incrementar de volta ao número original e repetir quantas vezes quiser.
Peter Taylor
11
@ Patrick: Mas faz sentido. Começando de -1 e indo para 0, você pode aplicar *3 +2 +1quantas vezes quiser e, em seguida, aplicar +1para chegar a 0.
Deusovi
@ Peter Fair observação, restrita a números positivos.
Nicael 22/06

Respostas:

1

Pitão - 26 24 bytes

Parece haver um bug no Pyth que está fazendo com que ele receba entradas na ordem errada, mas não deve importar de qualquer maneira.

/m.vj;+sdzs^Lc3"+1+2*3"S

Conjunto de Teste .

( 1 10atingiu o tempo limite on-line, mas funcionou no meu computador).

Maltysen
fonte
Tempo esgotado, com números tão pequenos? Hã.
Nicael
@nicael sim, há apenas 59K maneiras que eu verificar se há 10, mas pyth é slooooooow
Maltysen
6

Javascript ES6, 45 44 bytes

f=(a,b=B)=>a<(B=b)?f(a+1)+f(a+2)+f(a*3):a==b

Exemplo é executado:

f(1,2)  -> 1
f(2,6)  -> 6
f(1 10) -> 84
Dendrobium
fonte
11
Uso interessante de parâmetros padrão, embora seja certo que não salva bytes aqui. =Be (B=)( bomitido de propósito) tem 6 caracteres e a alternativa está passando ,b3 vezes para as chamadas recursivas, que também têm 6 caracteres. Enfim, bom trabalho.
Patrick Roberts
1

Pitão, 29 bytes

M?>GH0|qGH+sgLGtBtH?%H3ZgG/H3

Experimente online!

Define uma função. Adicionado três bytes no link para chamar a função.

Freira Furada
fonte