Défi
Énoncé
Le programme lit sur l'entrée standard une expression en notation polonaise inverse (RPN) : une suite de tokens séparés par des espaces sur une seule ligne. Chaque token est soit un entier (positif, négatif ou nul), soit l'un des opérateurs +, -, *, /. La division est entière et tronquée vers zéro. Le programme affiche la valeur entière résultante.
L'algorithme utilise une pile : pour chaque token, si c'est un entier, le pousser ; si c'est un opérateur, dépiler les deux derniers opérandes (le premier dépilé est l'opérande droit), appliquer l'opération, et pousser le résultat. La valeur finale est l'unique élément restant sur la pile.
Contraintes
- L'expression est garantie valide (pile jamais vide lors d'un dépilage, un seul élément final).
- Les opérandes sont des entiers compris entre -10 000 et 10 000.
- Le résultat intermédiaire et final tient dans un entier 64 bits signé.
- La division par zéro ne sera pas testée.
- Solution réalisable dans tout langage généraliste avec sa seule bibliothèque standard.
Exemple
Entrée : 3 4 + 2 * 7 -
Sortie : 7
(3+4)=7, 7×2=14, 14-7=7.
Entrée : 5 1 2 + 4 * + 3 -
Sortie : 14
(1+2)=3, 3×4=12, 5+12=17, 17-3=14.