El cuarto poder (Juzuk)

8

En 1939 Juzuk describió una forma de generar los cuartos poderes de los números naturales. Agrupe los números naturales como este:

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

Rasca cada segundo grupo:

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

La suma de los n grupos restantes es n ** 4.

  • Entrada : ninguna
  • Tarea : imprime los cuartos poderes hasta 100 ** 4, usando el método de Juzuk.
  • Salida :

    0 (opcional) 1 16 81 ... 100000000

steenslag
fuente
66
Si bien considero aceptable prohibir las especificidades del lenguaje que hacen que sea demasiado fácil resolver un problema, no me gusta esa regla de "usar el método de Juzuk". ¿Está permitido tener n-1en cuenta el resultado cuando se computa n? ¿Está permitido simplificar sumas enteras usando la n(n+1)/2fórmula? ¿Cuándo ya no es el método de Juzuk?
sam hocevar
¿Preguntas retóricas?
steenslag

Respuestas:

3

J, 40 38 ( sin suma innecesaria)

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

J, 30 (suma innecesaria)

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

J, 33

~.+/\(#~i.200)(+/*2|#)/.1+i.2!200
Eelvex
fuente
Sumar los grupos que rascarás más tarde es una buena optimización de código, pero en un contexto de "implementarlo de esta manera", me siento robado;)
JB
@JB: bueno ... estoy usando el método de Juzuk, solo
sumo
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 el formato de salida ligeramente diferente esté bien. Probablemente haya una forma mucho mejor de escribir esto en Haskell, pero tuve ganas de resolver esto en un idioma que no uso con frecuencia.

Michael Kohl
fuente
3

Pitón 2, 68

Solución Python rápida y sucia:

s=0
for n in range(100):s+=sum(range(2*n*n+n+1,2*n*n+3*n+2));print s
hallvabo
fuente