Cryptarithmes, solution additions cryptées

0/5 (4 avis)

Vue 12 049 fois - Téléchargée 678 fois

Description

Il s'agit d'un petit devoir de vacances, un programme complet, et non la résolution d'une difficulté de programmation ( niveau débutant): additions cryptées.

L'intérêt de ce programme est qu'il résout les problèmes de cryptarithmie, sans être trop pressé car la méthode utilisée est la force brute (énumération). La définition des cryptarithmes est donnée dans le fichier 'définition.txt' dans le zip. Des énoncés de problèmes sont aussi fournis ( ils présentent aussi des exemples de règles d'écriture ).

La règle d'écriture des énoncés est la suivante:
La ligne contenant le premier mot doit commencer par un espace.
Chaque mot nouveau doit être sur une nouvelle ligne, commençant par un '+'
La ligne de tirets est optionnelle pour la lisibilité.
La ligne de résultat est une nouvelle ligne commençant par '='

Conclusion :


Le programme commence par analyser le nombre de lettres différentes ( pas plus de 26 ); puis il vérifie si la valeur attribuée peut commencer à 0 ou à 1 ( valeur de 'premier').

Ensuite un compteur est attribué à chaque lettre, et l'ensemble des compteurs fonctionne comme les roues d'un compteur kilométrique: quand un compteur à fait un tour, il incrémente le compteur suivant... et ainsi de suite jusqu'a ce que le dernier compteur atteigne 9.

Si le problème admet des centaines de solutions, il est souhaitable d'arrêter avant la fin, d'où la présence d'un test d'arrêt. Pour stopper le programme, il est possible de mettre le test à 0.

Pour vérifier que le programme n'est pas arrété, une petite procédure d'affichage d'étoiles montre le progression en mode texte. Une ligne d'affichage montre le test de codage du dernier compteur ( pour suivre l'avance de l'analyse ). Jusqu à 8 lettres différentes, le traitement est assez rapide; ensuite...

Pour moi, le code est suffisamment commenté. J'ai ajouté beaucoup de variables inutiles, et je n'ai pas utilisé de syntaxe du genre 'With' pour suivre les variables en cas de débuggage, et simplifier la lisiblité. Je pense que le code est assez simple pour être compilé dans de nombreuses versions de DELPHI.

On pourrait rendre l'écriture du code plus élégante, plus compacte, avec plus de contrôles sur les différents types d'erreurs, mais ce n'était pas mon but. Je laisse le soin aux graphistes d'enjoliver l'interface pour en faire un produit fini si le programme présente un intérêt.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_mcoppa Messages postés 40 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 25 juillet 2014
3 janv. 2008 à 16:58
Il y a une solution hyper rapide à cette adresse, mais pas le source :
http://www.fafa.teaser-hosting.com/crypta.php
Bravo quand même pour ta solution.
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
8 sept. 2007 à 16:01
SIX + HUIT = SEPT !
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
7 sept. 2007 à 00:36
J'aime bien l'idée :)

Par contre, comme je le pensais, le programme monopolise les ressources tant qu'il tourne.
En ajoutant un petit "Application.ProcessMessage" dans la boucle principale, ça resoudrait peut être le problème.

Le code est bien écrit aussi, ça joue en ta faveur, je te mets un 8/10.
De mon côté je vais chercher une solution plus rapide (si c'est possible ^^)
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
6 sept. 2007 à 19:57
ROUE + ROUE = VELO
TOI + MOI = ZERO
etc..

cà donne quoi FOXI + CIREC = ?
ou CARIBENSILA + MAURICIO = ?

je sens qu'on va s'amuser un peu..
je mets 6/10.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.