Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/ruby1.8
- l = []
- seen = {}
- done = {1 => nil}
- n = -1
- 1000.times \
- {
- n += 4
- seen[n] = l.size
- l << [n]
- }
- 5000.times \
- {
- i = -1
- l2 = l.map { |l1| [l1[-1], i += 1] }
- n2, i = l2.min
- puts([0, n2].join("\t"))
- n2 = (n2 % 2 == 0) ? n2 / 2 : n2 * 3 + 1
- if (done.member?(n2)) then
- l[i].each { |x| done[x] = nil; p(x) }
- l[i] = [n += 4]
- end
- if (!(j = seen[n2]).nil?)
- x = l[j][-1]
- l[j] |= l[i]
- l[j] << x
- l[i] = [n += 4]
- seen[n] = i
- else
- l[i] << n2
- seen[n2] = i
- end
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement