068 Magic 5-gon ring.jl 930 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/usr/bin/julia
  2. # Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 03 May 2017
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=68
  7. # Runtime: 1.532s
  8. using Combinatorics
  9. function isOK(d)
  10. if (
  11. d[1] < d[4] &&
  12. d[1] < d[6] &&
  13. d[1] < d[8] &&
  14. d[1] < d[10]
  15. )
  16. i = d[1] + d[2] + d[3]
  17. j = d[4] + d[3] + d[5]
  18. k = d[6] + d[5] + d[7]
  19. l = d[8] + d[7] + d[9]
  20. m = d[10] + d[9] + d[2]
  21. i == j && i == k &&
  22. i == l && i == m
  23. else
  24. false
  25. end
  26. end
  27. function makeStr(d)
  28. string(d[1],d[2],d[3],d[4],d[3],d[5],d[6],d[5],d[7],d[8],d[7],d[9],d[10],d[9],d[2])
  29. end
  30. function p_68()
  31. max = ""
  32. nums = [i for i = 1:10]
  33. for j in 1:factorial(length(nums))
  34. perm = nthperm(nums, j)
  35. if isOK(perm)
  36. max = maximum([max, makeStr(perm)])
  37. end
  38. end
  39. return max
  40. end
  41. println(p_68())