Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def f2(n)
- return n.odd? ? (n * 3 + 1) / 2 : n / 2
- end
- def f3(n)
- n /= 2 while (n.even?)
- n = (n * 3 + 1) / 2 while (n.odd?)
- return n
- end
- def f4(n)
- n /= 2 while (n.even?)
- n = (n * 3 + 1) / 2 if (n.odd?)
- end
- def climb(n)
- n1 = n
- l = [n]
- begin
- n = f2(n)
- l << n
- end while (n > 2)
- m = (0...l.size).max_by { |x| l[x] }
- b = m
- b += 1 while (l[b] > n1)
- l = l.map { |x| x.to_s(2).reverse }
- return l[0..m], l[m..b], l[(b + 1)..-1]
- end
- def graph1(f, l, m, j)
- w = l.max_by { |x| x.length }.length
- f.puts("set colors classic; \\")
- f.puts("set title '##{m} #{['climb', 'fall', 'tail'][j]}'; plot \\")
- f.puts("[0:#{w}][0:#{l.size - 1}] '-' matrix with image title ''")
- l.each_with_index \
- {
- |z, i|
- c = w - z.length
- z[z.length...w] = '0' * c
- f.puts(z.split('').join(' '))
- }
- f.puts("eof")
- f.puts("eof")
- f.puts("pause -1;")
- end
- def graph(l)
- f = File.open(fn = "gnuplot.cmd", 'w')
- f.puts("set palette negative grayscale; unset colorbox;")
- l.each_with_index \
- {
- |x, i|
- climb(x).each_with_index { |x, j| graph1(f, x, i, j) }
- }
- f.close
- $stderr.puts(fn)
- end
- def db()
- l = File.open('db.txt').readlines.map { |x| Kernel.eval(x) }
- $stderr.puts("ls1 #{l.size}")
- l = l.select { |x| x['cg'] > 50 }.sort_by { |x| -x['cg'] }[0...10]
- $stderr.puts("ls2 #{l.size}")
- return l.map { |x| x['n'] }
- end
- if (File.exists?(fn = "grid.txt")) then
- l = File.open(fn).readlines.map { |x| x.to_i }
- $stderr.puts("#{fn} #{l.size}")
- else
- l = db()
- end
- graph(l)
Add Comment
Please, Sign In to add comment