crypta - Résolution de cryptarithme [Visiteur #31100]

SYNOPSIS

crypta [-bBASE] [-reuse] CODE1(+|-)CODE2[(+|-)CODE3[...CODE9]]=CODESOMME
crypta [-bBASE] [-reuse] 'CODE1*CODE2=CODEPRODUIT'

DESCRIPTION

Un cryptarithme (cryptage arithmétique) est une opération écrite avec des mots, chaque mot est composé de lettres (lettres minuscules et majuscules sont considérées différentes) et chaque lettre représente toujours le même chiffre. La lettre initiale d'un mot ne représente jamais le chiffre 0. Si un chiffre est explicitement présent dans le cryptarithme, il ne sera pas utilisé pour une lettre sauf si la case Réutiliser chiffres fixés est cochée. Le but du jeu est de trouver le chiffre associé à chaque lettre pour que l'opération soit exacte dans la base de calcul (écrite en base 10) choisie!

EXEMPLE

Voici un cryptarithme que vous auriez du mal à résoudre à la main:
% crypta CHEVAL+VACHE=OISEAU
La solution unique est: C=4, H=9, E=6, V=1, A=2, L=7, O=5, I=0, S=8, U=3, soit 496127+12496=508623

FORMULAIRE

Vous pouvez résoudre des cryptarithmes via le formulaire suivant:
AdditionsMultiplicationOpération
Au moins deux Codes et la Somme.

Base de calcul:
Réutiliser chiffres fixés

  Code #1
+ Code #2
+ Code #3
+ Code #4
+ Code #5
+ Code #6
+ Code #7
+ Code #8
+ Code #9
= Somme   

Attention: pour une multiplication trop grande, le délai maximal pour la recherche risque d'être dépassé (message du navigateur).

Base de calcul:
Réutiliser chiffres fixés

  Code #1
* Code #2
= Produit  

Tapez une opération avec des opérateurs + et/ou - suivis du signe =
(ex: ENIGME+GOOGLE+EXCEL-EMOI=LIESSE).

Base de calcul:
Réutiliser chiffres fixés

Opération:

ALGORITHME

Par exemple, le cryptarithme ABC+DE=FGH équivaut au système d'équations obtenues par colonnes (de droite à gauche):
C+E=H-10*r1 , r1+B+D=G-10*r2 , r2+A=F
où r1,r2 sont des retenues dont l'intervalle de variations est lié au nombre de lignes. En fixant les retenues, on peut faire varier les valeurs des lettres dans une colonne pour que l'opération soit exacte et passer à la colonne suivante jusqu'à une solution. Si l'opération dans une colonne reste fausse, on revient à la colonne précédente. On change les valeurs des retenues quand on revient à la première colonne de droite. On arrête quand l'intervalle des retenues a été exploré.
Une soustraction change le signe dans l'équation et la borne inférieure de l'intervalle de la retenue.
Une multiplication est remplacée par une série d'additions:
AB*CD=EFG => B*D=G-10*r1 , r1+D*A+C*B=F-10*r2 , r2+C*A=E

AUTEUR

Fabrice JURADO [Juin 1987 (Pascal), Janvier 2001 (C), Novembre 2008]