Prélude:
Je voulais m'entraîner à faire des cas de test, donc je vais les essayer sur quelque chose de facile.
Défi:
Prenez n'importe quelle entrée (chaîne) donnée (dans la plage ASCII visible) et déduisez s'il s'agit d'un nombre et sortez quelque chose qui pourrait être utilisé pour évaluer.
Règles:
- Un nombre ne contiendra que les caractères
-0123456789,.
- Les réponses ne sont nécessaires que pour reconnaître les nombres compris entre -1000000000 et 1000000000 (exclusif), mais peuvent reconnaître des nombres arbitrairement grands.
- Vous pouvez écrire un programme complet ou une fonction.
- S'il s'agit d'un nombre, renvoyez tout ce qui pourrait être utilisé pour le discerner et documenter la sortie dans la description (ex.
My program outputs T if a number, F if not.
). - L'entrée sera n'importe quelle quantité de caractères dans la plage ASCII ou vide (si vide retournez tout ce que vous sortiriez sinon un nombre).
- Les nombres peuvent inclure un point décimal (ex.
3.14
). S'ils le font, ils doivent avoir au moins un chiffre avant la virgule décimale et au moins un après. - Les nombres peuvent avoir des zéros en tête ou en fin (ex.
000001.00000
). - La partie entière d'un nombre pourrait être divisée pour la lisibilité en morceaux de trois chiffres avec des virgules (ex.
1,000.23456
). Dans ce cas , ils doivent être divisés tous les trois chiffres de droite à gauche (ex.1,234,567
,10,000.202
,123,234.00
,0,123.293
). - Les nombres négatifs sont indiqués par un début
-
(ex.-1.23
). Un début+
pour indiquer un nombre positif n'est pas autorisé et devrait entraîner une sortie falsifiée. - Les exceptions ne sont PAS comptées comme des sorties valides et discernables (sauf lorsqu'elles peuvent transmettre des sorties au flux de sortie standard (par exemple,
Exception on line N [...]
peuvent être mises en sortie pour un nombre / n ° de nombre si la chaîne est placée dans le flux de sortie standard).
Cas de test:
(en supposant la My program outputs T if a number, F if not.
version)
123 -> T [on integer]
-123 -> T [negative numbers need to be handled]
0 -> T [on zero]
123.456 -> T [on floating point]
123,456.789 -> T [on evenly divided by 3 digits with comas]
123456789 -> T [thousand separators are not required]
0000001.00000 -> T [on leading/trailing zeros]
00.00 -> T [on zero and leading/trailing zeros]
999999999.9999999999999999999999999999999999999999999999999999 -> T [on close to the maximum value]
-999999999.9999999999999999999999999999999999999999999999999999 -> T [on close to the minimum value]
-> F [on empty]
lolz -> F [on non-number value]
n4melyh4xor -> F [on non-number with digits]
1.2 -> F [on space-padded]
9.3 1.3 -> F [on anyhow separated multiple numbers]
1e5 -> F [no scientific notation]
50cl05e.buty3ts0f4r -> F [on input with letters obscuring the number]
1,2,3,4.5678 -> F [on badly readability-divided number]
1,234.5,678 -> F [on readability-divided floating point part]
.234 -> F [on no leading zero]
+1 -> F [no leading + sign]
1.234.3 -> F [only one decimal point]
12345,678 -> F [on separator stopping mid-way]
code-golf , le moins de caractères est le gagnant.
-123
va, qu'en est-il de +456
-> bon ou mauvais. Ou est- +
il exclu de la fête?