Étant donné une chaîne, composée d'un préfixe puis de "illion", convertissez ce nombre en forme standard.
Par exemple:
"million" -> 10^6
"trillion" -> 10^12
"quattuordecillion" -> 10^45
Le programme doit être capable de gérer les entrées allant jusqu'à Centillion, soit 10 ^ 303. Une liste de noms et de leurs valeurs de formulaire standard peut être trouvée ici - notez que cela donne des valeurs pour chaque incrément de 10 ^ 3 jusqu'à 10 ^ 63, mais les donne ensuite par incréments de 10 ^ 30, cependant le modèle est assez simple.
Le programme doit gérer les 100 cas (même ceux qui ne sont pas explicitement indiqués par le site Web fourni) - en voici quelques exemples:
"sexvigintillion" -> 10^81
"unnonagintillion" -> 10^276
"octotrigintillion" -> 10^117
L'entrée peut être donnée via STDIN, argument de fonction ou codée en dur sous forme de chaîne.
C'est le code-golf, donc le code le plus court gagne!
la source
Réponses:
Python 2 (
384368365348347 octets)(La
if
ligne est en retrait avec un seul onglet et le reste avec des espaces simples.)Ici
c('million') == 10**6
doit être un cas spécial car'novem'
se termine également'm'
.Exemples:
Merci à Falko de l'avoir obscurci jusqu'à 350 octets.
Pour m'entraîner, j'ai essayé de réécrire cela en une ligne avec des lambdas. C'est
404398390384380379 octets:la source
return'10^'+str(3*k)
ne serait que de 4 octets de plus.a
etb
dans la fonction comme arguments de mot clé.1000**k
est plus court que10**(3*k)
. L'incrémentationk
de3*d[p]
est également également courte.if'm'==s:k=6;d=[]
au lieu d'une deuxième longuereturn
instruction.JS (ES6),
292270Comprend uniquement les nombres écrits dans la liste donnée. Le PO n'est pas clair sur les autres.
Exemple:
la source
split(0)
parmatch(/[A-Z][a-z]*/g)
pour utiliser des expressions rationnelles correspondant à chaque chaîne.=>
.C, 235
Gère les 100 cas. Le programme utilise stdin et stdout.
Qui a besoin d'expressions régulières pour le fractionnement des caisses de chameaux?
Exemple
la source
*U<95 ?
) et toutes les nouvelles lignes?Clojure,
381377 octetsExemple:
(c "Septuagintillion") ;; 1.0E213
la source
Haskell, 204 octets (+9 pour la chaîne formatée)
Dans GHCi:
Le remplacement
10^(
par"10^"++(show.
ajoute encore 9 octets:Dans GHCi:
Edit: je devais corriger pour
"quinquagintillion"
ce qui contient"qua"
.la source