編程大作戰——“古老的棋盤密碼”

 公元前2世紀,一個叫Polybius的希臘人設計了一種將字母加密成數字的方法,他畫了一個5×5的棋盤,然后將26個英文字母放置在里面,其中 i 和 j 共用一個格子,每個字母對應的行和列組成一個兩位數即該字母的加密結果。這個方法被稱之為棋盤密碼,在古代,這種棋盤密碼被廣泛使用。

假設我們需要發送明文信息“Hello”,找到H對應2行3列,則加密為23,e加密為15,以此類推,得到密文:23 15 31 31 34。

一、作戰任務

編寫一個棋盤加密的程序,輸入英文字符,顯示或打印加密后的結果。

提示:題目的難度就在于如何找到字母對應的數字(行列),以scratch為例:可以創建兩個列表,分別存儲26個字母,字母對應的加密結果。

少兒編程大作戰——“古老的棋盤密碼”

加密時根據字母去找到結果實現加密,這是一種比較簡單的處理辦法,當然還有其它辦法等你來挑戰。

二、挑戰要求

編程語言不限,scratch、python……等

三、分級挑戰

該題目有一定的難度,建議初級及以上的學員參與:

初級:按照上面提示,用列表的方法先存儲字母與對應的加密結果進行加密,python可以用到字典。

中級:不要借助列表,自己觀察棋盤的分布規律,使用簡單的算法得到字母對應的行和列,實現加密

高級:在中級的基礎上實現解密程序,例如輸入一組數:23 15 31 31 34

得到解密結果:HELLO

注意:解密過程中遇到24,對應有兩個字母i/j,暫不考慮具體選擇哪一個,直接用(i/j),最終結果需要根據語義選擇,看哪個更符合語境就好了。比如說密文21 24 42 15解密后得到f(i/j)re,這個時候如果是fjre很明顯是錯的,正確的應該是fire


任務指揮官|大貓老師

為了增加孩子們的創造能力,給孩子們一個持續學習練習的方向,中國少兒編程網(www.kunzetech.com)不定期推出一些編程小任務,孩子們完成的作品可以發布到我們的網站,由少兒編程網的老師做出評定并提供修改建議。

由于這個不是正式比賽,鼓勵孩子們發揮自己的想象力,也培養他們相互學習和分享精神,因此暫時不提供獎項設置。鼓勵原創,家長可以指導孩子們一起完成,希望看到大家不一樣的作品!

本站內容未經許可,禁止任何網站及個人進行轉載。