daily pastebin goal
48%
SHARE
TWEET

Untitled

a guest Mar 13th, 2018 55 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. def f2(n)
  2.     return n.odd? ? (n * 3 + 1) / 2 : n / 2
  3.  
  4. end
  5.  
  6. def f3(n)
  7.     n /= 2 while (n.even?)
  8.     n = (n * 3 + 1) / 2 while (n.odd?)
  9.     return n
  10.  
  11. end
  12.  
  13. def f4(n)
  14.     n /= 2 while (n.even?)
  15.     n = (n * 3 + 1) / 2 if (n.odd?)
  16. end
  17.  
  18. def climb(n)
  19.    
  20.     n1 = n
  21.     l =  [n]
  22.     begin
  23.         n = f2(n)
  24.         l << n
  25.     end while (n > 2)
  26.  
  27.     m = (0...l.size).max_by { |x| l[x] }
  28.  
  29.     b = m
  30.     b += 1 while (l[b] > n1)
  31.        
  32.     l = l.map { |x| x.to_s(2).reverse }
  33.    
  34.     return l[0..m], l[m..b], l[b + 1, -1]
  35.    
  36. end
  37.  
  38. def graph(t)
  39.    
  40.  
  41.     l = [lambda { db() }, lambda { db2() }, lambda { db3() }][t].call()
  42.  
  43.     f = File.open(fn = "gnuplot#{t}.cmd", 'w')
  44.     f.puts("set palette negative grayscale; unset colorbox;")
  45.  
  46.     l.each_with_index \
  47.     {
  48.         |x, m|
  49.         l1, l2, l3 = climb(x)
  50.        
  51.         w = l1.max_by { |x| x.length }.length
  52.        
  53.         f.puts("set colors classic; \\")
  54.         f.puts("set title 'db#{t} ##{m}'; plot \\")
  55.         f.puts("[0:][0:#{l1.size - 1}] '-' matrix with image title ''")
  56.        
  57.         l1.each_with_index \
  58.         {
  59.             |z, i|
  60.            
  61.             c = w - z.length
  62.             z[z.length...w] = '0' * c
  63.            
  64.             z = ('0' * i) + z + ('0' * (l1.size - i))
  65.             f.puts(z.split('').join(' '))
  66.         }
  67.         f.puts("eof")
  68.         f.puts("eof")
  69.         f.puts("pause -1;")
  70.     }
  71.  
  72.     f.close
  73.     $stderr.puts(fn)
  74.    
  75. end
  76.  
  77. def db()
  78.  
  79.     l = File.open('db.txt').readlines.map { |x| Kernel.eval(x) }
  80.  
  81.     $stderr.puts("ls1 #{l.size}")
  82.     l = l.select { |x| x['cg'] > 50 }.sort_by { |x| -x['cg'] }[0..10]
  83.  
  84.     $stderr.puts("ls2 #{l.size}")
  85.  
  86.     return l.map { |x| x['n'] }
  87.    
  88. end
  89.  
  90. def db2()
  91.    
  92.     l = [1188422437712810453548692144111,  
  93.     1267645764524909143928782979055,
  94.     950718153992428974215671054331,
  95.     1267650599619486847064288002031,
  96.     1267263743928478267661447331823,
  97.    
  98.     1267650600228157343902665277435,
  99.     1267650600228229120021726494715,
  100.     1187029374906136646647505215483,
  101.     1187566500367426151132698771451,
  102.     1262698840071087879262966906875,
  103.    
  104.     1262079860601523887534124302319,
  105.     944544301776605808442996686831,
  106.     1267650600228229401492408238075,
  107.     1267650600227941171115988090875,
  108.     1089387196644627700395764875259,
  109.    
  110.     1267631257415042911701410250747,
  111.     1267650600228229400946947391483,
  112.     1267650295626364506530572664827,
  113.     950737949837973124922201866223,
  114.     1208152107089751447308077105147,
  115.    
  116.     1267495857723300714563831332859,
  117.     1267650524670365671184333275119,
  118.     1262620108772473765213857906683,
  119.     1168571863718606745625097666543,
  120.     950699264544943791451680538623,
  121.     ]
  122.  
  123.  
  124.     return l
  125. end
  126.  
  127. def db3()
  128.    
  129. u = [1267650600228229401496703205375,
  130.     1267630047899000142442027548671,
  131.     1267650600228226868221912809471,
  132.     1267650600228229401496703205375,
  133.     950737799055444599293880565759,
  134.  
  135.     1267650222438908520125272424447,
  136.     1109188230570602090213788352511,
  137.     1267648182376590101869609615359,
  138.     1265174115686460594460072869887,
  139.     1267631252683525677339035828223,
  140.  
  141.     1255271162056443735790550253567,
  142.     1257747079323650548938804559871,
  143.     1099290753335882174719565234175,
  144.     1247843484039412683381487435775,
  145.     950737949580876240763821752319
  146. ]
  147.  
  148.     return u
  149.    
  150. end
  151.  
  152. 3.times { |x| graph(x) }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top