Dada uma string, consistindo de um prefixo e, em seguida, "illion", converta esse número no formato padrão.
Por exemplo:
"million" -> 10^6
"trillion" -> 10^12
"quattuordecillion" -> 10^45
O programa precisa ser capaz de lidar com entradas que vão até Centillion, que é 10 ^ 303. Uma lista de nomes e seus valores de forma padrão pode ser encontrada aqui - observe que isso fornece valores para cada incremento de 10 ^ 3 até 10 ^ 63, mas depois os fornece em incrementos de 10 ^ 30, no entanto, o padrão é bastante direto.
O programa precisa lidar com todos os 100 casos (mesmo os que não são explicitamente fornecidos pelo site fornecido) - eis alguns exemplos disso:
"sexvigintillion" -> 10^81
"unnonagintillion" -> 10^276
"octotrigintillion" -> 10^117
A entrada pode ser fornecida via STDIN, argumento de função ou codificado como uma string.
Isso é código-golfe, então o código mais curto vence!
code-golf
math
number
kolmogorov-complexity
James Williams
fonte
fonte
Respostas:
Python 2 (
384368365348347 bytes)(A
if
linha é recuada com uma única guia e o restante com espaços únicos.)Aqui
c('million') == 10**6
tem que haver um caso especial, porque'novem'
também termina'm'
.Exemplos:
Agradecemos a Falko por ofuscá-lo até 350 bytes.
Para a prática, tentei reescrever isso como uma linha usando lambdas. São
404398390384380379 bytes:fonte
return'10^'+str(3*k)
apenas 4 bytes a mais.a
eb
para a função como argumentos de palavra-chave.1000**k
é mais curto que10**(3*k)
. Incrementark
por3*d[p]
também é igualmente curto.if'm'==s:k=6;d=[]
vez de uma segundareturn
declaração longa .JS (ES6),
292270Compreende apenas os números escritos na lista fornecida. O OP não é claro sobre os outros.
Exemplo:
fonte
split(0)
pormatch(/[A-Z][a-z]*/g)
para usar expressões regulares para corresponder a cada sequência.=>
.C, 235
Lida com todos os 100 casos. O programa usa stdin e stdout.
Quem precisa de regexes para separar camelos?
Exemplo
fonte
*U<95 ?
) e todas as novas linhas?Clojure,
381377 bytesExemplo:
(c "Septuagintillion") ;; 1.0E213
fonte
Haskell, 204 bytes (+9 para String formatada)
No GHCi:
Substituir
10^(
por"10^"++(show.
adiciona outros 9 bytes:No GHCi:
Edit: Eu tive que corrigir para
"quinquagintillion"
que contém"qua"
.fonte