fork download
  1. def col(x)
  2. return x/2 if x%2==0
  3. return x*3+1
  4. end
  5.  
  6. def collatz_array(x)
  7. res=[]
  8. while(x!=1)
  9. if(x%2==0)
  10. res<<0
  11. x=x/2
  12. else
  13. res<<1
  14. x=(x*3+1)/2
  15. end
  16. end
  17. return res
  18.  
  19. end
  20.  
  21. def collatz_array_l(x,l)
  22. res=[]
  23. l.times{
  24. if(x%2==0)
  25. res<<0
  26. x=x/2
  27. else
  28. res<<1
  29. x=(x*3+1)/2
  30. end
  31. }
  32. return res
  33. end
  34.  
  35.  
  36. def collatz_number(x)
  37. res=0;
  38. x.each_with_index{|v,i|res+=v*(2**i)}
  39. return res
  40. end
  41.  
  42. def collatz_rational(x)
  43. l=x.length
  44. res=0r
  45. x.each_with_index{|v,i|res+=v*(1/2r)**(i+1)}
  46. res+=((1/2r)**l)*(2/3r)
  47. return res
  48. end
  49.  
  50. def collatz_rational_array(x,l)
  51. res=[]
  52. (0...l).each{|i|
  53. if(x>=1/2r)
  54. then
  55. x-=1/2r
  56. res<<1
  57. else
  58. res<<0
  59. end
  60. x*=2r
  61. }
  62. return res
  63. end
  64.  
  65. (1..1000).each{|x|
  66. a=collatz_array(x)
  67. l=a.length
  68. r=collatz_rational(a)
  69. b=collatz_rational_array(r,l+10)
  70. c=collatz_array_l(x,l+10)
  71. if(c!=b)
  72. then
  73. print "#{x} #{r} #{a} #{b} #{c}\n"
  74. end
  75. #print "#{x} #{r} #{a} #{c}\n"
  76. }
  77.  
Success #stdin #stdout 0.11s 28352KB
stdin
Standard input is empty
stdout
Standard output is empty