Un nouveau jeu est sorti au casino : « Galton Evolution ». Le jeu s'inspire de la planche de Galton : il s'agit d'une planche posée verticalement sur laquelle on a planté des clous. Lors d'une partie, on laisse tomber une bille vers le clou supérieur. Celle-ci rebondit de clou en clou jusqu'à atteindre le bas de la planche.
Le jeu présente toutefois deux évolutions :
chaque clou possède un nombre quelconque de clous « descendants » situés directement sous lui ;
chaque clou est associé à une valeur. Cette valeur est un nombre entier positif ou nul.
Pendant sa chute, si la bille heurte un clou possédant des descendants, au prochain choc elle heurtera nécessairement l'un de ceux-ci. Si à l'inverse le clou ne possède pas de descendant, la bille roule directement jusqu'au bas de la planche.
Le score d'une partie se calcule en additionnant les valeurs de tous les clous heurtés par la bille.
Un joueur perplexe regarde une planche et se demande quel est le score maximal qu'il est possible d'obtenir. Dans le cas de la planche dessinée ci-dessus, le score maximal vaut 27=12+6+9.
Représentation en machine
On représente les « planches » à l'aide de couples (valeurportéeparleclousupérieur,listedesdescendants). Chacun des descendants contenus dans la liste (s'ils existent) représente lui aussi une « planche ».
Par exemple, dans la figure ci-dessus :
la « planche » dont le clou supérieur a pour valeur 9 n'a pas de descendant. Elle est représentée par (9,[]) ;
la « planche » dont le clou supérieur a pour valeur 3 est représentée par (3,[(8,[]),(10,[])]).
La « planche » de la figure est représentée par le tuple (12,[(6,[(9,[])]),(13,[]),(3,[(8,[]),(10,[])]),]).
Écrire en Python la fonction score_max qui prend en paramètre un tuple planche représentant une planche contenant au moins un clou. Cette fonction renvoie le score maximal qu'il est possible d'obtenir sur cette planche.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)