Rechercher
Connexion
Chatbox externe
Derniers sujets
Partenaires
TI-Planet | Espace-TI : Forum |
Faire un don à Tout-82...
Où va cet argent ?
Membres donateurs:- Persalteas (10€)
- Wistaro (5€)
- jo2geek (22€)
Les posteurs les plus actifs du mois
Aucun utilisateur |
Programme de Cryptographie
4 participants
Tout 82 :: Programmes :: Les Programmes des Internautes (TI-Basic z80) :: Aide à la programmation (TI-Basic z80)
Page 1 sur 1
Programme de Cryptographie
Salut à tous !
Voilà j'aimerais créer un programme pour convertir un texte en un langage codé
Sachant que chaque lettre sera converti en chiffre (avec A=1, B=2, Z=26), puis je souhaiterais choisir un nombre quelconque que l'on additionnera, genre 3, puis remettre les lettres correspondantes :
démonstration :
ZEBRE → 26.05.02.18.05
On ajoute 3
29.08.05.21.08, comme on a 29, on fait 29-26=3 ce qui donne :
03.08.05.24.08 → CHEUH
Évidemment je souhaiterai faire l'inverse, c'est à dire rentrer les nombres, le chiffre d'addition qui a été utilisé, puis il m'affiche le texte. C'est comme un programme de conversion...
Est-ce qu'un tel programme est possible sur Ti 82 Stats.fr
Merci pour votre aide.
Voilà j'aimerais créer un programme pour convertir un texte en un langage codé
Sachant que chaque lettre sera converti en chiffre (avec A=1, B=2, Z=26), puis je souhaiterais choisir un nombre quelconque que l'on additionnera, genre 3, puis remettre les lettres correspondantes :
démonstration :
ZEBRE → 26.05.02.18.05
On ajoute 3
29.08.05.21.08, comme on a 29, on fait 29-26=3 ce qui donne :
03.08.05.24.08 → CHEUH
Évidemment je souhaiterai faire l'inverse, c'est à dire rentrer les nombres, le chiffre d'addition qui a été utilisé, puis il m'affiche le texte. C'est comme un programme de conversion...
Est-ce qu'un tel programme est possible sur Ti 82 Stats.fr
Merci pour votre aide.
Dernière édition par pito2901 le Mer 30 Avr 2014 - 23:32, édité 1 fois
Re: Programme de Cryptographie
Si tu veux, j'ai fait un programme qui permet de crypter/décrypter graphiquement un message écrit...
Pour ta méthode, je pense que c'est réalisable
Pour ta méthode, je pense que c'est réalisable
Re: Programme de Cryptographie
Wistaro a écrit:permet de crypter/décrypter graphiquement un message écrit...
Qu'est ce que tu entends par là ?
Re: Programme de Cryptographie
Tu rentre du texte, comme sur mon programme "TxTprint", il s'enregistre dans des pics.
Ensuite, tu peux crypter ce texte. L'image va être brouillée, en quelque sorte. Il sera impossible de trouver du texte, tu ne verras que des formes géométriques et des signes sans significations.
Un autre programme te permet de décrypter cette image étrange et de retrouver le texte d'origine
Ensuite, tu peux crypter ce texte. L'image va être brouillée, en quelque sorte. Il sera impossible de trouver du texte, tu ne verras que des formes géométriques et des signes sans significations.
Un autre programme te permet de décrypter cette image étrange et de retrouver le texte d'origine
Re: Programme de Cryptographie
Stocker la chaîne dans une image est hors propos à cause de la demande initiale de cryptage numérique circulaire.
Néanmoins je confirme la possibilité du stockage d'une chaîne dans une Image.
Le cryptage circulaire est simple à coder, surtout en TI-Basic, malgré l'étape circulaire. Je désigne par circulaire ou modulo ou encore wrapping le fait de ramener 27 à 1 quand on ajoute 1 à 26.
La conversion de la chaîne de caractères en nombres est plus pénible en TI-Basic.
On peut optimiser des choses différentes sachant que les bornes de fin des For() et seq() ne sont calculé qu'une seule fois en TI-Basic. Par exemple lire la longueur sans L ou encore utiliser une seule variable pour X et L.
EDIT : correction de la ligne du seq(). Deux fragments de code copiés n'étaient pas du tout à leur place dans le code.
Correction des modulos du calcul circulaire et ajout de la mention des 26 lettres.
Correction de la fin du seq() dont "L" manquait.
Néanmoins je confirme la possibilité du stockage d'une chaîne dans une Image.
- Spoiler:
- Moi je stocke et relit des images dans des chaînes à la résolution de 6 à 8 bits par token. Ce travail n'est que l'association de tokens à des nombre suivi d'un travail binaire de sprite. J'ai vaincu Persalteas au jeu de l'image du concours d'Halloween d'Espace-TI avec entre autre ça.
Le cryptage circulaire est simple à coder, surtout en TI-Basic, malgré l'étape circulaire. Je désigne par circulaire ou modulo ou encore wrapping le fait de ramener 27 à 1 quand on ajoute 1 à 26.
La conversion de la chaîne de caractères en nombres est plus pénible en TI-Basic.
- Code:
ClrList L1 // cela suffira, pas besoin de dimensionner
Input Str1
Prompt A
"ABCD...Z->Str2
//bijection de chaque token à un nombre
length(Str1->L
For(X,1,L
sub(Str1,X,1) // un token
inString(Str2,Ans) // valeur associée au token
A+Ans // somme
Ans-26int((Ans-1)/26) // circulaire (modulo 26 des lettres), que tu codes comme tu veux
Ans->L1(X) //stockage de l'image de la valeur associée au token
End
" "->Str1
//bijection de la liste à la chaîne
For(X,1,L
Str1+sub(Str2,L1(X),1->Str1 // concatène
End
Str1 //résultat
- Code:
Input Str1
Prompt A
"ABCD...Z->Str2
length(Str1->L
A+seq(inString(Str2,sub(Str1,X,1)),X,1,L->L1 // extraction de chaque caractère puis ajoute A à chacun
L1-26int((L1-1)/26->L1 // circulaire (modulo 26 des lettres) de chaque terme de L1
" "->Str1
For(X,1,L
Str1+sub(Str2,L1(X),1->Str1 // concatène
End
Str1 //résultat
On peut optimiser des choses différentes sachant que les bornes de fin des For() et seq() ne sont calculé qu'une seule fois en TI-Basic. Par exemple lire la longueur sans L ou encore utiliser une seule variable pour X et L.
EDIT : correction de la ligne du seq(). Deux fragments de code copiés n'étaient pas du tout à leur place dans le code.
Correction des modulos du calcul circulaire et ajout de la mention des 26 lettres.
Correction de la fin du seq() dont "L" manquait.
Dernière édition par Linkakro le Mar 29 Avr 2014 - 23:01, édité 3 fois
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Programme de Cryptographie
Dans le deuxième code, il me met erreur syntaxe avant le →L1 à la cinquième ligne, tu as sûrement oublié quelque chose.
et petite question, pourquoi mettre seulement ABCD ?
et petite question, pourquoi mettre seulement ABCD ?
Re: Programme de Cryptographie
J'avais copiés des fragments de code de l'autre programme n'importe comment. Modifié.
J'écris ABCD car je suis paresseux et que tu devines la suite. Et les modulos doivent être adaptés selon le nombre de caractères possibles.
Je signale maintenant que mes solutions basées sur la liste L1 ne supportent que 999 tokens maximum.
Il faut parcourir la chaîne une seule fois et calculer pour chaque token.
EDIT :
Suppression d'un ClrList innutile.
Ajout de l'affectation de L qui est nécessaire pour la dernière sous-chaine sub().
J'écris ABCD car je suis paresseux et que tu devines la suite. Et les modulos doivent être adaptés selon le nombre de caractères possibles.
Je signale maintenant que mes solutions basées sur la liste L1 ne supportent que 999 tokens maximum.
Il faut parcourir la chaîne une seule fois et calculer pour chaque token.
- Code:
Input Str1
Prompt A
"ABCD...Z->Str2
" "->Str3
length(Str1->L
//bijection de chaque token à un nombre
For(X,1,L
sub(Str1,X,1
A+inString(Str2,Ans
Ans-26int((Ans-1)/26
Str3+sub(Str2,Ans,1->Str3
End
sub(Str3,2,L // résultat
EDIT :
Suppression d'un ClrList innutile.
Ajout de l'affectation de L qui est nécessaire pour la dernière sous-chaine sub().
Dernière édition par Linkakro le Mer 30 Avr 2014 - 21:11, édité 1 fois
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Programme de Cryptographie
J'ai toujours erreur syntaxe avant le →L1 à la cinquième ligne
- Rien à voir...:
- Au passage, vu que vous êtes bons en maths et que je bloque, pouvez-vous m'aider à faire un problème, si oui je posterai le sujet dans espace libre...
Re: Programme de Cryptographie
Cette fois j'avais oublié le L pour la borne de fin de la fonction seq().
Tant que j'y suis, je teste chaque programme dans la foulée. (et je cherche)
Tant que j'y suis, je teste chaque programme dans la foulée. (et je cherche)
- réponse au "Rien à voir...":
- Je ne trouve aucun problème à parler de mathématiques dans l'espace libre.
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Programme de Cryptographie
Il met erreur argument après sub(Str1,X,1
- Rien à voir...:
- Je le posterai demain, merci de vouloir m'aider...
Re: Programme de Cryptographie
Une erreur argument?
Je ne comprends pas: la syntaxe de sub c'est bien: sub(Chaine,debut,longueur), donc là tu respectes les arguments...
A la rigueur une erreur domaine si la valeur de X n'est pas correcte, ou indéfini si Str1 est vide, mais sinon...
Tu as bien rentré la ligne?
Donne la valeur de Str1 et de X, sait on jamais...
Je ne comprends pas: la syntaxe de sub c'est bien: sub(Chaine,debut,longueur), donc là tu respectes les arguments...
A la rigueur une erreur domaine si la valeur de X n'est pas correcte, ou indéfini si Str1 est vide, mais sinon...
Tu as bien rentré la ligne?
Donne la valeur de Str1 et de X, sait on jamais...
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Programme de Cryptographie
Mais A n'est pas une chaine, donc c'est sur que ça ne marchera pas...
Si tu voulais dire la variable A: ce n'est pas possible, il faut que tu utilises une variable de chaine à la place ([var],[7]).
Si tu voulais la lettre A comme chaine: il faut mettre des guillemets: sub("A",3,1), mais dans ce cas c'est absurde: tu auras une erreur domaine...
A moins que tu veilles dire que str1 contienne "A" et X=3, dans ce cas ton erreur n'est pas logique, tu aurais du avoir une erreur dimension...
Si tu voulais dire la variable A: ce n'est pas possible, il faut que tu utilises une variable de chaine à la place ([var],[7]).
Si tu voulais la lettre A comme chaine: il faut mettre des guillemets: sub("A",3,1), mais dans ce cas c'est absurde: tu auras une erreur domaine...
A moins que tu veilles dire que str1 contienne "A" et X=3, dans ce cas ton erreur n'est pas logique, tu aurais du avoir une erreur dimension...
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Programme de Cryptographie
Je comprends pas...
Il me met ? donc je tape A pour qu'il soit dans la chaîne 1
Ensuite il met A? donc je mets 3
et là il met erreur argument, mais je me rends compte qu'on ne définie rien pour X
Il me met ? donc je tape A pour qu'il soit dans la chaîne 1
Ensuite il met A? donc je mets 3
et là il met erreur argument, mais je me rends compte qu'on ne définie rien pour X
Re: Programme de Cryptographie
X correspond au numéro de la lettre du mot, il est géré par la boucle for:
For(X,1,length(Str1
Input mets les guillemets nécessaires aux chaines, donc normalement pas de problème à ce niveau.
Donc ton erreur me parait bizarre, donne moi les valeurs de Str1 et de X après l'erreur stp.
[EDIT] Ceci a été corrigé par Linka par édition.
Par contre Linka:
For(X,1,length(Str1
Input mets les guillemets nécessaires aux chaines, donc normalement pas de problème à ce niveau.
Donc ton erreur me parait bizarre, donne moi les valeurs de Str1 et de X après l'erreur stp.
[EDIT] Ceci a été corrigé par Linka par édition.
Par contre Linka:
- Code:
sub(Str3,2,L // résultat
- Code:
sub(Str3,2,lenght(Str1 // résultat
Dernière édition par m@thieu41 le Mer 30 Avr 2014 - 21:12, édité 1 fois
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Programme de Cryptographie
Et ça fait une erreur?
Bizarre...
Essaye (sur l'écran standard hors programme) la commande:
sub("A",1,1
Bizarre...
Essaye (sur l'écran standard hors programme) la commande:
sub("A",1,1
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Programme de Cryptographie
Aïe le problème vient de là
sub = sous-chaine en français.
Regarde sur le manuel fait par Persalteas/Linka si tu as un doute à propos d'une traduction : http://www.tout82.org/t151-catalogue-du-ti-basic-z80
suite = seq
seq(expression,variable,debut,fin
permet d'obtenir une suite calculée à partir de expression en fonction de variable allant de debut à fin.
Ex:
suite(A²,A,1,3
Donne:
{1,4,9
sub = sous-chaine en français.
Regarde sur le manuel fait par Persalteas/Linka si tu as un doute à propos d'une traduction : http://www.tout82.org/t151-catalogue-du-ti-basic-z80
suite = seq
seq(expression,variable,debut,fin
permet d'obtenir une suite calculée à partir de expression en fonction de variable allant de debut à fin.
Ex:
suite(A²,A,1,3
Donne:
{1,4,9
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Programme de Cryptographie
- Code:
sub(Str1,X,1
A+inString(Str2,Ans
Ans-26int((Ans-1)/26
Enlève →L1
En effet, l'algo de Linka procède ainsi:
Il isole la lettre;
Il calcule son numéro (en rajoutant ce qui doit être rajouté);
Il en déduit la lettre correspondante et la stocke à la suite du mot codé.
Don nul besoin de liste. (contrairement au 2nd prgm qu'il avait proposé).
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Programme de Cryptographie
Bravo à vous deux ! Merci.
EDIT : Encore un problème → il m'affiche que le codage de la première lettre, on ne peut pas entrer un texte entier ?
EDIT : Encore un problème → il m'affiche que le codage de la première lettre, on ne peut pas entrer un texte entier ?
Re: Programme de Cryptographie
Tu as bien mis le For et le End?
- Code:
For(X,1,length(Str1
...
End
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Programme de Cryptographie
Heu... tu as sur ta calto le dernier code de Linka après sa dernière édition?
Je préfère demander vu que Linka a édité afin de corriger l'affichage du résultat.
Si oui:
donne moi la valeur de X et de L après l'utilisation du prgm (ainsi que la chaine saisie en entrée).
Je préfère demander vu que Linka a édité afin de corriger l'affichage du résultat.
Si oui:
donne moi la valeur de X et de L après l'utilisation du prgm (ainsi que la chaine saisie en entrée).
m@thieu41- ----------------------
- Messages : 939
Points Concours : 65
Productivité : 47
Date d'inscription : 02/06/2013
Localisation : Nice, France
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Programme de Cryptographie
J'avais bien commis diverses erreurs d'étourderies qui sont maintenant corrigées, et j'ai tout testé moi-même.
seq(=suite(
sub(=sous-chaîne(
inString=carChaîne(
int=partEnt
iPart=ent(
J'imagine que tu peux avoir confondu Str1 et Str3 dans les calculs de longueur length(Str1) et L.
seq(=suite(
sub(=sous-chaîne(
inString=carChaîne(
int=partEnt
iPart=ent(
J'imagine que tu peux avoir confondu Str1 et Str3 dans les calculs de longueur length(Str1) et L.
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Programme de Cryptographie
int j'ai juste mis partEnt, j'édite mon programme et je vous dis. ← c'était une autre erreur de traduction
puis j'ai oublié la ligne de commande qui définie la longueur de la chaîne stockée dans L...
Voilà, à présent ça fonctionne merci beaucoup !
Je poste ce programme dans les programmes des internautes.
puis j'ai oublié la ligne de commande qui définie la longueur de la chaîne stockée dans L...
Voilà, à présent ça fonctionne merci beaucoup !
Je poste ce programme dans les programmes des internautes.
Sujets similaires
» Programme de Cryptographie
» Programme "DROITES"
» Programme de division euclidienne
» Installer un programme assembleur
» Recopier correctement un programme ASM
» Programme "DROITES"
» Programme de division euclidienne
» Installer un programme assembleur
» Recopier correctement un programme ASM
Tout 82 :: Programmes :: Les Programmes des Internautes (TI-Basic z80) :: Aide à la programmation (TI-Basic z80)
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Dim 16 Oct 2022 - 21:11 par Wistaro
» Bonne année 2018!
Ven 2 Nov 2018 - 19:42 par Ti64CLi++
» Lancement du TI-Concours 2017 !
Sam 20 Mai 2017 - 0:27 par Paulo1026
» Chaînes Youtube des membres
Ven 19 Mai 2017 - 22:41 par Wistaro
» cacul du taux d'intêret
Ven 24 Mar 2017 - 21:50 par m@thieu41
» [Projet] Un mario by tout82
Dim 29 Jan 2017 - 14:09 par Wistaro
» Cherche documentation assembleur TI82stat
Mer 25 Jan 2017 - 12:29 par Ti64CLi++
» Probleme Ti-82 Stats fr
Jeu 12 Jan 2017 - 13:56 par Ti64CLi++
» ROM 82 stats.fr
Jeu 15 Déc 2016 - 10:24 par Ti64CLi++