Guest User

Untitled

a guest
Jul 21st, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. aj = [[0,1,2],[2,0,1],[1,2,0]]
  2. n = 100
  3. m = 10
  4. while (n > 0)
  5. hm = m/2
  6. (1..(m-6)/4).each { |a| a3 = a**3
  7. ((a+1)..(((m2=m-a)-3)/3)).each { |b| b3 = b**3
  8. # a+b+c+d == m; a+d == b+c (mod 6) => c == m/2-b (mod 3)
  9. c = b+1; c += aj[c%3][(hm-b)%3]
  10. upper_c = ((m3=m2-b)-1)/2
  11. while (c <= upper_c)
  12. d = m3-c
  13. if ((s = a3 + d**3) == b3 + c**3)
  14. p [s, [a,d], [b,c]]
  15. exit if ((n -= 1) <= 0)
  16. end
  17. c += 3
  18. end
  19. }
  20. }
  21. m += 2
  22. end
  23.  
  24.  
  25. def sumcube e
  26. e[0]**3+e[1]**3
  27. end
  28.  
  29. def taxi_nums n
  30. b = yield ; found = 0
  31. while found < n
  32. a = yield
  33. #puts "#{a.inspect} => #{sumcube a}"
  34. if a[0] == b[0]
  35. a,b = b,a if a[1][0] > b[1][0]
  36. puts "#{a[1].inspect} , #{b[1].inspect} => #{a[0]}"
  37. found += 1
  38. end
  39. b = a
  40. end
  41. end
  42.  
  43. queue = [[9,[1,2]]]
  44.  
  45. taxi_nums(30){
  46. r = queue.shift
  47. a = r[1][0]
  48. b = r[1][1]
  49. c = [a,b+1]
  50. queue << [sumcube(c),c]
  51. if a+2 == b
  52. c = [a+1,b]
  53. queue << [sumcube(c),c]
  54. end
  55.  
  56. queue.sort!{|a,b|
  57. a[0] <=> b[0]
  58. }
  59. r
  60. }
Add Comment
Please, Sign In to add comment