Introducción
Debe crear una función para convertir números arábigos en números griegos. La entrada será un número entero menor 1000
y mayor que 0
.
Algoritmo
- El número de rama en dígitos (por ejemplo,
123
->1
,2
,3
) - Tome cada dígito, y el cambio de carácter encontró en la tabla a continuación, para el símbolo de letra o nombre de la letra, (por ejemplo,
123
->1
,2
,3
->ΡΚΓ
oRhoKappaGamma
).
Especificaciones
- Sin conversión de sistema numérico incorporado
- El resultado debe ser capitalizado como en el ejemplo.
- La entrada estará en la base 10.
Casos de prueba
123 -> RhoKappaGamma or ΡΚΓ
8 -> Eta or Η
777 -> PsiOmicronZeta or ΨΟΖ
100 -> Rho or Ρ
606 -> ChiDiGamma or ΧϜ
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
No hay nadie aquí
fuente
fuente
123
ser "PKΓ"700
y803
(con ceros como dígitos).Respuestas:
Gelatina ,
4240 bytesPruébalo en línea! o verificar todos los casos de prueba .
fuente
Pyth,
49484644 bytesPruébalo aquí
Todavía estoy trabajando en acortar la función para generar el alfabeto ... y sí, el generador es más largo que codificar el alfabeto en 4 caracteres, pero no en bytes.
Así es como funciona la función generadora de alfabeto. Tomemos todos los puntos de código y restemos 913 (el valor más pequeño):
Ahora saquemos los que no se ajustan al patrón:
Bien, entonces la estrategia se está formando: genere el rango de 0 a 24 (trataremos con los 17 que faltan más tarde), y luego inserte 75, 71 y 79 en las ubicaciones correctas.
¿Cómo podemos insertar los valores atípicos? Pyth tiene una
.i
función nterleave que toma ex.[1,2,3]
yy[4,5,6]
resultados en[1,4,2,5,3,6]
. Sin embargo, tendremos que agregar algunos marcadores de posición, ya que obviamente los valores atípicos están muy separados. Representemos el marcador de posición con X:Correcto, entonces la matriz de valores atípicos inferiores comienza con cuatro
X
s. ¿Podemos agrupar los valores atípicos para que cada uno sea precedido por cuatroX
sy ver qué queda?Ahora hacemos otra observación clave: dado que 79 viene al final , puede haber cualquier número de
X
s que lo preceden, ¡y cualquier número deX
s que lo sigan también! Esto se debe a que el entrelazado[1,2,3]
y[4,5,6,7,8,9]
da resultado:[1,4,2,5,3,6,7,8,9]
tenga en cuenta que los elementos adicionales en la segunda matriz terminan en el extremo, y dado que se eliminarán de todos modos, podemos permitirlo de manera segura.Eso significa que podemos normalizar esto de modo que cada valor atípico esté precedido por cuatro
X
sy tenga éxito por 6:¡Excelente! Ahora podemos simplemente tomar la matriz
[75, 71, 79]
, insertar cuatro valores de marcador de posición antes de cada elemento y seis después, y luego intercalarlo con el rango0..24
.Pero espera, ¿qué pasó con
17
? Recuerde, la línea superior en todos estos ejemplos ha faltado 17. Simplemente podemos eliminar el 17 después de intercalar; pero esto deja abierta otra posibilidad deliciosamente malvada. Lo has adivinado: el valor de marcador de posición al que nos hemos referidoX
será 17. Esto nos permite eliminar tanto el 17 extraño como todos los valores de marcador de posición de una sola vez.¡Finalmente! Aquí está el código utilizado para implementar esto:
fuente
Javascript (ES6),
120115 bytesEl recuento de bytes está utilizando UTF-8. Tiene 88 caracteres de largo. La entrada es un número.
Prueba
fuente
Python 3, 118 bytes
fuente
i*"_"and
para evitar el espacio. No habría encontrado eso.Retina , 57 bytes
Transliteración simple con rangos de caracteres apropiados y
0
eliminación en cada dígito.Pruébalo en línea. (Se agregó la primera línea para permitir que todos los casos de prueba se ejecuten juntos).
Martin también sugirió este por el mismo puntaje:
fuente
Julia, 138 bytes
Esta es una función que acepta un número entero y devuelve una cadena.
Para cada dígito en la entrada en orden inverso, obtenemos el carácter correspondiente a ese dígito de la cadena apropiada, luego combinamos los caracteres e invertimos el resultado. Para cualquier dígito que sea 0, simplemente usamos la cadena vacía.
fuente
Julia, 84 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 83 caracteres, 110 bytes
fuente
0
s se reemplazan por nada y pensé que lo romperían.Perl 6 , 102 bytes
Pruébalo en línea!
fuente
Rubí, 134 bytes
Búsqueda básica por módulo. Probablemente se pueda optimizar en alguna parte, pero Ruby no convertirá las cadenas en enteros de la forma en que Javascript puede hacerlo, jaja
fuente