Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. #!/usr/bin/ruby1.8
  2.  
  3.  
  4. l = []
  5.  
  6. seen = {}
  7. done = {1 => nil}
  8.  
  9.  
  10. n = -1
  11. 1000.times \
  12. {
  13. n += 4
  14.  
  15. seen[n] = l.size
  16. l << [n]
  17. }
  18.  
  19. 5000.times \
  20. {
  21. i = -1
  22. l2 = l.map { |l1| [l1[-1], i += 1] }
  23.  
  24. n2, i = l2.min
  25. puts([0, n2].join("\t"))
  26.  
  27. n2 = (n2 % 2 == 0) ? n2 / 2 : n2 * 3 + 1
  28. if (done.member?(n2)) then
  29. l[i].each { |x| done[x] = nil; p(x) }
  30. l[i] = [n += 4]
  31. end
  32.  
  33. if (!(j = seen[n2]).nil?)
  34.  
  35. x = l[j][-1]
  36. l[j] |= l[i]
  37. l[j] << x
  38. l[i] = [n += 4]
  39. seen[n] = i
  40. else
  41. l[i] << n2
  42. seen[n2] = i
  43. end
  44.  
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement