91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

今天上了一節組原,講了Hamming Code,對它的代碼實現比較感興趣,于是給自己出了個題目去玩。可以海明編碼,也可海明校驗。

資源截圖

代碼片段和文件信息

from?colorama?import?init??#?顏色庫


init(autoreset=True)


class?valid_bit:??#?有效位
????def?__init__(self?b?i):
????????self.num?=?i??#?序號
????????self.bit?=?int(b)??#?數值
????????self.link?=?[]??#?組成成分,7?=?4?+?2?+?1


class?check_bit:??#?校驗位
????def?__init__(self?i):
????????self.num?=?i??#?序號
????????self.bit?=?None??#?數值
????????self.link?=?[]??#?校驗位


def?smallest_check_number(k):
????r?=?1
????while?2?**?r?-?r?-?1?????????r?+=?1??#?得到最小檢測位數
????return?r


def?is_standard(string):
????return?string.count(‘1‘)?+?string.count(‘0‘)?==?len(string)


def?hamming_encode(string):
????checkList.clear()
????hammingList?=?[]
????hammingList.append(0)??#?填補0位,index即下標
????for?i?in?range(1?len(string)?+?1):
????????locals()[‘b‘?+?str(i)]?=?valid_bit(int(string[i?-?1])?i)
????????hammingList.append(locals()[‘b‘?+?str(i)])??#?先加入b
????r?=?smallest_check_number(len(string))
????for?j?in?range(1?r?+?1):
????????locals()[‘P‘?+?str(j)]?=?check_bit(j)
????????hammingList.insert(2?**?(j?-?1)?locals()[‘P‘?+?str(j)])
????????checkList.append(2?**?(j?-?1))??#?再插入P
????for?i?in?range(1?len(hammingList)):??#?i是有效位,j是檢測位
????????if?i?in?checkList:
????????????continue??#?跳過P
????????remain?=?i
????????for?j?in?range(len(checkList)?-?1?-1?-1):
????????????if?remain?>=?checkList[j]:
????????????????remain?-=?checkList[j]
????????????????hammingList[i].link.append(checkList[j])
????????????if?remain?==?0:
????????????????break
????????for?j?in?hammingList[i].link:
????????????hammingList[j].link.append(i)??#?P的link中加入b的位號
????#?計算檢測碼
????for?j?in?checkList:
????????xor?=?0
????????for?i?in?hammingList[j].link:
????????????xor?=?xor?^?hammingList[i].bit
????????hammingList[j].bit?=?xor
????for?i?in?range(1?len(hammingList)):
????????if?i?in?checkList:??#?檢測碼
????????????print(‘\033[1;33m%d\033[0m‘?%?hammingList[i].bit?end=‘‘)
????????else:
????????????print(‘%d‘?%?hammingList[i].bit?end=‘‘)
????print(‘\n‘)


def?hamming_correct(string):
????checkList.clear()
????hammingList1?=?[]??#?裝位
????hammingList1.append(0)
????k?=?1
????while?k?+?smallest_check_number(k)?!=?len(string):??#?反推r和k
????????k?+=?1
????r?=?smallest_check_number(k)
????for?i?in?range(r):
????????checkList.app

評論

共有 條評論