OVH Cloud OVH Cloud

Recherche une boucle !

37 réponses
Avatar
garnote
Bonjour le monde,

SEND + MORE = MONEY

Le jeu consiste à remplacer chaque lettre par un nombre entier
(de 0 à 9) de telle sorte qu'aucune lettre n'ait la même valeur.
De plus, on ne doit pas attribuer à la première lettre des
mots la valeur 0. Il faut alors que la somme soit correcte.
Je crois que la solution :
S=9, E=5, N=6, D=7, M=1, O=0, R=8 et Y=2
est unique!
Peut-on obtenir ce résultat avec une macro?

Modeste début :
(1000s + 100e + 10n + d) + (1000m + 100o + 10r + e) =
10000m + 1000o +100n + 10e + y
Mais là, comment « boucler » cette patente-là en tenant compte
des restrictions précédentes ?
Moi je déclare forfait !

Allez, éblouissez-moi :-)))

Serge

10 réponses

1 2 3 4
Avatar
RaMa
Bonjour serge
je te propose ceci
Sub macNb()

For s = 0 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
If (10000 * m) + (1000 * o) + (100 * n) + (10 * e) + y <> 0 _
And s <> e And s <> n And s <> d And s <> m And s <> o And s <> r And s <> y
_
And e <> n And e <> d And e <> m And e <> o And e <> r And e <> y _
And n <> d And n <> m And n <> o And n <> r And n <> y _
And d <> m And d <> o And d <> r And d <> y _
And m <> o And m <> r And m <> y _
And o <> r And o <> y Then
If m = 1 Then 'si on pose que m est le premier chiffre de l'une des 2 sommes
s+m et s+m+1
If ((1000 * s) + (100 * e) + (10 * n) + d) + ((1000 * m) + (100 * o) + (10 *
r) + e) = _
(10000 * m) + (1000 * o) + (100 * n) + (10 * e) + y Then
MsgBox s & e & n & d & Chr(10) & m & o & r & e & Chr(10) & m & o & n & e & y
Stop
Else
End If
End If
End If
Next
Next
Next
Next
Next
Next
Next
Next
End Sub

Salutations

RaMa

"garnote" a écrit dans le message de
news:pcasc.5289$
Bonjour le monde,

SEND + MORE = MONEY

Le jeu consiste à remplacer chaque lettre par un nombre entier
(de 0 à 9) de telle sorte qu'aucune lettre n'ait la même valeur.
De plus, on ne doit pas attribuer à la première lettre des
mots la valeur 0. Il faut alors que la somme soit correcte.
Je crois que la solution :
S=9, E=5, N=6, D=7, M=1, O=0, R=8 et Y=2
est unique!
Peut-on obtenir ce résultat avec une macro?

Modeste début :
(1000s + 100e + 10n + d) + (1000m + 100o + 10r + e) > 10000m + 1000o +100n + 10e + y
Mais là, comment « boucler » cette patente-là en tenant compte
des restrictions précédentes ?
Moi je déclare forfait !

Allez, éblouissez-moi :-)))

Serge







Avatar
docm
Bonjour garnote.

Voici une facon simple, naturelle et rapide.

Sub Depart_Send_More()
Dim bc
Dim j0, j1, j2, j3, j4, j5, j6, j7
Dim mot0, mot1, mot2, mot3, mot4, mot5, mot6, mot7

bc = "0123456789"

For j0 = 1 To Len(bc)
mot0 = Mid(bc, j0, 1)
For j1 = 1 To Len(bc)
If j1 <> j0 Then
mot1 = Mid(bc, j1, 1)
For j2 = 1 To Len(bc)
If j2 <> j0 And j2 <> j1 Then
mot2 = Mid(bc, j2, 1)
For j3 = 1 To Len(bc)
If j3 <> j0 And j3 <> j1 And j3 <> j2 Then
mot3 = Mid(bc, j3, 1)
For j4 = 1 To Len(bc)
If j4 <> j0 And j4 <> j1 And j4 <> j2 And j4 <> j3 Then
mot4 = Mid(bc, j4, 1)
For j5 = 1 To Len(bc)
If j5 <> j0 And j5 <> j1 And j5 <> j2 And j5 <> j3 And j5 <> j4
Then
mot5 = Mid(bc, j5, 1)
For j6 = 1 To Len(bc)
If j6 <> j0 And j6 <> j1 And j6 <> j2 And j6 <> j3 And j6 <> j4
And j6 <> j5 Then
mot6 = Mid(bc, j6, 1)
For j7 = 1 To Len(bc)
If j7 <> j0 And j7 <> j1 And j7 <> j2 And j7 <> j3 And j7 <>
j4 And j7 <> j5 And j7 <> j6 Then

mot7 = mot0 & mot1 & mot2 & mot3 & mot4 & mot5 & mot6 &
Mid(bc, j7, 1)
Dim result
result = VerifierCeNot(mot7)

End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
Next
Debug.Print "Terminé"

End Sub

Function VerifierCeNot(bc)
Static Solution
Dim b, c, n
Dim x

If (1000 * Mid(bc, 1, 1) + 100 * Mid(bc, 2, 1) + 10 * Mid(bc, 3, 1) +
Mid(bc, 4, 1)) + (1000 * Mid(bc, 5, 1) + 100 * Mid(bc, 6, 1) + 10 * Mid(bc,
7, 1) + Mid(bc, 2, 1)) = 10000 * Mid(bc, 5, 1) + 1000 * Mid(bc, 6, 1) + 100
* Mid(bc, 3, 1) + 10 * Mid(bc, 2, 1) + Mid(bc, 8, 1) Then

Solution = Solution + 1
Debug.Print "Solution"; Solution; "- ";
Debug.Print Mid(bc, 1, 1); Mid(bc, 2, 1); Mid(bc, 3, 1); Mid(bc, 4, 1); " +
"; Mid(bc, 5, 1); Mid(bc, 6, 1); Mid(bc, 7, 1); Mid(bc, 2, 1); " = ";
Mid(bc, 5, 1); Mid(bc, 6, 1); Mid(bc, 3, 1); Mid(bc, 2, 1) + Mid(bc, 8, 1)

End If

End Function

Amicalement.

"garnote" wrote in message
news:pcasc.5289$
Bonjour le monde,

SEND + MORE = MONEY

Le jeu consiste à remplacer chaque lettre par un nombre entier
(de 0 à 9) de telle sorte qu'aucune lettre n'ait la même valeur.
De plus, on ne doit pas attribuer à la première lettre des
mots la valeur 0. Il faut alors que la somme soit correcte.
Je crois que la solution :
S=9, E=5, N=6, D=7, M=1, O=0, R=8 et Y=2
est unique!
Peut-on obtenir ce résultat avec une macro?

Modeste début :
(1000s + 100e + 10n + d) + (1000m + 100o + 10r + e) > 10000m + 1000o +100n + 10e + y
Mais là, comment « boucler » cette patente-là en tenant compte
des restrictions précédentes ?
Moi je déclare forfait !

Allez, éblouissez-moi :-)))

Serge







Avatar
RaMa
Bonjour docm
Pour m=0
il manque 6 solutions!!
3718+0457175
3827+0458285
6418+0724142
6854+0728582
7536+0815351
7645+0816461
Salutations
RaMa

"docm" a écrit dans le message de
news:%
Bonjour garnote.

Voici une facon simple, naturelle et rapide.

Sub Depart_Send_More()
Dim bc
Dim j0, j1, j2, j3, j4, j5, j6, j7
Dim mot0, mot1, mot2, mot3, mot4, mot5, mot6, mot7

bc = "0123456789"

For j0 = 1 To Len(bc)
mot0 = Mid(bc, j0, 1)
For j1 = 1 To Len(bc)
If j1 <> j0 Then
mot1 = Mid(bc, j1, 1)
For j2 = 1 To Len(bc)
If j2 <> j0 And j2 <> j1 Then
mot2 = Mid(bc, j2, 1)
For j3 = 1 To Len(bc)
If j3 <> j0 And j3 <> j1 And j3 <> j2 Then
mot3 = Mid(bc, j3, 1)
For j4 = 1 To Len(bc)
If j4 <> j0 And j4 <> j1 And j4 <> j2 And j4 <> j3 Then
mot4 = Mid(bc, j4, 1)
For j5 = 1 To Len(bc)
If j5 <> j0 And j5 <> j1 And j5 <> j2 And j5 <> j3 And j5 <> j4
Then
mot5 = Mid(bc, j5, 1)
For j6 = 1 To Len(bc)
If j6 <> j0 And j6 <> j1 And j6 <> j2 And j6 <> j3 And j6 <>
j4

And j6 <> j5 Then
mot6 = Mid(bc, j6, 1)
For j7 = 1 To Len(bc)
If j7 <> j0 And j7 <> j1 And j7 <> j2 And j7 <> j3 And j7 <>
j4 And j7 <> j5 And j7 <> j6 Then

mot7 = mot0 & mot1 & mot2 & mot3 & mot4 & mot5 & mot6 &
Mid(bc, j7, 1)
Dim result
result = VerifierCeNot(mot7)

End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
Next
Debug.Print "Terminé"

End Sub

Function VerifierCeNot(bc)
Static Solution
Dim b, c, n
Dim x

If (1000 * Mid(bc, 1, 1) + 100 * Mid(bc, 2, 1) + 10 * Mid(bc, 3, 1) +
Mid(bc, 4, 1)) + (1000 * Mid(bc, 5, 1) + 100 * Mid(bc, 6, 1) + 10 *
Mid(bc,

7, 1) + Mid(bc, 2, 1)) = 10000 * Mid(bc, 5, 1) + 1000 * Mid(bc, 6, 1) +
100

* Mid(bc, 3, 1) + 10 * Mid(bc, 2, 1) + Mid(bc, 8, 1) Then

Solution = Solution + 1
Debug.Print "Solution"; Solution; "- ";
Debug.Print Mid(bc, 1, 1); Mid(bc, 2, 1); Mid(bc, 3, 1); Mid(bc, 4, 1); "
+

"; Mid(bc, 5, 1); Mid(bc, 6, 1); Mid(bc, 7, 1); Mid(bc, 2, 1); " = ";
Mid(bc, 5, 1); Mid(bc, 6, 1); Mid(bc, 3, 1); Mid(bc, 2, 1) + Mid(bc, 8, 1)

End If

End Function

Amicalement.

"garnote" wrote in message
news:pcasc.5289$
Bonjour le monde,

SEND + MORE = MONEY

Le jeu consiste à remplacer chaque lettre par un nombre entier
(de 0 à 9) de telle sorte qu'aucune lettre n'ait la même valeur.
De plus, on ne doit pas attribuer à la première lettre des
mots la valeur 0. Il faut alors que la somme soit correcte.
Je crois que la solution :
S=9, E=5, N=6, D=7, M=1, O=0, R=8 et Y=2
est unique!
Peut-on obtenir ce résultat avec une macro?

Modeste début :
(1000s + 100e + 10n + d) + (1000m + 100o + 10r + e) > > 10000m + 1000o +100n + 10e + y
Mais là, comment « boucler » cette patente-là en tenant compte
des restrictions précédentes ?
Moi je déclare forfait !

Allez, éblouissez-moi :-)))

Serge











Avatar
Daniel.M
Allo,

Bonjour docm
Pour m=0
il manque 6 solutions!!


D'après l'énoncé du problème, s et m ne peuvent pas égaler 0.

De plus, on ne doit pas attribuer à la première lettre des
mots la valeur 0.


Salutations,

Daniel M.

Avatar
garnote
"RaMa" a écrit dans le message de news:
eqtE#
Bonjour serge
je te propose ceci
Sub macNb()

For s = 0 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
If (10000 * m) + (1000 * o) + (100 * n) + (10 * e) + y <> 0 _
And s <> e And s <> n And s <> d And s <> m And s <> o And s <> r And s <>
y

_
And e <> n And e <> d And e <> m And e <> o And e <> r And e <> y _
And n <> d And n <> m And n <> o And n <> r And n <> y _
And d <> m And d <> o And d <> r And d <> y _
And m <> o And m <> r And m <> y _
And o <> r And o <> y Then
If m = 1 Then 'si on pose que m est le premier chiffre de l'une des 2
sommes

s+m et s+m+1
If ((1000 * s) + (100 * e) + (10 * n) + d) + ((1000 * m) + (100 * o) + (10
*

r) + e) = _
(10000 * m) + (1000 * o) + (100 * n) + (10 * e) + y Then
MsgBox s & e & n & d & Chr(10) & m & o & r & e & Chr(10) & m & o & n & e &
y

Stop
Else
End If
End If
End If
Next
Next
Next
Next
Next
Next
Next
Next
End Sub

Salutations

RaMa

"garnote" a écrit dans le message de
news:pcasc.5289$
Bonjour le monde,

SEND + MORE = MONEY

Le jeu consiste à remplacer chaque lettre par un nombre entier
(de 0 à 9) de telle sorte qu'aucune lettre n'ait la même valeur.
De plus, on ne doit pas attribuer à la première lettre des
mots la valeur 0. Il faut alors que la somme soit correcte.
Je crois que la solution :
S=9, E=5, N=6, D=7, M=1, O=0, R=8 et Y=2
est unique!
Peut-on obtenir ce résultat avec une macro?

Modeste début :
(1000s + 100e + 10n + d) + (1000m + 100o + 10r + e) > > 10000m + 1000o +100n + 10e + y
Mais là, comment « boucler » cette patente-là en tenant compte
des restrictions précédentes ?
Moi je déclare forfait !

Allez, éblouissez-moi :-)))

Serge











Avatar
garnote
Attendu cinq minutes et pas encore de réponse de
vos macros ! Combien de temps de par che vous :-)
pour obtenir la réponse ?
Ai trouvé ça :

http://clip.dia.fi.upm.es/~vocal/public_info/seminar_notes/node13.html

smm :-
X = [S,E,N,D,M,O,R,Y],
X :: 0 .. 9,
M #> 0,
S #> 0,
1000*S + 100*E + 10*N + D +
1000*M + 100*O + 10*R + E # 10000*M + 1000*O + 100*N + 10*E + Y,
alldistinct(X),
labeling(X),
write(X).


Serge



"docm" a écrit dans le message de news:
#
Bonjour garnote.

Voici une facon simple, naturelle et rapide.

Sub Depart_Send_More()
Dim bc
Dim j0, j1, j2, j3, j4, j5, j6, j7
Dim mot0, mot1, mot2, mot3, mot4, mot5, mot6, mot7

bc = "0123456789"

For j0 = 1 To Len(bc)
mot0 = Mid(bc, j0, 1)
For j1 = 1 To Len(bc)
If j1 <> j0 Then
mot1 = Mid(bc, j1, 1)
For j2 = 1 To Len(bc)
If j2 <> j0 And j2 <> j1 Then
mot2 = Mid(bc, j2, 1)
For j3 = 1 To Len(bc)
If j3 <> j0 And j3 <> j1 And j3 <> j2 Then
mot3 = Mid(bc, j3, 1)
For j4 = 1 To Len(bc)
If j4 <> j0 And j4 <> j1 And j4 <> j2 And j4 <> j3 Then
mot4 = Mid(bc, j4, 1)
For j5 = 1 To Len(bc)
If j5 <> j0 And j5 <> j1 And j5 <> j2 And j5 <> j3 And j5 <> j4
Then
mot5 = Mid(bc, j5, 1)
For j6 = 1 To Len(bc)
If j6 <> j0 And j6 <> j1 And j6 <> j2 And j6 <> j3 And j6 <>
j4

And j6 <> j5 Then
mot6 = Mid(bc, j6, 1)
For j7 = 1 To Len(bc)
If j7 <> j0 And j7 <> j1 And j7 <> j2 And j7 <> j3 And j7 <>
j4 And j7 <> j5 And j7 <> j6 Then

mot7 = mot0 & mot1 & mot2 & mot3 & mot4 & mot5 & mot6 &
Mid(bc, j7, 1)
Dim result
result = VerifierCeNot(mot7)

End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
Next
Debug.Print "Terminé"

End Sub

Function VerifierCeNot(bc)
Static Solution
Dim b, c, n
Dim x

If (1000 * Mid(bc, 1, 1) + 100 * Mid(bc, 2, 1) + 10 * Mid(bc, 3, 1) +
Mid(bc, 4, 1)) + (1000 * Mid(bc, 5, 1) + 100 * Mid(bc, 6, 1) + 10 *
Mid(bc,

7, 1) + Mid(bc, 2, 1)) = 10000 * Mid(bc, 5, 1) + 1000 * Mid(bc, 6, 1) +
100

* Mid(bc, 3, 1) + 10 * Mid(bc, 2, 1) + Mid(bc, 8, 1) Then

Solution = Solution + 1
Debug.Print "Solution"; Solution; "- ";
Debug.Print Mid(bc, 1, 1); Mid(bc, 2, 1); Mid(bc, 3, 1); Mid(bc, 4, 1); "
+

"; Mid(bc, 5, 1); Mid(bc, 6, 1); Mid(bc, 7, 1); Mid(bc, 2, 1); " = ";
Mid(bc, 5, 1); Mid(bc, 6, 1); Mid(bc, 3, 1); Mid(bc, 2, 1) + Mid(bc, 8, 1)

End If

End Function

Amicalement.

"garnote" wrote in message
news:pcasc.5289$
Bonjour le monde,

SEND + MORE = MONEY

Le jeu consiste à remplacer chaque lettre par un nombre entier
(de 0 à 9) de telle sorte qu'aucune lettre n'ait la même valeur.
De plus, on ne doit pas attribuer à la première lettre des
mots la valeur 0. Il faut alors que la somme soit correcte.
Je crois que la solution :
S=9, E=5, N=6, D=7, M=1, O=0, R=8 et Y=2
est unique!
Peut-on obtenir ce résultat avec une macro?

Modeste début :
(1000s + 100e + 10n + d) + (1000m + 100o + 10r + e) > > 10000m + 1000o +100n + 10e + y
Mais là, comment « boucler » cette patente-là en tenant compte
des restrictions précédentes ?
Moi je déclare forfait !

Allez, éblouissez-moi :-)))

Serge











Avatar
Daniel.M
Salut Sergio,

Attendu cinq minutes et pas encore de réponse de
vos macros ! Combien de temps de par che vous :-)
pour obtenir la réponse ?


Voilà bien une illustration de l'importance des déclarations de variables!

Cette variation 'typée' du code de 'docm' roule en moins de 20 secondes chez moi
(vieille bécane à 450 MHz).

Salutations,

Daniel M.


Declare Function GetTickCount Lib "kernel32" () As Long

Sub Depart_Send_More3()
Dim k As Integer
Dim j0%, j1%, j2%, j3%, j4%, j5%, j6%, j7%
Dim bcA() As Integer, motA() As Long
Dim t1&, t2&

t1 = GetTickCount ' chrono initial

k = 10
ReDim bcA(1 To k)
For j0 = 1 To k
bcA(j0) = k - 1
Next j0

ReDim motA(1 To k)


For j0 = 1 To k
motA(1) = bcA(j0)
For j1 = 1 To k
If j1 <> j0 Then
motA(2) = bcA(j1)
For j2 = 1 To k
If j2 <> j0 And j2 <> j1 Then
motA(3) = bcA(j2)
For j3 = 1 To k
If j3 <> j0 And j3 <> j1 And j3 <> j2 Then
motA(4) = bcA(j3)
For j4 = 1 To k
If j4 <> j0 And j4 <> j1 And j4 <> j2 And j4 <> j3 Then
motA(5) = bcA(j4)
For j5 = 1 To k
If j5 <> j0 And j5 <> j1 And j5 <> j2 And j5 <> j3 And j5 <> j4 Then
motA(6) = bcA(j5)
For j6 = 1 To k
If j6 <> j0 And j6 <> j1 And j6 <> j2 And j6 <> j3 And j6 <> j4 _
And j6 <> j5 Then
motA(7) = bcA(j6)
For j7 = 1 To k
If j7 <> j0 And j7 <> j1 And j7 <> j2 And j7 <> j3 And j7 <> j4 _
And j7 <> j5 And j7 <> j6 Then
motA(8) = bcA(j7)

VerifierCeNot3 motA

End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
Next

t2 = GetTickCount

Debug.Print "Terminé en "; t2 - t1 & " millièmes de secs."

End Sub


Sub VerifierCeNot3(Fact() As Long)
Static Solution

If Fact(1) <> 0 And Fact(5) <> 0 Then
If 1000 * Fact(1) + 100 * Fact(2) + 10 * Fact(3) + _
Fact(4) + 1000 * Fact(5) + 100 * Fact(6) + _
10 * Fact(7) + Fact(2) = _
10000 * Fact(5) + 1000 * Fact(6) + _
100 * Fact(3) + 10 * Fact(2) + Fact(8) Then
Solution = Solution + 1
Debug.Print "Solution"; Solution; "- ";
Debug.Print Fact(1); Fact(2); Fact(3); _
Fact(4); " + "; Fact(5); Fact(6); _
Fact(7); Fact(2); " = "; Fact(5); _
Fact(6); Fact(3); Fact(2); Fact(8)
End If
End If
End Sub

Avatar
RaMa
bonjour serge

8'24"
La méthode est frustre mais explore toutes les combinaisons (111111110)!!
RaMa

"garnote" a écrit dans le message de
news:Bbpsc.16473$
Attendu cinq minutes et pas encore de réponse de
vos macros ! Combien de temps de par che vous :-)
pour obtenir la réponse ?
Ai trouvé ça :

http://clip.dia.fi.upm.es/~vocal/public_info/seminar_notes/node13.html

smm :-
X = [S,E,N,D,M,O,R,Y],
X :: 0 .. 9,
M #> 0,
S #> 0,
1000*S + 100*E + 10*N + D +
1000*M + 100*O + 10*R + E # > 10000*M + 1000*O + 100*N + 10*E + Y,
alldistinct(X),
labeling(X),
write(X).


Serge



"docm" a écrit dans le message de news:
#
Bonjour garnote.

Voici une facon simple, naturelle et rapide.

Sub Depart_Send_More()
Dim bc
Dim j0, j1, j2, j3, j4, j5, j6, j7
Dim mot0, mot1, mot2, mot3, mot4, mot5, mot6, mot7

bc = "0123456789"

For j0 = 1 To Len(bc)
mot0 = Mid(bc, j0, 1)
For j1 = 1 To Len(bc)
If j1 <> j0 Then
mot1 = Mid(bc, j1, 1)
For j2 = 1 To Len(bc)
If j2 <> j0 And j2 <> j1 Then
mot2 = Mid(bc, j2, 1)
For j3 = 1 To Len(bc)
If j3 <> j0 And j3 <> j1 And j3 <> j2 Then
mot3 = Mid(bc, j3, 1)
For j4 = 1 To Len(bc)
If j4 <> j0 And j4 <> j1 And j4 <> j2 And j4 <> j3 Then
mot4 = Mid(bc, j4, 1)
For j5 = 1 To Len(bc)
If j5 <> j0 And j5 <> j1 And j5 <> j2 And j5 <> j3 And j5 <>
j4


Then
mot5 = Mid(bc, j5, 1)
For j6 = 1 To Len(bc)
If j6 <> j0 And j6 <> j1 And j6 <> j2 And j6 <> j3 And j6 <>
j4

And j6 <> j5 Then
mot6 = Mid(bc, j6, 1)
For j7 = 1 To Len(bc)
If j7 <> j0 And j7 <> j1 And j7 <> j2 And j7 <> j3 And j7
<>


j4 And j7 <> j5 And j7 <> j6 Then

mot7 = mot0 & mot1 & mot2 & mot3 & mot4 & mot5 & mot6 &
Mid(bc, j7, 1)
Dim result
result = VerifierCeNot(mot7)

End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
Next
Debug.Print "Terminé"

End Sub

Function VerifierCeNot(bc)
Static Solution
Dim b, c, n
Dim x

If (1000 * Mid(bc, 1, 1) + 100 * Mid(bc, 2, 1) + 10 * Mid(bc, 3, 1) +
Mid(bc, 4, 1)) + (1000 * Mid(bc, 5, 1) + 100 * Mid(bc, 6, 1) + 10 *
Mid(bc,

7, 1) + Mid(bc, 2, 1)) = 10000 * Mid(bc, 5, 1) + 1000 * Mid(bc, 6, 1) +
100

* Mid(bc, 3, 1) + 10 * Mid(bc, 2, 1) + Mid(bc, 8, 1) Then

Solution = Solution + 1
Debug.Print "Solution"; Solution; "- ";
Debug.Print Mid(bc, 1, 1); Mid(bc, 2, 1); Mid(bc, 3, 1); Mid(bc, 4, 1);
"


+
"; Mid(bc, 5, 1); Mid(bc, 6, 1); Mid(bc, 7, 1); Mid(bc, 2, 1); " = ";
Mid(bc, 5, 1); Mid(bc, 6, 1); Mid(bc, 3, 1); Mid(bc, 2, 1) + Mid(bc, 8,
1)



End If

End Function

Amicalement.

"garnote" wrote in message
news:pcasc.5289$
Bonjour le monde,

SEND + MORE = MONEY

Le jeu consiste à remplacer chaque lettre par un nombre entier
(de 0 à 9) de telle sorte qu'aucune lettre n'ait la même valeur.
De plus, on ne doit pas attribuer à la première lettre des
mots la valeur 0. Il faut alors que la somme soit correcte.
Je crois que la solution :
S=9, E=5, N=6, D=7, M=1, O=0, R=8 et Y=2
est unique!
Peut-on obtenir ce résultat avec une macro?

Modeste début :
(1000s + 100e + 10n + d) + (1000m + 100o + 10r + e) > > > 10000m + 1000o +100n + 10e + y
Mais là, comment « boucler » cette patente-là en tenant compte
des restrictions précédentes ?
Moi je déclare forfait !

Allez, éblouissez-moi :-)))

Serge















Avatar
Daniel.M
Salut Sergio,

Il y avait un bug.

For j0 = 1 To k
bcA(j0) = k - 1
Next j0

doit être remplacé par :

For j0 = 1 To k
bcA(j0) = j0 - 1
Next j0


Sinon le tableau bcA() sera peuplé de 9 alors qu'on veut de 0 à 9.

Salutations,

Daniel M.
Avatar
garnote
Salut Daniel,

Yep! c'est parfait ainsi. 21 petites secondes.

Serge



"Daniel.M" a écrit dans le message de
news: edR$
Salut Sergio,

Il y avait un bug.

For j0 = 1 To k
bcA(j0) = k - 1
Next j0

doit être remplacé par :

For j0 = 1 To k
bcA(j0) = j0 - 1
Next j0


Sinon le tableau bcA() sera peuplé de 9 alors qu'on veut de 0 à 9.

Salutations,

Daniel M.




1 2 3 4