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


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

4

J, 33

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

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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.