191 Prize Strings -- v2.jl 747 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/julia
  2. # Daniel "Trizen" Șuteu
  3. # Date: 19 October 2017
  4. # https://github.com/trizen
  5. # Runtime: 0.478s
  6. # https://projecteuler.net/problem=191
  7. using Memoize
  8. function p_191(days::Int64)
  9. @memoize function generate(len, hasL, hasA1, hasA2)
  10. count = 0
  11. if (len == days)
  12. count += 1
  13. end
  14. if (len < days)
  15. if (!hasA1 || !hasA2)
  16. count += generate(len + 1, hasL, hasA2, true)
  17. end
  18. count += generate(len + 1, hasL, hasA2, false)
  19. if (!hasL)
  20. count += generate(len + 1, true, hasA2, false)
  21. end
  22. end
  23. return count
  24. end
  25. return generate(0, false, false, false)
  26. end
  27. println(p_191(30))