S E N D
+ M O R E
= M O N E Y
Chaque lettre représente un seul chiffre et le chiffre le plus significatif est différent de zéro. Idéalement, le casse-tête doit avoir une solution unique.
La solution est O=0, M=1, Y=2, E=5, N=6, D=7, R=8, and S=9.
Re : [VBA] Générateur/SOLVER de cryptarythme/alphamétique comment faire?
Bonjour jeanpierre, VIARD
VIARD: moi aussi je suis sous Excel 2000
et avec les modifs de Gael , je n'obtiens aucun résultat au bout de 3 secondes
Je teste avec cette macro:
Code:
Sub alphameticSEND_MORE() '---> 'erreur ou pas ?
'adpaté de QBasic
'source:http://www.angelfire.com/ak/magic119/sawwasseen.html
'SEND+MORE=MONEY
Application.ScreenUpdating = False
Dim t(0 To 9) As Integer
For s = 1 To 9
For e = 0 To 9
For n = 0 To 9
For d = 0 To 9
For m = 0 To 9
For o = 0 To 9
For r = 0 To 9
For y = 0 To 9
send = 1000 * s + 100 * e + 10 * n + d
more = 1000 * m + 100 * o + 10 * r + e
money = 10000 * m + 1000 * o + 100 * n + 10 * e + y
total = send + more
If money <> total Then GoTo lab7
For x = 0 To 9
t(x) = 0
Next x
'les modifs de Gael
If t(s) = 1 Then GoTo lab7 Else t(s) = 1
If t(e) = 1 Then GoTo lab7 Else t(e) = 1
If t(n) = 1 Then GoTo lab7 Else t(n) = 1
If t(d) = 1 Then GoTo lab7 Else t(d) = 1
If t(m) = 1 Then GoTo lab7 Else t(m) = 1
If t(o) = 1 Then GoTo lab7 Else t(o) = 1
If t(r) = 1 Then GoTo lab7 Else t(r) = 1
If t(y) = 1 Then GoTo lab7 Else t(y) = 1
MsgBox " SEND = " & vbTab & Space(2) & send & Chr(13) _
& "+MORE = " & vbTab & "+" & more & Chr(13) _
& vbTab & String(4, "_") & Chr(13) _
& "MONEY = " & Space(2) & money
lab7:
Next y
Next r
Next o
Next m
Next d
Next n
Next e
Next s
Application.ScreenUpdating = True
End Sub
Re : [VBA] Générateur/SOLVER de cryptarythme/alphamétique comment faire?
Re,
Ci-joint le fichier de Staple avec la macro "alphameticSEND_MORE" modifiée pour réduire le temps de réponse:
la table T(0 to 9) est gérée pendant l'exécution pour éviter de chercher des solutions dont on sait à l'avance qu'elles ne seront pas valables, le chiffre étant déjà utilisé.
Pour info, avec la macro précédente, j'obtenais la solution en 1min45sec et maintenant en 3 secondes.
Edit: la variable m va de 1 à 9 et non pas de 0 à 9 pour éviter les solutions triviales ou la première lettre de MORE et de MONEY =0