在编写MOPs 问题优化的程序时,涉及到了这一问题(基因型的编码解码),基因的编码使用的是格雷码。格雷码的优点是这里不多赘述。
下面直接上代码!
```python
# =================================== 格雷码转换 ====================================
def graycode_to_integer(graycode):
graycode_len = len(graycode)
binay = []
binay.append(graycode[0])
for i in range(1, graycode_len):
if graycode[i] == binay[i-1]:
b = 0
else:
b = 1
binay.append(str(b))
return bin_to_inter(''.join(binay))
def bin_to_inter(binay):
sum = 0
length = len(binay)
for i in range(0 , length):
num = int(binay[i])*(2**(length - i - 1))
sum = sum + num
return sum
def integer_to_graycode(integer):
binay = bin(integer).replace('0b', '')
graycode = []
binay_len = len(binay)
graycode.append(binay[0])
for i in range(1, binay_len):
if binay[i-1] == binay[i]:
g = 0
else:
g = 1
graycode.append(str(g))
return ''.join(graycode)
# =================================== 测试 ====================================
print(integer_to_graycode(22))
print(graycode_to_integer("10110"))
# =================================== 结果====================================
11101
27
未经本人同意,不可转载!