Sei sulla pagina 1di 1

Vogliamo definire un cifrario che associ ad ogni lettera dell'alfabeto un colore

appartenente ad una lista di n-colori, randomizzati.


La struttura del cifrario � la solita:

1) Alfabeto E' l'insieme dei caratteri cui attingiamo per scrivere il


messaggio;
2) Regole La logica alla base della cifratura;
3) Testo Il messaggio da cifrare;
4) Regole Inverse La logica alla base della decifratura.

Come al solito, definiamo la lista dei caratteri di cui ci serviremo ( quelli


alfabetici ):

alph = CharacterRange["A", "Z"]

Adesso definiamo una lista di 26-colori ( uno per ogni lettera dell'alfabeto ),
sfruttando il comando RandomColor:

COLalph = RandomColor[26]

Definiamo ora la regola che associ all'n-esimo elemento della lista alph, l'n-esimo
colore della lista COLalph:

rule = Table[alph[[n]] -> COLalph[[n]], {n, Length[COLalph]}]

Procediamo come abbiamo fatto finora, ottenendo a schermo:

alph = CharacterRange["A", "Z"]


COLalph = RandomColor[26]
rule = Table[alph[[n]] -> COLalph[[n]], {n, Length[COLalph]}]
msg = "TUTTE LE LEGIONI DEVONO SPOSTARSI A ROMA"
ENCmsg = StringReplace[msg, rule]

Programma che cifrer� il messaggio inizializzato msg con una serie di colori. Anche
in questo caso lavoriamo con una funzione biettiva, dunque non ci importa sapere a
cosa � associato ogni elemento del dominio di rule, ci basta sapere che la funzione
� biettiva e l'n-esimo elemento del codominio ( a noi noto, ed � questo che ci
permette di cifrare il messaggio senza problemi ), coincide con l'n-esimo elemento
del dominio. La regola inversa, irule, sar� identica a quelle viste fino ad ora, e
cosi il resto del programma, che ci porter� al risultato finale:

alph = CharacterRange["A", "Z"]


COLalph = RandomColor[26]
rule = Table[alph[[n]] -> COLalph[[n]], {n, Length[COLalph]}]
msg = "TUTTE LE LEGIONI DEVONO SPOSTARSI A ROMA"
ENCmsg = StringReplace[msg, rule]
irule = Table[rule[[n, 2]] -> rule[[n, 1]], {n, Length[rule]}]
ReplaceAll[ENCmsg, irule]

Osservazione 1: abbiamo usato, in questo caso, ReplaceAll e non StringReplace,


poich� lavoriamo con colori e non con stringhe.
Osservazione 2: come al solito, agli spazi corrisponderanno degli spazi ed alle
doppie medesimi colori.

Potrebbero piacerti anche