Konvertieren Sie diese Zahl mit einem String, der aus einem Präfix und dann "illion" besteht, in die Standardform.
Beispielsweise:
"million" -> 10^6
"trillion" -> 10^12
"quattuordecillion" -> 10^45
Das Programm muss in der Lage sein, Eingaben bis zu Centillion (10 ^ 303) zu verarbeiten. Eine Liste mit Namen und ihre Standard - Formularwerte gefunden werden kann hier - beachten Sie, dass diese 63 bis 10 ^ jeder für 10 ^ 3 Zuwachs auf Werte gibt, aber dann gibt sie in 10 ^ 30 Schritten, aber das Muster ist recht unkompliziert.
Das Programm muss alle 100 Fälle behandeln (auch diejenigen, die nicht ausdrücklich auf der bereitgestellten Website angegeben sind) - hier einige Beispiele dafür:
"sexvigintillion" -> 10^81
"unnonagintillion" -> 10^276
"octotrigintillion" -> 10^117
Die Eingabe kann über STDIN, Funktionsargument oder als Zeichenfolge erfolgen.
Das ist Code-Golf, also gewinnt der kürzeste Code!
quelle
Antworten:
Python 2 (
384368365348347 Byte)(Die
if
Zeile wird mit einem einzelnen Tabulator eingerückt, der Rest mit einzelnen Leerzeichen.)Hier
c('million') == 10**6
muss ein Sonderfall sein, denn'novem'
auch in'm'
.Beispiele:
Vielen Dank an Falko für die Verschleierung auf 350 Bytes.
Zum Üben habe ich versucht, dies als Einzeiler mit Lambdas umzuschreiben. Es ist
404398390384380379 Bytes:quelle
return'10^'+str(3*k)
nur 4 Bytes mehr wären.a
als auchb
als Schlüsselwortargumente in die Funktion verschieben.1000**k
ist kürzer als10**(3*k)
. Ebenso kurz ist das Inkrementierenk
um3*d[p]
.if'm'==s:k=6;d=[]
anstelle einer zweiten langenreturn
Anweisung das vorzeitige Beenden vermeiden .JS (ES6),
292270Versteht nur die in der angegebenen Liste angegebenen Zahlen. Das OP ist nicht klar über die anderen.
Beispiel:
quelle
split(0)
mitmatch(/[A-Z][a-z]*/g)
zu verwenden Regexes jede Zeichenfolge übereinstimmen.=>
.C 235
Behandelt alle 100 Fälle. Das Programm benutzt stdin und stdout.
Wer braucht reguläre Ausdrücke für das Aufteilen von Kamelkisten?
Beispiel
quelle
*U<95 ?
) und alle Zeilenumbrüche?Clojure,
381377 BytesBeispiel:
(c "Septuagintillion") ;; 1.0E213
quelle
Haskell, 204 Byte (+9 für formatierten String)
In GHCi:
Durch Ersetzen
10^(
durch werden"10^"++(show.
weitere 9 Bytes hinzugefügt:In GHCi:
Edit: Ich musste korrigieren,
"quinquagintillion"
was enthält"qua"
.quelle