História de fundo
Isenção de responsabilidade: Pode conter informações inventadas sobre cangurus.
Os cangurus atravessam vários estágios de desenvolvimento. À medida que envelhecem e são mais fortes, eles podem pular mais e mais e pular mais vezes antes de ficarem com fome.
No estágio 1 , o canguru é muito pequeno e não pode pular. Apesar disso, é constantemente requer nutrição. Podemos representar um padrão de atividade de canguru no estágio 1 como este.
o
No estágio 2 , o canguru pode fazer pequenos saltos, mas não mais do que 2 antes de ficar com fome. Podemos representar um padrão de atividade de um canguru no estágio 2 como este.
o o
o o o
Após o estágio 2, o canguru melhora rapidamente. Em cada estágio subsequente, o canguru pode pular um pouco mais alto (1 unidade na representação gráfica) e duas vezes mais. Por exemplo, o padrão de atividade de um canguru do estágio 3 se parece com isso.
o o o o
o o o o o o o o
o o o o o
Todo esse salto requer energia; portanto, o canguru requer nutrição depois de concluir cada padrão de atividade. A quantidade exata necessária pode ser calculada da seguinte forma.
Atribua cada o no padrão de atividade de um estágio n canguru, sua altura, ou seja, um número de 1 a n , em que 1 corresponde ao solo en na posição mais alta.
Calcule a soma de todas as alturas no padrão de atividade.
Por exemplo, o padrão de atividade de um canguru no estágio 3 inclui as seguintes alturas.
3 3 3 3
2 2 2 2 2 2 2 2
1 1 1 1 1
Nós temos cinco 1 's, oito 2 ' s, e quatro 3 's; a soma é 5 · 1 + 8 · 2 + 4 · 3 = 33 .
Tarefa
Escreva um programa completo ou uma função que use um número inteiro positivo n como entrada e imprima ou retorne os requisitos nutricionais por atividade de um estágio n canguru.
Isso é código-golfe ; que a resposta mais curta em bytes ganhe!
Exemplos
1 -> 1
2 -> 7
3 -> 33
4 -> 121
5 -> 385
6 -> 1121
7 -> 3073
8 -> 8065
9 -> 20481
10 -> 50689
http://www.wolframalpha.com/input/?i=2%5E(n-1)*(n%5E2-1)%2B1
(Marcação estranha, porque uma URL comum fica bagunçada) #Respostas:
Gelatina , 6 bytes
Usa a fórmula ( n 2 - 1) 2 n - 1 + 1 para calcular cada valor. A Qwerp-Derp's teve a gentileza de fornecer uma prova .
Experimente online! ou Verifique todos os casos de teste.
Explicação
fonte
Coffeescript, 19 bytes
Edit: Obrigado a Dennis por cortar 6 bytes!
A fórmula para gerar números de canguru é esta:
Explicação da fórmula:
O número de
1
's inK(n)
' na soma final é2^(n - 1) + 1
.O número de
n
's inK(n)
' na soma final é2^(n - 1)
, então a soma de todos osn
's én * 2^(n - 1)
.O número de qualquer outro número (
d
) naK(n)
soma final de é2^n
, então a soma de todos osd
seriad * 2^n
.Assim, a soma de todos os outros números
= (T(n) - (n + 1)) * 2^n
, ondeT(n)
está a função do número do triângulo (que tem a fórmulaT(n) = (n^2 + 1) / 2
).Substituindo isso, obtemos a soma final
Quando somamos todas as somas, obtemos o
K(n)
que é igual a... que é igual à fórmula acima.
fonte
n=>(n*n-1<<n-1)+1
Java 7, 35 bytes
fonte
Gelatina , 4 bytes
Experimente online! ou verifique todos os casos de teste .
Como funciona
fonte
Python 2,
2523 bytesFórmula de milhas usadas.
Obrigado a Jonathan Allan por -2 bytes.
fonte
~-x
. Você também pode usarx-1
(não menor), uma vez que a subtração tem uma precedência mais alta que a mudança.~-x
, então decidi deixá-lo inalterado. Bem, parece que todo mundo preferex-1
, no entanto (Dennis também disse exatamente isso).-~(x*x-1<<~-x)
para o registro, mas-1
ainda existe, então eu não gosto de código mistura ...- 1
.Lua, 105 bytes
De-golfe:
Problema divertido!
fonte
Na verdade , 8 bytes
Experimente online!
Explicação:
Isso simplesmente calcula a fórmula
(n**2 - 1)*(2**(n-1)) + 1
.fonte
GolfScript , 11 bytes
Experimente online!
Obrigado Martin Ender (8478) por remover 4 bytes.
Explicação:
fonte
CJam, 11 bytes
Experimente online.
Explicação:
fonte
ri
...Mathematica, 15 bytes
Como não há operador de deslocamento de bits, precisamos fazer a exponenciação real, mas é mais curto dividir por 2 em vez de diminuir o expoente.
fonte
C, 26 bytes
Como uma macro:
Em função (27):
fonte
f(1+2)
.05AB1E , 7 bytes
Experimente online!
Explicação
fonte
C #, 18 bytes
Função anônima baseada em excelente análise matemática de Qwerp-Derp .
Programa completo com casos de teste:
fonte
Lote, 30 bytes
Bem, ele vence o Java de qualquer maneira.
fonte
MATL , 7 bytes
Usa a fórmula de outras respostas.
Experimente online!
fonte
Oásis , 9 bytes
Estou surpreso que não há um built-in para
2^n
.Experimente online!
Explicação:
fonte
m
importante, isso e falta de criatividade. Além disso, muitos operadores ainda não foram implementados devido à preguiça e procrastinação.Raquete 33 bytes
Usando a fórmula explicada por @ Qwerp-Derp
Ungolfed:
Teste:
Saída:
fonte
Ruby, 21 bytes
@ Qwerp-Derp basicamente fez o trabalho pesado.
Por causa da precedência em ruby, parece que precisamos de algumas parênteses:
fonte
Scala, 23 bytes
Usa deslocamento de bits como exponenciação
fonte
Pitão, 8 bytes
pyth.herokuapp.com
Explicação:
fonte
R, 26 bytes
Aplicação descarada da fórmula
fonte
J , 11 bytes
Com base na mesma fórmula encontrada anteriormente .
Experimente online!
Explicação
fonte
Groovy (22 bytes)
Não preserva
n
, mas usa a mesma fórmula que todas as outras nesta competição. Salvo 1 byte com decrementos, devido aos parênteses necessários.Teste
fonte
JS-adiante, 32 bytes
Não é super curto, mas é mais curto que o Java. Esta função coloca o resultado na pilha. Isso requer JS-Forth porque eu uso
<<
.Experimente online
fonte