Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 18-03-2012 13:36:06
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 947
[AlgoBox] Codage d'une phrase via la méthode du "Carré de Polybe"
Bonjour,
Je n'ai pas trouvé comment obtenir la position d'une lettre dans une chaîne : j'en ai donc été conduit à parcourir systématique le "carré" de Polybe (le W est éventuellement remplacé par un V : je n'en ai pas tenu compte) en incrémentant un compteur, jusqu'à tomber sur la bonne lettre.
J'aurais pu remplacer le carré Polybe chaîne par le carré Polybe contenant les codes ASCII des lettres de l'alphabet, le code 65 occupant la position 65 - 64 = 1 dans la liste (65 = code du A).
Je n'ai pas procédé ainsi pour respecter le procédé manuel du codage.
2 test EST_DU_TYPE NOMBRE
3 longueur EST_DU_TYPE NOMBRE
4 ligne EST_DU_TYPE NOMBRE
5 col EST_DU_TYPE NOMBRE
6 pos EST_DU_TYPE NOMBRE
7 i EST_DU_TYPE NOMBRE
8 j EST_DU_TYPE NOMBRE
9 Texte_Clair EST_DU_TYPE CHAINE
10 Polybe EST_DU_TYPE CHAINE
11 lettre EST_DU_TYPE CHAINE
12 lettrebis EST_DU_TYPE CHAINE
13 DEBUT_ALGORITHME
14 Polybe PREND_LA_VALEUR "ABCDEFGHIJKLMNOPQRSTUVXYZ"
15 Texte_Clair PREND_LA_VALEUR "JESUISFOUDUCHOCOLATLANVINDISAITDALI"
16 longueur PREND_LA_VALEUR Texte_Clair.length-1
17 AFFICHER "La phrase :"
18 AFFICHER Texte_Clair
19 AFFICHER "est codée en"
20 POUR i ALLANT_DE 0 A longueur
21 DEBUT_POUR
22 lettre PREND_LA_VALEUR Texte_Clair.substr(i,1)
23 test PREND_LA_VALEUR 0
24 pos PREND_LA_VALEUR 0
25 TANT_QUE (test==0) FAIRE
26 DEBUT_TANT_QUE
27 lettrebis PREND_LA_VALEUR Polybe.substr(pos,1)
28 SI (lettre==lettrebis) ALORS
29 DEBUT_SI
30 test PREND_LA_VALEUR 1
31 FIN_SI
32 SINON
33 DEBUT_SINON
34 pos PREND_LA_VALEUR pos+1
35 FIN_SINON
36 FIN_TANT_QUE
37 ligne PREND_LA_VALEUR FLOOR(pos/5)+1
38 col PREND_LA_VALEUR 1+pos%5
39 j PREND_LA_VALEUR 10*ligne+col
40 AFFICHER j
41 AFFICHER " "
42 FIN_POUR
43 FIN_ALGORITHME
Résultats :
***Algorithme lancé***
La phrase :
JESUISFOUDUCHOCOLATLANVINDISAITDALI
est codée en
25 15 44 51 24 44 21 35 51 14 51 13 23 35 13 35 32 11 45 32 11 34 52 24 34 14 24 44 11 24 45 14 11 32 24
***Algorithme terminé***
Je vais voir en remplaçant le Texte_Clair par une liste comprenant les codes ASCII du texte, et la chaine Polybe par les codes ASCII des lettres de l'alphabet...
@+
Arx Tarpeia Capitoli proxima...
Hors ligne