黑白棋通訊
魔術師和他的徒弟上台表演,下面有三個觀眾,魔術師蒙住眼睛。
(1)桌子上隨機排列七個黑白棋子,魔術師蒙著眼睛,看不到棋子。
(2)徒弟才看完這個七枚棋子後,在右面又添了乙個棋子,與其他棋子併排,這時有八枚棋子,魔術師依然蒙著眼睛。
(3)此時觀眾可將一枚棋子翻轉,或不反轉任何棋子,此間,徒弟觀眾一言不發,魔術師還是蒙著眼睛,並不知道觀眾有沒有反動棋子。
(4)魔術師摘下眼罩,觀察八枚棋子,然後馬上就能說出「觀眾翻轉了棋子」或「沒有反轉棋子」。
思考一下魔術師怎麼識破觀眾的行為呢。
tips:
徒弟只放了乙個棋子,而且放旗子的動作在觀眾的動作之前,那麼,徒弟是如何向魔術師傳遞有沒有翻轉棋子的資訊呢?
魔術師和徒弟雖然沒有用語言交流,但是僅僅通過一枚棋子進行交流。思考一下交流的方法。
答案
徒弟在觀眾擺放的7枚棋子中,數出黑棋子的個數,如果黑棋子是奇數,新增黑棋子,如果黑棋子是偶數,新增白棋子。所以最終黑棋子一定是偶數。
所以觀眾只要翻了棋子,一定會使黑棋子的奇偶性發生改變,如不翻動,奇偶性不變。
所以魔術師摘下眼罩,數一數黑棋子的個數就好啦。
奇偶校驗
將這個戲法的白棋子看做是二進位制的0,黑棋子看成1.那麼他就和計算機中的奇偶校驗方法是一樣的。
徒弟是傳送方,魔術師是接收方,中途翻動棋子的觀眾就是干擾通訊的噪音。
徒弟作為傳送方放置的一枚棋子,在通訊領域中被稱為奇偶校驗位。魔術師作為接收方,通過檢查奇偶性來判斷是否因為噪音發生了通訊錯誤。至於奇偶校驗位是設為奇數還是偶數,那個是傳送方和接收方先前商定好的。
java 奇偶校驗
奇校驗 param bytes 長度為8的整數倍 param parity 0 奇校驗,1 偶校驗 return throws exception public static byte parityofodd byte bytes,int parity throws exception if par...
奇偶校驗原理
奇偶校驗原理 通過計算資料中 1 的個數是奇數還是偶數來判斷資料的正確性。在被校驗的資料後加一位校驗位或校驗字元用作校驗碼實現校驗。校驗位的生成方法 奇校驗 確保整個被傳輸的資料中 1 的個數是奇數個,即載荷資料中 1 的個數是奇數個時校驗位填 0 否則填 1 偶校驗 確保整個被傳輸的資料中 1 的...
Parity check(奇偶校驗)
description input multiple test cases.each test case is an integer n 0 n 101000 in a single line.output for each test case,output the answer of f n mo...