Advertisement
Guest User

Untitled

a guest
Dec 12th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. class Hacker:
  2. def calc(self, value):
  3. sum = 0
  4. visited = {}
  5. for i in range(0, 10):
  6. sum = sum + 1
  7. if value == "%d%d%d%d" % (i, i, i, i):
  8. return sum
  9. visited["%d%d%d%d" % (i, i, i, i)] = True
  10. for i in range(0, 7):
  11. sum = sum + 1
  12. if value == "%d%d%d%d" % (i, i+1, i+2, i + 3):
  13. return sum
  14. visited["%d%d%d%d" % (i, i+1, i+2, i + 3)] = True
  15. sum = sum + 1
  16. if value == "%d%d%d%d" % (i+3, i+2, i+1, i):
  17. return sum
  18. visited["%d%d%d%d" % (i+3, i+2, i+1, i)] = True
  19.  
  20. for i in range(1900, 2018):
  21. sum = sum + 1
  22. if value == "%04d" % i:
  23. return sum
  24. visited["%04d" % i] = True
  25.  
  26. for i in range(1, 13):
  27. for j in range(1, [31,29,31,30,31,30,31,31,30,31,30,31][i-1] + 1):
  28. if i == j:
  29. if not visited.get("%02d%02d" % (i, j), False):
  30. sum = sum + 1
  31. if value == "%02d%02d" % (i, j):
  32. return sum
  33. visited["%02d%02d" % (i, j)] = True
  34. else:
  35. if not visited.get("%02d%02d" % (i, j), False):
  36. sum = sum + 1
  37. if value == "%02d%02d" % (i, j):
  38. return sum
  39. visited["%02d%02d" % (i, j)] = True
  40. if not visited.get("%02d%02d" % (j, i), False):
  41. sum = sum + 1
  42. if value == "%02d%02d" % (j, i):
  43. return sum
  44. visited["%02d%02d" % (j, i)] = True
  45.  
  46. for i in range(0, 5001):
  47. if not visited.get("%04d" % i, False):
  48. sum = sum + 1
  49. if value == "%04d" % i:
  50. return sum
  51. if not visited.get("%04d" % (10000 - (i+1)), False):
  52. sum = sum + 1
  53. if value == "%04d" % (10000 - (i+1)):
  54. return sum
  55.  
  56. class Debil:
  57. def calc(self, value):
  58. sum = 0
  59. for i in range(0, 10000):
  60. sum = sum + 1
  61. if value == "%04d" % i:
  62. return sum
  63. class SemiDebil:
  64. def calc(self, value):
  65. sum = 0
  66. for i in range(0, 2501):
  67. sum = sum + 1
  68. if value == "%04d" % i:
  69. return sum
  70. sum = sum + 1
  71. if value == "%04d" % (10000 - (i+1)):
  72. return sum
  73. sum = sum + 1
  74. if value == "%04d" % (5000 - (i+1)):
  75. return sum
  76. sum = sum + 1
  77. if value == "%04d" % (5000 + i):
  78. return sum
  79.  
  80. def main():
  81. d = Debil()
  82. m = SemiDebil()
  83. h = Hacker()
  84. ans = [0] * 10000
  85.  
  86. for i in range(0,10000):
  87. str = "%04d" % i
  88. ans[i] = (i, min(d.calc(str), m.calc(str), h.calc(str)))
  89. print(sorted(ans, key=lambda a: a[1]))
  90.  
  91. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement