Guest User

Untitled

a guest
Mar 13th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  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) }
Add Comment
Please, Sign In to add comment