Défi
Écrivez une calculatrice qui prend les entrées sous forme verbale (comme on pourrait dire une équation) et les sorties également sous forme verbale (comme on pourrait dire un nombre).
Règles
La calculatrice doit pouvoir:
- additionner, soustraire, multiplier et diviser
- gérer les opérandes entre un million et un million négatifs
- gérer les sorties entre un milliard et un milliard de négatifs
- gérer les points décimaux dans son entrée et les placer correctement dans sa sortie
- gérer la sortie décimale à la centième, arrondir si nécessaire
Toutes les opérations produisant des résultats fractionnaires doivent être arrondies au centième le plus proche (identique au formatage de sortie).
Signaler avec la sortie "E" (pour erreur) quand l'entrée entraînerait l'échec du programme en raison d'un formatage incorrect ou d'une division par 0; Fondamentalement, le programme ne devrait pas planter en cas de mauvaise entrée, car ce serait une calculatrice moche.
La calculatrice est autorisée , mais n'est pas tenue de signaler les erreurs lorsque les opérandes ou les sorties sortent de leurs limites. Ceci est destiné à simplifier le problème, mais si vous n'êtes pas d'accord avec moi, n'hésitez pas à créer une calculatrice capable de gérer correctement de plus grands opérandes et sorties sans signaler d'erreurs.
Sortie "E" dans le cas où un opérande pour une opération dépasse les limites définies pour les opérandes.
Sortie "E" dans le cas où la sortie dépasse les limites décrites pour les sorties
La façon dont le programme gère la sensibilité à la casse et les espaces blancs est laissée au golfeur, tout comme le choix de l'anglais britannique ou américain. 1
Les programmes qui contournent l'implémentation de la calculatrice en utilisant un langage ou une bibliothèque qui a déjà implémenté la fonctionnalité décrite ci-dessus ne seront pas éligibles pour la victoire.
Gagnant
Le programme avec le plus petit nombre de caractères gagne.
Exemples
Entrée: deux plus deux
Sortie: quatre
Entrée: vingt et un virgule cinq moins un virgule cinq
Sortie: vingt
Entrée: un moins deux
Sortie: un négatif
Entrée: cinq fois cinq
Sortie: vingt-cinq
Entrée: vingt-cinq divisé par cinq
Sortie: cinq
Entrée: deux plus deux moins cinq fois cinq divisé par zéro négatif cinq
Sortie: dix
Entrée un million de fois mille
Sortie: un milliard
Entrée: un million de fois mille plus une
Sortie: E
Entrée: deux millions plus un million
Sortie: E
Entrée: un million plus un million plus un million
Sortie: E
two plus two minus five times five divided by negative zero point five
->2 + 2 - 5 * 5 / -0.5
->54
.one million one
l'entrée ouone billion one
à la sortie? De plus, la limite 1e6 ou la limite 1e9 s'applique-t-elle également aux résultats intermédiaires?one hundred divided by three point nought
? (Aussi, pourquoi la sortie de l'exemple finalE
plutôt quethree million
?)Réponses:
Tout d'abord, c'est totalement tricheur et non conforme aux spécifications.
nécessite le
--disable-web-security
drapeau sur chrome, +22Javascript 509 + 22 = 531
Le premier de la spécification est aussi l'exemple de sortie
Les
two plus two minus five times five divided by negative zero point five
sorties d' entréeTout autre cas devrait être traité correctement (maintenant), ce n'est pas encore assez bon, je voulais juste qu'il soit corrigé.
Oh, et si vous allez vraiment le tester, cela peut prendre quelques secondes, car il charge la page Wolfram Alpha complète jusqu'à deux fois.
Eh bien, il y a peut-être beaucoup à améliorer.
la source
Python, 982
Je pense que cela fonctionne comme il se doit selon les spécifications, mais il y a probablement encore quelques bugs. Il peut agir bizarrement pour une entrée> = un milliard ou tout mot inattendu qu'il interprète incorrectement.
Voici une version légèrement plus lisible avec quelques modifications:
la source
Et voilà. Jouer à la version avant de la casser, mais maintenant nous sommes de retour en ligne. Je suis certain qu'il peut être joué davantage. J'y travaillerai plus demain. C'était assez difficile de le faire fonctionner correctement SANS jouer au golf, cependant, et mes yeux sont fatigués de le regarder. Haha
Java - 3220
Avec des sauts de ligne et des tabulations
la source