Biorąc pod uwagę ciąg znaków, składający się z przedrostka, a następnie „iluzji”, zamień ten numer na standardową.
Na przykład:
"million" -> 10^6
"trillion" -> 10^12
"quattuordecillion" -> 10^45
Program musi być w stanie obsłużyć dane wejściowe dochodzące do Centillion, czyli 10 ^ 303. Listę nazw i ich standardowych wartości formularza można znaleźć tutaj - pamiętaj, że daje to wartości dla każdego przyrostu 10 ^ 3 do 10 ^ 63, ale następnie daje je w przyrostach 10 ^ 30, jednak wzór jest dość prosty.
Program musi obsłużyć wszystkie 100 przypadków (nawet te, które nie zostały wyraźnie podane przez podaną stronę internetową) - oto kilka przykładów:
"sexvigintillion" -> 10^81
"unnonagintillion" -> 10^276
"octotrigintillion" -> 10^117
Dane wejściowe można podać za pomocą STDIN, argumentu funkcji lub na stałe zakodować jako ciąg.
To jest golf golfowy, więc wygrywa najkrótszy kod!
code-golf
math
number
kolmogorov-complexity
James Williams
źródło
źródło
Odpowiedzi:
Python 2 (
384368365348347 bajtów)(
if
Linia jest wcięta za pomocą jednej tabulacji, a pozostałe za pomocą pojedynczych spacji.)To
c('million') == 10**6
musi być szczególny przypadek, ponieważ'novem'
również kończy się na'm'
.Przykłady:
Dzięki Falko za zaciemnienie go do 350 bajtów.
Do ćwiczeń próbowałem przepisać to jako liniówkę przy użyciu lambdas. Ma
404398390384380379 bajtów:źródło
return'10^'+str(3*k)
byłoby tylko 4 bajty więcej.a
ib
do funkcji jako argumenty kluczowe.1000**k
jest krótszy niż10**(3*k)
. Zwiększeniek
o3*d[p]
jest również równie krótkie.if'm'==s:k=6;d=[]
zamiast drugiej długiejreturn
instrukcji.JS (ES6),
292270Rozumie tylko liczby zapisane na podanej liście. OP nie ma jasności co do pozostałych.
Przykład:
źródło
split(0)
go,match(/[A-Z][a-z]*/g)
aby użyć wyrażeń regularnych w celu dopasowania każdego ciągu.=>
.C, 235
Obsługuje wszystkie 100 skrzynek. Program używa stdin i stdout.
Kto potrzebuje wyrażeń regularnych do dzielenia wielbłądów?
Przykład
źródło
*U<95 ?
) i wszystkie nowe znaki?Clojure,
381377 bajtówPrzykład:
(c "Septuagintillion") ;; 1.0E213
źródło
Haskell, 204 bajty (+9 dla sformatowanego ciągu znaków)
W GHCi:
Zastąpienie
10^(
przez"10^"++(show.
dodaje kolejne 9 bajtów:W GHCi:
Edycja: Musiałem poprawić,
"quinquagintillion"
który zawiera"qua"
.źródło