74 lines
1.1 KiB
Awk
74 lines
1.1 KiB
Awk
NR==1{ n = length($0); }
|
|
{
|
|
a[NR] = $0
|
|
b[NR] = $0
|
|
ocount += substr($1,1,1)
|
|
}
|
|
|
|
END{
|
|
gamma = ""
|
|
epsilon = ""
|
|
g = 0
|
|
e = 0
|
|
len = NR
|
|
count = ocount
|
|
for(nbit = 1; nbit<=n; nbit++){
|
|
bit = count>=len/2
|
|
print nbit, "bit", bit
|
|
delete sel
|
|
i=1
|
|
count = 0
|
|
for(r=1;r<=len;r++){
|
|
print a[r]
|
|
if( substr(a[r],nbit,1) == bit ){
|
|
sel[i] = a[r]
|
|
count += substr(a[r],nbit+1,1)
|
|
i++
|
|
}
|
|
}
|
|
delete a
|
|
for(i=1;i<=length(sel);i++){
|
|
a[i] = sel[i]
|
|
}
|
|
len = length(sel)
|
|
print length(sel)
|
|
if (len == 1)
|
|
break
|
|
}
|
|
oxygen = sel[1]
|
|
|
|
len = NR
|
|
count = ocount
|
|
for(nbit = 1; nbit<=n; nbit++){
|
|
bit = count<len/2
|
|
print nbit, "bit", bit
|
|
delete sel
|
|
i=1
|
|
count = 0
|
|
for(r=1;r<=len;r++){
|
|
print b[r]
|
|
if( substr(b[r],nbit,1) == bit ){
|
|
sel[i] = b[r]
|
|
count += substr(b[r],nbit+1,1)
|
|
i++
|
|
}
|
|
}
|
|
delete b
|
|
for(i=1;i<=length(sel);i++){
|
|
b[i] = sel[i]
|
|
}
|
|
len = length(sel)
|
|
print length(sel)
|
|
if (len==1)
|
|
break
|
|
}
|
|
co2 = sel[1]
|
|
|
|
print oxygen, co2
|
|
for(i=1;i<=n;i++){
|
|
o += lshift( substr(oxygen,i,1), n-i)
|
|
c += lshift( substr(co2,i,1), n-i)
|
|
}
|
|
print o, c, o*c
|
|
}
|