O quarto poder (Juzuk)


8

Em 1939, Juzuk descreveu uma maneira de gerar as quarta potências dos números naturais. Agrupe os números naturais como este:

1   2 3   4 5 6   7 8 9 10   11 12 13 14 15   ...

Raspe cada segundo grupo:

1   4 5 6   11 12 13 14 15 ...

A soma dos n grupos restantes é n ** 4.

  • Entrada : nenhuma
  • Tarefa : imprima as quarta potências até 100 ** 4, usando o método de Juzuk.
  • Saída :

    0 (opcional) 1 16 81 ... 100000000


6
Embora eu ache aceitável proibir especificidades de idioma que facilitam a solução de um problema, não gosto da regra "usar o método de Juzuk". É permitido levar o n-1resultado em consideração ao calcular n? É permitido simplificar somas inteiras usando a n(n+1)/2fórmula? Quando não é mais o método de Juzuk?
sam hocevar 12/03/11

Perguntas retóricas?
steenslag

Respostas:


3

J, 40 38 ( não somando desnecessário)

+/\+/"1(+:i.100){(#~i.201)[/.>:i.20100

J, 30 (somando desnecessário)

+/\_2{.\(#~i.201)+//.>:i.20100

4

J, 33

~.+/\(#~i.200)(+/*2|#)/.1+i.2!200

Resumir os grupos que você vai copiar mais tarde é uma ótima otimização de código, mas em um contexto de "implementá-lo desta maneira", sinto-me roubado;)
JB

@JB: bem ... Eu estou usando o método de Juzuk, eu só somar zeros :)
Eelvex

3

Haskell, 78

print[sum$concat$take x[take x$drop(sum[1..x-1])[1..]|x<-[1,3..]]|x<-[0..100]]
[0,1,16,81,256,625,1296,2401,4096,6561,10000,14641,20736,28561,38416,50625,65536,...

Espero que a formatação de saída ligeiramente diferente esteja correta. Provavelmente, há uma maneira muito melhor de escrever isso em Haskell, mas tive vontade de resolver isso em um idioma que não costumo usar.


3

Python 2, 68

Solução Python rápida e suja:

s=0
for n in range(100):s+=sum(range(2*n*n+n+1,2*n*n+3*n+2));print s
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.