Technoplaneta – šifrovací hra pro děti

Řešení pro Úkol 2-2 – Jednička, nebo nula?

Řešení

V zadání je několik obrázků obsahující vždy dvojici znaků z ASCII tabulky a jsou nakreslené hezky velké a přes sebe. Tam, kde se překrývají, se však vyruší, černá barva zmizí a obrázek je průhledný. To je zajímavá vlastnost. Jedná se jednu ze základních logických funkcí, konkrétně výhradní logický součet neboli XOR. Asi ji sami takhle přímo nebudete znát, ale právě proto je zadání nakreslené tímto způsobem a konec konců na Technoplanetě není úplně neznámá.

Úplně jednoduše řečeno funkce XOR funguje tak, že hledá neshodu, nebo-li výsledkem je jednička právě tehdy, když se dvě vstupní hodnoty nerovnají. Budete-li sledovat nápovědy přímo v zadání, které vás směrují na „bin“, tedy binární kód, a „ASCII“ tabulku, asi si brzy přepíšete znaky ze zadání do binárního kódu a pak už nezbývá, než je zkusit zkombinovat dohromady a čekat, co vyjde. Napište si binární jedničku tam, kde se nad sebou binární hodnoty pro oba kombinované znaky liší. Tam, kde jsou shodné (ať už oba 1 nebo oba 0), zapíšete nulu. Po převedení zpátky na znak podle ASCII tabulky dostanete kod babka.

písmeno     desítkově   binárně

B           66          01000010
)           41       	00101001
--------------------------------
k           107         01101011

I           73 	        01001001
&           38          00100110
--------------------------------
o           111         01101111

N           78          01001110
*           42          00101010
--------------------------------
d           100         01100100

A           65          01000001
#           35          00100011
--------------------------------
b           98          01100010

S           83          01010011
2           50          00110010
--------------------------------
a           97          01100001

C           67          01000011
!           33          00100001
--------------------------------
b           98          01100010

I           73          01001001
"           34          00100010
--------------------------------
k           107         01101011

I           73          01001001
(           40          00101000
--------------------------------
a           97          01100001




B (66) xor 41 ()) = 107 (k)
I (73) xor 38 (&) = 111 (o)
N (78) xor 42 (*) = 100 (d)

A (65) xor 35 (#) = 98 (b)
S (83) xor 50 (2) = 97 (a)
C (67) xor 33 (!) = 98 (b)
I (73) xor 34 (") = 107 (k)
I (73) xor 40 (() = 97 (a)


P.S.: A kdybyste chtěli procvičovat i jiné logické operace, doporučujeme počítat v puntících ;-).