Created
December 27, 2019 05:20
-
-
Save vznvzn/35ba2ae4172595eec10a1aadc2853484 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def f2(n) | |
return n.odd? ? (n * 3 + 1) / 2 : n / 2 | |
end | |
def outin2() | |
l = File.open('out2.txt').readlines.map { |x| Kernel.eval(x) } | |
return l | |
end | |
def lenx(ns, p) | |
l = ns.split(p) | |
l = [] if (l.nil?) | |
l.shift if (l[0] == '') | |
return l.map { |x| x.length } | |
end | |
def len01x(ns) | |
return lenx(ns, /0+/), lenx(ns, /1+/) | |
end | |
def seq(n) | |
n1 = n | |
l = [n1] | |
while (n != 1) | |
l << n | |
n = f2(n) | |
end | |
return l | |
end | |
def d(s) | |
c = s.split('').select { |x| x == '1' }.size | |
d = c.to_f / s.length | |
return d | |
end | |
def e(ns) | |
return len01x(ns).flatten.size.to_f / ns.length | |
end | |
def dp(l, b) | |
c = c1 = c2 = 0 | |
l.each \ | |
{ | |
|x| | |
d = d(x) | |
d1 = d < 0.5 ? 0 : 1 | |
x1 = x[-1, 1].to_i | |
c += 1 if (d1 == x1) | |
c1 += d1 | |
c2 += x1 | |
} | |
return {"dp#{b}" => c1.to_f / l.size} | |
end | |
l = outin2() | |
$stderr.puts(l.size) | |
l.sort_by! { |x| x['cg'] } | |
l3 = [] | |
100.times \ | |
{ | |
|i| | |
x = l[-i] | |
l1 = x['l'] | |
l2 = l1.map { |x| x.to_s(2) } | |
cm = x['cm'] | |
cg = x['cg'] | |
sl1 = l2[0...cm] | |
sr1 = l2[cm..-1] | |
v1 = dp(sl1.select { |x| x[-1,1] == '1'}, '1l') | |
v2 = dp(sl1.select { |x| x[-1,1] == '0'}, '0l') | |
v3 = dp(sr1.select { |x| x[-1,1] == '1'}, '1r') | |
v4 = dp(sr1.select { |x| x[-1,1] == '0'}, '0r') | |
sl = sl1.map { |x| x[-50..-1] }.join | |
sr = sr1.map { |x| x[-50..-1] }.join | |
dl = d(sl) | |
dr = d(sr) | |
drl = dr - dl | |
el = e(sl) | |
er = e(sr) | |
erl = er - el | |
a = v1.merge(v2).merge(v3).merge(v4) | |
a = a.merge({'dl' => dl, 'dr' => dr, 'drl' => drl}) | |
a = a.merge({'el' => el, 'er' => er, 'erl' => erl}) | |
l3 << a.merge({'i' => i}) | |
$stderr.puts(i) | |
} | |
f = File.open('gnuplot.cmd', 'w') | |
f.puts('$dat << eof') | |
k = l3[0].keys | |
f.puts(k.join("\t")) | |
l3.each { |x| f.puts(x.values.join("\t")) } | |
f.puts('eof') | |
f.puts("plot $dat using (column('dp0l')):(column('dp1l')) pt 7 title 'dp0l vs dp1l', '' using (column('dp0r')):(column('dp1r')) pt 7 title 'dp0r vs dp1r'") | |
f.close | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment