Supposons que le clavier devant nous soit abรฎmรฉ : aucune des touches permettant de saisir des chiffres ne fonctionne ! Comment faire pour reprรฉsenter les entiers ? Pour les additionner et les multiplier ? Les soustraire ?
On choisit tout d'abord de reprรฉsenter zรฉro par un tuple vide ZERO = tuple().
On fournit de plus la fonction successeur qui prend la reprรฉsentation d'un entier en argument et renvoie celle de son successeur :
๐ Script Python
defsuccesseur(n):return(n,)
Remarque
L'appel successeur(ZERO) renvoie ((),) qui reprรฉsente donc le nombre UN.
On ne demande pas de travailler avec ces notations sous forme de tuples.
Avec ces deux รฉlรฉments, valeur de dรฉpart ZERO et fonction successeur, il est possible de reprรฉsenter tous les entiers.
La fonction successeur et les ยซ entiers ยป dรฉfinis ci-dessus sont directement accessibles dans le corps du programme. Il est inutile de les retaper.
Vous devez complรฉter trois fonctions addition, multiplication et soustraction ci-dessous prenant chacune en arguments les reprรฉsentations a et b de deux entiers et renvoyant respectivement leur somme (a plus b), leur produit (a fois b) et leur diffรฉrence (a moins b).
Les valeurs de a et bne devront pas รชtre modifiรฉes lors du traitement.
Les calculs sur les entiers ne seront effectuรฉs qu'ร l'aide de la fonction successeur et des fonctions codรฉes prรฉcรฉdemment.
Attention
Si b est plus grand que a, la diffรฉrence ยซ a moins b ยป n'est pas possible dans l'ensemble des entiers positifs.
Dans ce cas, la fonction soustraction lรจvera une erreur liรฉe ร une valeur incorrecte. Pour ce faire, on utilisera l'instruction raiseValueError.
Additionner a et b c'est dรฉterminer le b-iรจme successeur de a. On pourra utiliser une variable temporaire initialisรฉe ร ZERO (et pas au nombre 0 !) afin de ยซ compter ยป le nombre de successeurs calculรฉs.
Aide pour multiplication
Multiplier a et b c'est additionner b fois a ร lui-mรชme.
Aide pour soustraction
Soustraire b ร a c'est dรฉterminer l'ยซ entier ยป qu'il faut ajouter ร b pour obtenir a. On pourra donc calculer les diffรฉrents successeurs de b jusqu'ร obtenir a. Il faudra prendre soin de garder trace du ยซ nombre ยป de successeurs calculรฉs.
Un test astucieux sur la valeur de ce ยซ nombre ยป permet de repรฉrer les soustractions impossibles.
# Tests
(insensible ร la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)