Introdução
Você deve criar uma função para converter números gregos em números arábicos. A entrada será um numeral grego menor que 1000
e maior que 0
. Este é o inverso do meu desafio anterior .
Algoritmo
- Entrada dividida em letras (por exemplo,
ΡΚΓ
->Ρ
,Κ
,Γ
) - Tome cada letra, e mudança de caráter encontrados na tabela abaixo, para o símbolo carta, (por exemplo,
ΡΚΓ
->Ρ
,Κ
,Γ
->100
,20
,3
). - Adicionar (por exemplo,
ΡΚΓ
->Ρ
,Κ
,Γ
->100
,20
,3
->123
)
Especificações
- Nenhuma conversão interna do sistema numérico
- A entrada será maiúscula como no exemplo.
- A saída deve estar na base 10.
ΡΡΡΡ
nunca vai acontecer. SeráΥ
.
Casos de teste
ΡΚΓ -> 123
Η -> 8
ΨΟΖ -> 777
Ρ -> 100
ΧϜ -> 606
ΡϘ -> 190
ΜΒ -> 42
Ν -> 50
Mesa
Α = 1 = Alpha = 913 UTF-8
Β = 2 = Beta = 914 UTF-8
Γ = 3 = Gamma = 915 UTF-8
Δ = 4 = Delta = 916 UTF-8
Ε = 5 = Epsilon = 917 UTF-8
Ϝ = 6 = DiGamma = 988 UTF-8
Ζ = 7 = Zeta = 918 UTF-8
Η = 8 = Eta = 919 UTF-8
Θ = 9 = Theta = 920 UTF-8
Ι = 10 = Iota = 921 UTF-8
Κ = 20 = Kappa = 922 UTF-8
Λ = 30 = Lambda = 923 UTF-8
Μ = 40 = Mu = 924 UTF-8
Ν = 50 = Nu = 925 UTF-8
Ξ = 60 = Xi = 926 UTF-8
Ο = 70 = Omicron = 927 UTF-8
Π = 80 = Pi = 928 UTF-8
Ϙ = 90 = Koppa = 984 UTF-8
Ρ = 100 = Rho = 929 UTF-8
Σ = 200 = Sigma = 931 UTF-8
Τ = 300 = Tau = 932 UTF-8
Υ = 400 = Upsilon = 933 UTF-8
Φ = 500 = Phi = 934 UTF-8
Χ = 600 = Chi = 935 UTF-8
Ψ = 700 = Psi = 936 UTF-8
Ω = 800 = Omega = 937 UTF-8
Ϡ = 900 = SamPi = 992 UTF-8
code-golf
number
natural-language
conversion
Ninguém está aqui
fonte
fonte
ΡΡΡΡ
? Se sim, qual seria o resultado?180
,42
e50
.Respostas:
Geléia ,
4745 bytesExperimente online! ou verifique todos os casos de teste .
fonte
<newline>Ç€
no final.Ç€
que aplica a função a todos os casos de teste. O primeiro link mostra o programa real, que tem 44 bytes.Python 3, 112
Guardado 4 bytes graças a vaultah.
Booyah, batendo JS!
Com casos de teste:
Faz um loop na string e usa seu índice na lista de caracteres de potenciais para calcular quanto vale.
fonte
JavaScript (ES7), 115 bytes
fonte
Haskell,
116113 bytesExemplo de uso:
map f ["ΡΚΓ","Η","ΨΟΖ","Ρ","ΧϜ","ΡϘ","ΜΒ","Ν"]
->[123,8,777,100,606,190,42,50]
.Pesquise o valor da letra grega em uma lista de pares
(letter, value)
e soma. A lista de valores é criada por(*)<$>[1,10,100]<*>[1..9]
, onde(*)<$>[1,10,100]
cria uma lista de funções[(*1),(*10),(*100)]
(multiplicadas por 1, 10 e 100) que são aplicadas separadamente aos elementos[1..9]
e concatenadas em uma única lista.Edit: 3 bytes com agradecimentos a @xnor.
fonte
(*)<$>[1,10,100]<*>[1..9]
.<*>
no contexto da lista, novamente. Eu nunca penso nisso. Obrigado!Julia,
8270 bytesExperimente online!
fonte
JavaScript (ES6), 116 bytes
Apenas 1 byte a mais que ES7!
fonte
+"e"
faz?9+"e"+2
e, em seguida, o+("9e2")
torna-se 900.Python 3, 188 bytes
Experimente! (Casos de teste incluídos)
fonte
def f(x):r=list(range(1,10));R=[a*10for a in r];return sum(b*(a in x)for a,b in zip("ΑΒΓΔΕϜΖΗΘΙΚΛΜΝΞΟΠϘΡΣΤΥΦΧΨΩϠ",r+R+[a*10for a in R]))
.Retina , 72 bytes
Experimente online.
Explicação
Basicamente - substitua cada símbolo grego pelo número que ele representa e, em seguida, retorne a soma de todos os números resultantes:
Transliterar os
10
dígitos s para o árabe e100
dígitos s para o alfabeto latino (0
-9
=>a
-j
):Anexe "aa" a qualquer
100
dígito s:Acrescente "0" a qualquer
10
dígito s:1
Dígitos do transliterado e alfabeto latino para árabe:Converta todos os números decimais separados por espaço em unários:
Conte o número total de
1
s unários :fonte