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

steenslag
fonte
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
JB
fonte
4

J, 33

~.+/\(#~i.200)(+/*2|#)/.1+i.2!200
Eelvex
fonte
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.

Michael Kohl
fonte
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
hallvabo
fonte