Skip to content

Instantly share code, notes, and snippets.

@vznvzn
Created November 17, 2015 22:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vznvzn/d742a051176e0d340354 to your computer and use it in GitHub Desktop.
Save vznvzn/d742a051176e0d340354 to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby1.8
def fs()
lo = [lambda { |n| n * 3 + 1 }, lambda { |n| (n * 3 + 1) / 2 },
lambda { |n| n = (n * 3 + 1) / 2 while (n.odd?); n }]
le = [lambda { |n| n / 2 }, lambda { |n| n /= 2 while (n.even?); n }]
l = []
lo.each \
{
|o|
le.each \
{
|e|
next if (o == lo.last && e == le.last)
l << lambda \
{
|n|
n = o.call(n) if (n.odd?)
n = e.call(n) if (n.even?)
n
}
}
}
return l
end
$f = fs()[4]
n = 2 ** 20 + 1
l = []
100.times { l << (n += 2) }
x = 0
while (!l.empty?)
j = (0...l.size).max_by { |x| l[x] }
n = l.delete_at(j)
n2 = $f.call(n)
puts([x, Math.log(n)].join("\t"))
puts([x + 1, Math.log(n2)].join("\t"))
puts
l << n2 if (n2 != 1)
x += 1
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment