Introducción
Debe crear una función para convertir números griegos en números arábigos. La entrada será un número griego menor que 1000
y mayor que 0
. Este es el reverso de mi desafío anterior .
Algoritmo
- De entrada dividida en letras (por ejemplo,
ΡΚΓ
->Ρ
,Κ
,Γ
) - Tome cada letra, y el cambio de carácter encontró en la tabla a continuación, para el símbolo de letra, (por ejemplo,
ΡΚΓ
->Ρ
,Κ
,Γ
->100
,20
,3
). - Añadir (p
ΡΚΓ
->Ρ
,Κ
,Γ
->100
,20
,3
->123
)
Especificaciones
- Sin conversión de sistema numérico incorporado
- La entrada se capitalizará como en el ejemplo.
- La salida debe estar en la base 10.
ΡΡΡΡ
nunca ocurrirá. Lo seráΥ
.
Casos de prueba
ΡΚΓ -> 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
No hay nadie aquí
fuente
fuente
ΡΡΡΡ
? Si es así, ¿cuál sería el resultado?180
,42
y50
.Respuestas:
Gelatina ,
4745 bytesPruébalo en línea! o verificar todos los casos de prueba .
fuente
<newline>Ç€
al final.Ç€
que aplica la función a todos los casos de prueba. El primer enlace muestra el programa real, que tiene una longitud de 44 bytes.Pitón 3, 112
Guardado 4 bytes gracias a vaultah.
Booyah, superando a JS!
Con casos de prueba:
Recorre la cadena y usa su índice en la lista de caracteres potenciales para calcular cuánto vale.
fuente
JavaScript (ES7), 115 bytes
fuente
Haskell,
116113 bytesEjemplo de uso:
map f ["ΡΚΓ","Η","ΨΟΖ","Ρ","ΧϜ","ΡϘ","ΜΒ","Ν"]
->[123,8,777,100,606,190,42,50]
.Busque el valor de la letra griega en una lista de pares
(letter, value)
y suma. La lista de valores está construida por(*)<$>[1,10,100]<*>[1..9]
, donde(*)<$>[1,10,100]
construye una lista de funciones[(*1),(*10),(*100)]
(multiplicar por 1, 10 y 100) que se aplican por separado a los elementos[1..9]
y se concatenan en una sola lista.Editar: 3 bytes con agradecimiento a @xnor.
fuente
(*)<$>[1,10,100]<*>[1..9]
.<*>
en el contexto de la lista, nuevamente. Yo nunca pienso en eso. ¡Gracias!Julia,
8270 bytesPruébalo en línea!
fuente
JavaScript (ES6), 116 bytes
¡Solo 1 byte más que ES7!
fuente
+"e"
?9+"e"+2
y luego se+("9e2")
convierte en 900.Python 3, 188 bytes
¡Pruébalo!(Casos de prueba incluidos)
fuente
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
Pruébalo en línea.
Explicación
Básicamente: reemplace cada símbolo griego con el número que representa, luego devuelva la suma de todos los números resultantes:
Translitere
10
los dígitos s al árabe y100
los dígitos s al alfabeto latino (0
-9
=>a
-j
):Agregue "aa" a
100
los dígitos de s:Agregue "0" a
10
los dígitos de s:Transliterar
1
los dígitos y el alfabeto latino al árabe:Convierta todos los números decimales separados por espacios a unario:
Cuente el número total de
1
s unarios :fuente