092 Square digit chains.jl 527 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/julia
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 30 January 2017
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=92
  7. # Runtime: 2.405s
  8. const cache = zeros(Int64, 10^7)
  9. cache[ 1] = 1
  10. cache[89] = 89
  11. function chain(n::Int64)
  12. if (cache[n] == 0)
  13. cache[n] = chain(sum(map((d)->d^2, digits(n))))
  14. else
  15. cache[n]
  16. end
  17. end
  18. function count()
  19. c = 0
  20. for n in 1:10^7
  21. if (chain(n) == 89)
  22. c += 1
  23. end
  24. end
  25. return c
  26. end
  27. println(count())