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 graph(t)
- l = [lambda { db() }, lambda { db2() }, lambda { db3() }][t].call()
- f = File.open(fn = "gnuplot#{t}.cmd", 'w')
- f.puts("set palette negative grayscale; unset colorbox;")
- l.each_with_index \
- {
- |x, m|
- l1, l2, l3 = climb(x)
- w = l1.max_by { |x| x.length }.length
- f.puts("set colors classic; \\")
- f.puts("set title 'db#{t} ##{m}'; plot \\")
- f.puts("[0:][0:#{l1.size - 1}] '-' matrix with image title ''")
- l1.each_with_index \
- {
- |z, i|
- c = w - z.length
- z[z.length...w] = '0' * c
- z = ('0' * i) + z + ('0' * (l1.size - i))
- f.puts(z.split('').join(' '))
- }
- f.puts("eof")
- f.puts("eof")
- f.puts("pause -1;")
- }
- 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
- def db2()
- l = [1188422437712810453548692144111,
- 1267645764524909143928782979055,
- 950718153992428974215671054331,
- 1267650599619486847064288002031,
- 1267263743928478267661447331823,
- 1267650600228157343902665277435,
- 1267650600228229120021726494715,
- 1187029374906136646647505215483,
- 1187566500367426151132698771451,
- 1262698840071087879262966906875,
- 1262079860601523887534124302319,
- 944544301776605808442996686831,
- 1267650600228229401492408238075,
- 1267650600227941171115988090875,
- 1089387196644627700395764875259,
- 1267631257415042911701410250747,
- 1267650600228229400946947391483,
- 1267650295626364506530572664827,
- 950737949837973124922201866223,
- 1208152107089751447308077105147,
- 1267495857723300714563831332859,
- 1267650524670365671184333275119,
- 1262620108772473765213857906683,
- 1168571863718606745625097666543,
- 950699264544943791451680538623,
- ]
- return l
- end
- def db3()
- u = [1267650600228229401496703205375,
- 1267630047899000142442027548671,
- 1267650600228226868221912809471,
- 1267650600228229401496703205375,
- 950737799055444599293880565759,
- 1267650222438908520125272424447,
- 1109188230570602090213788352511,
- 1267648182376590101869609615359,
- 1265174115686460594460072869887,
- 1267631252683525677339035828223,
- 1255271162056443735790550253567,
- 1257747079323650548938804559871,
- 1099290753335882174719565234175,
- 1247843484039412683381487435775,
- 950737949580876240763821752319
- ]
- return u
- end
- 3.times { |x| graph(x) }
Add Comment
Please, Sign In to add comment