Mikade Posté(e) le 21 décembre 2022 Signaler Posté(e) le 21 décembre 2022 Bonjour, pourriez vous m'expliquer la logique svp, ça fait plus d'1h qu'on cherche on y arrive pas. Merci d'avance 😊 Citer
E-Bahut Denis CAMUS Posté(e) le 21 décembre 2022 E-Bahut Signaler Posté(e) le 21 décembre 2022 Bonjour, T'es sûr d'être en CM1 ? Je ne sais pas si ça va faire avancer le schmilblick mais il semble que le deuxième nombre est égal à la moitié du premier, moins1. Citer
E-Bahut julesx Posté(e) le 22 décembre 2022 E-Bahut Signaler Posté(e) le 22 décembre 2022 Bonjour Denis, Ça fait effectivement avancer le schmilblick ! Il suffit d'y rajouter que l'indice dans l'ordre alphabétique des lettres à chercher est, soit égal au nombre trouvé (compte à partir de A) ou à 26 moins le nombre trouvé (décompte à partir de Z). Après, il faut choisir la bonne lettre parmi les deux possibilités, mais, curieusement, c'est systématiquement celle correspondant au décompte. De là à dire que c'est évident pour un élève de CM1... Mais, de toute façon, ça n'a pas du tout l'air d'intéresser le demandeur. Bonnes fêtes de fin d'année en attendant ! Citer
E-Bahut Denis CAMUS Posté(e) le 22 décembre 2022 E-Bahut Signaler Posté(e) le 22 décembre 2022 Bonjour Jules, Je ne comprends pas ces flèches qui ont l'air d'expliquer le cheminement des calculs. Dans un cas le deuxième nombre donne la lettre dans l'ordre alphabétique et la deuxième lettre est Z-n-1 (ou A - n). Dans la deuxième ligne, c'est l'inverse. J'ai essayé d'y coller du mod(26) mais je ne m'en suis pas sorti. Pourquoi ces deux cas, et pourquoi deux lettres à chaque fois ? Ce ne sera pas la dernière fois que l'on aura un demandeur faisant un passage fugitif. Il n'est même pas furtif. Sauf s'il ne s'est pas connecté volontairement et visite en anonyme. Bonnes fêtes également. Citer
E-Bahut Denis CAMUS Posté(e) le 22 décembre 2022 E-Bahut Signaler Posté(e) le 22 décembre 2022 Je l'ai : DEUX FOIS TROIS EGAL SIX Excel et trois essais : A = 0 ou A = 1 + alphabet à l'endroit ==> ça marche pas A = 1 + alphabet à l'endroit ==> ça marche. A = 0 et alphabet à l'envers, ça marche. Edit : erreur avec l'alphabet à l'endroit. Je corrige. Citer
Black Jack Posté(e) le 22 décembre 2022 Signaler Posté(e) le 22 décembre 2022 Bonjour, Cela aurait peut-être été un peu plus clair ainsi ? Citer
E-Bahut Denis CAMUS Posté(e) le 22 décembre 2022 E-Bahut Signaler Posté(e) le 22 décembre 2022 C'est sûr ! Citer
E-Bahut julesx Posté(e) le 22 décembre 2022 E-Bahut Signaler Posté(e) le 22 décembre 2022 Bonjour, Pour info, moi, sous LibreOffice Calc, j'ai également mis en B =A/2-1, puis, dans C =CAR(64+B) et dans D =CAR(26+65-B1). A la main, ça marche dans les deux sens avec le même nombre, à condition bien sûr de commencer avec A=1 et Z=1. Citer
E-Bahut PAVE Posté(e) le 22 décembre 2022 E-Bahut Signaler Posté(e) le 22 décembre 2022 Bonsoir, Un grand merci à Mikade : on s'amuse bien... Une feuille Excel pour les f... atigués. EB221222 codage.xlsx Citer
E-Bahut Denis CAMUS Posté(e) le 22 décembre 2022 E-Bahut Signaler Posté(e) le 22 décembre 2022 Eh ! Il est passé à 17h06 ! Citer
E-Bahut PAVE Posté(e) le 23 décembre 2022 E-Bahut Signaler Posté(e) le 23 décembre 2022 362606461408 28264632 Citer
E-Bahut Denis CAMUS Posté(e) le 24 décembre 2022 E-Bahut Signaler Posté(e) le 24 décembre 2022 À toi aussi. Je n'ai pas fait le déchiffrement, mais je sais ce que tu as mis, grâce aux deux lettres répétées. (Quoique j'aurais pu utiliser ta feuille Excel.) Citer
E-Bahut PAVE Posté(e) le 24 décembre 2022 E-Bahut Signaler Posté(e) le 24 décembre 2022 Qui osera Python pour décoder ? Puis pour coder ?? @Mikade Moi j'aimerais bien savoir en quelle classe tu es. Et puis que tu nous dises si tu as compris la méthode de décodage... Tu nous dois bien une réponse car malgré ton silence, on a fait tout notre possible pour t'aider... Joyeux Noël à toi et à tous ceux qui te sont Chers 😍. Citer
E-Bahut julesx Posté(e) le 24 décembre 2022 E-Bahut Signaler Posté(e) le 24 décembre 2022 Bonjour PAVE, Joyeux Noël également. A propos de Python, le codage ne devrait pas poser de gros problème. Au départ, le décodage non plus. Par contre, comment expliquer à Python qu'il ne faut retenir que les lettres formant un mot intelligible ? Ça, c'est une autre paire de manches Citer
E-Bahut Denis CAMUS Posté(e) le 24 décembre 2022 E-Bahut Signaler Posté(e) le 24 décembre 2022 Il faut un fichier avec une liste des trigrammes ou tétragrammes français avec leur fréquence d'apparition. Ensuite par comparaison avec les fréquences du message déchiffré, on essaie de voir si il y a une ressemblance. http://practicalcryptography.com/cryptanalysis/text-characterisation/quadgrams/ J'ai un programme qui fonctionne sur ce principe pour casser du Vigenère ou des chiffrements par substitution (mais basé sur l'anglais.). Citer
Black Jack Posté(e) le 24 décembre 2022 Signaler Posté(e) le 24 décembre 2022 il y a 32 minutes, julesx a dit : Bonjour PAVE, Joyeux Noël également. A propos de Python, le codage ne devrait pas poser de gros problème. Au départ, le décodage non plus. Par contre, comment expliquer à Python qu'il ne faut retenir que les lettres formant un mot intelligible ? Ça, c'est une autre paire de manches Bonjour, Rien ne dit d'ailleurs qu'il est impossible d'avoir à partir d'un même code plusieurs messages différents intelligibles. Citer
E-Bahut julesx Posté(e) le 24 décembre 2022 E-Bahut Signaler Posté(e) le 24 décembre 2022 Je n'ai pas été jusque là, je me suis arrêté à la première difficulté consistant à trouver un mot pour chaque groupe de chiffres ! Citer
E-Bahut julesx Posté(e) le 24 décembre 2022 E-Bahut Signaler Posté(e) le 24 décembre 2022 Bonsoir à tous, Juste pour le fun, un programme de décodage en trichant, comme l'auteur de l'énoncé, c'est à dire avec toutes les lettres en partant de la fin : @essai.py Encore bonnes fêtes de fin d'année à tous. Citer
E-Bahut Denis CAMUS Posté(e) le 24 décembre 2022 E-Bahut Signaler Posté(e) le 24 décembre 2022 Pièce jointe indisponible. Citer
E-Bahut PAVE Posté(e) le 24 décembre 2022 E-Bahut Signaler Posté(e) le 24 décembre 2022 Désolé, Jules, mais je ne parviens pas à télécharger ton fichier... il est écrit "indisponible" sous le nom un peu bizarre d'ailleurs avec un @ comme première lettre. On a hâte de découvrir mais en ce soir de fête, rien ne presse. Bon Noël. Citer
E-Bahut julesx Posté(e) le 25 décembre 2022 E-Bahut Signaler Posté(e) le 25 décembre 2022 Bonjour, Désolé, je n'avais pas fait attention à "indisponible". Probablement que les fichiers .py ne sont pas acceptés par E-bahut. Ci-joint le code. D0=input("Entrez le message codé en séparant les groupes de chiffres par un espace ") #D0="48461408 44263818 1620263818 46425432 183808" #D0="362606461408 28264632" l=len(D0) D="" L=[] for i in range(0,l): if D0[i]==" ": D=D+" " else: D=D+D0[i] l=len(D) for i in range(0,l-1,2): if D[i]==" ": c=-1 else: c=int(D[i]+D[i+1])//2-1 L.append(c) for i in range(0,len(L)): if L[i]==-1: print(" ",end="") else: print(chr(26+65-L[i]),end="") Si on ne veut pas se fatiguer à entre le message codé à la main, on fait un copier-coller d'un des deux #D0. P.S. : Le @, c'est pour que le fichier apparaisse en tête de ma liste. Citer
E-Bahut PAVE Posté(e) le 25 décembre 2022 E-Bahut Signaler Posté(e) le 25 décembre 2022 😀 Bravo Jules !! Citer
E-Bahut julesx Posté(e) le 25 décembre 2022 E-Bahut Signaler Posté(e) le 25 décembre 2022 En fait, ce n'était pas si compliqué en acceptant la "tricherie". Le seul endroit où j'ai eu des difficultés, c'était de gérer la prise de deux caractères successifs alors que les noms étaient séparés a priori par un espace unique. Finalement, je n'ai pas trouvé d'autre solution que d'introduire un deuxième espace aux endroits où il n'y en avait qu'un (première partie du script). Je n'y ai pas encore réfléchi, mais je pense que le script pour le codage ne devrait pas poser plus de difficulté. On pourrait même mélanger de façon aléatoire les aller-retours. Par contre, là, il faut alors améliorer le décodage en affichant les deux groupes possibles et en laissant l'utilisateur faire le tri. Avis aux amateurs. Encore bonnes fêtes à tous. Citer
E-Bahut Denis CAMUS Posté(e) le 25 décembre 2022 E-Bahut Signaler Posté(e) le 25 décembre 2022 Pour le moment, j'ai bricolé ça : #=============================================================== # # Déchiffrage algo e-Bahut # #=============================================================== import re alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" #============================== Entrées ======================== code = "362606461408 28264632" #code = input("quel est le code à déchiffrer :") code = re.sub('[^0-9]|\\s','',code.upper()) # Supprime ce qui n'est pas numérique. L = len(code) if (L)%2 != 0: print("Il faut un nombre pair de chiffres") #============================ calculs ============================== clair1 = "" clair2 = "" for i in range(0, L, 2): lettre = code[i: i+2] indice = int (int (lettre) / 2 -1 ) clair1 += alphabet[26 -indice] clair2 += alphabet[indice-1] #============================ Sorties ============================== print ("clair1 : ", clair1) print ("clair2 : ", clair2) Il y a 4 heures, julesx a dit : Je n'y ai pas encore réfléchi, mais je pense que le script pour le codage ne devrait pas poser plus de difficulté. Ben je viens de supprimer mon chiffrage car je me suis aperçu qu'il fallait insérer un 0 à gauche des nombres de un chiffre. Donc un test supplémentaire à faire. Citer
E-Bahut Denis CAMUS Posté(e) le 25 décembre 2022 E-Bahut Signaler Posté(e) le 25 décembre 2022 Le chiffrage : #=============================================================== # # Chiffrage algo e-Bahut # #=============================================================== import re alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" #============================== Entrées ======================== #texte = "JOYEUX Noel" texte = "deux fois trois egal six" #texte = input("quel est le texte à chiffrer :") texte = re.sub('[^A-Z]|\\s','',texte.upper()) # Supprime ce qui n'est pas alphabétique. L = len(texte) #============================ calculs ============================== message = "" for i in range(0, L): lettre = texte[i] indice = 26-alphabet.find(lettre) code = str((indice + 1) * 2) if len(code) == 1: code = "0"+code message += code indice = alphabet.find(lettre) print (message) Citer
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.