Personnellement j'ai fait un Tree et j'ai utilise de la recursion pour les deux parties.
1ere partie: node::calculate() renvoie child1.calculate() plus/moins/fois/divise par child2.calculate()
2e partie: node::findUnknown(expectedResult)-> Unknown
D'abord je fait un calculate() de chaque child pour savoir qui a une valeur et qui a l'unknown.
Imaginons que child1 a la valeur et node.operation est *, ma fonction retourne findUnknown(expectedResult / child1.val)
Imaginons que child1 a la valeur et node.operation est +, ma fonction retourne findUnknown(expectedResult - child1.val)
Etc.
Je fais findUnknown recursivement a partir du root et ca me donne la bonne reponse.
Excusez l'absence d'accents dans mes commentaires, j'habite en Australie et n'ai pas de clavier francais sous la main.
[^] # Re: Pas de force brute, mais soyons bourrins, oh oui, bourrins !
Posté par Eric P. . En réponse au message Avent du Code, jour 21. Évalué à 1.
Personnellement j'ai fait un Tree et j'ai utilise de la recursion pour les deux parties.
1ere partie: node::calculate() renvoie child1.calculate() plus/moins/fois/divise par child2.calculate()
2e partie: node::findUnknown(expectedResult)-> Unknown
D'abord je fait un calculate() de chaque child pour savoir qui a une valeur et qui a l'unknown.
Imaginons que child1 a la valeur et node.operation est *, ma fonction retourne findUnknown(expectedResult / child1.val)
Imaginons que child1 a la valeur et node.operation est +, ma fonction retourne findUnknown(expectedResult - child1.val)
Etc.
Je fais findUnknown recursivement a partir du root et ca me donne la bonne reponse.
Excusez l'absence d'accents dans mes commentaires, j'habite en Australie et n'ai pas de clavier francais sous la main.