En chino, los números se escriben de la siguiente manera:
1 一 2 二 3 三 4 四 5 五 6 六 7 七 8 八 9 九 10 十
Para números superiores a 10, se expresa como el número de decenas y el número de unidades. Si solo hay un diez, no necesita decir explícitamente uno, y si no hay ninguno, no necesita poner nada después:
11 十一
24 二十四
83 八十三
90 九十
Para números superiores a 100, utiliza la misma lógica, pero con el carácter 百. Sin embargo, esta vez, si solo hay cien, aún debe escribirlo, y si no hay decenas, debe decir 零.
100 一百 231 二百三十一 803 八百零三 999 九百九十九
Su tarea es convertir estos números chinos en números arábigos. Dado un número N en chino ( 一(1) <= N <= 九百九十九(999)), conviértalo en un número árabe.
Recuerde, este es el código de golf , por lo que gana el código con el menor número de bytes.

503y380?503 -> 五百三y380 -> 三百八十. Además, dices por decenas esoyou do not need to explicitly say one. ¿Eso significa que no importa si lo hacemos?五百零三como no hay decenas (creo)Respuestas:
JavaScript (ES6), 112 bytes
Los dígitos 一 - 九 se convierten a decimales y se guardan
d, mientras que 十 y 百 multiplican el último dígito por 10 o 100 respectivamente y lo acumulann.零se ignora efectivamente, ya quedes cero cuando se encuentra.fuente
Perl, 110 bytes
Código de 98 bytes + 12 para
-plC -Mutf8.Perl odia a Unicode. Espero que no me haya perdido ninguno de los casos límite, tuve un problema con los números, ¡
二百十pero ya he abordado eso!Uso
fuente
PHP, 225 bytes
fuente
strtrno sea multibyte seguro. Podría ahorrarte 23 bytes. Pero puede usar en0+lugar de00?guardar un byte o puede a) reemplazar conay enaalugar de10y100, b) usar ena+lugar de100?en la expresión regular yc) enalugar de0forsubstr_count(-4).Java 7,
236233229 bytesUngolfed y código de prueba:
Pruébalo aquí
Salida:
fuente
C #,
197210 bytesRecuento de bytes incorrecto anteriormente debido a la codificación ignorada ...
Codificación Big5
Una solución recursiva que rellena la entrada si es 10-19 para un procesamiento más fácil, luego procesa desde la izquierda 2 caracteres a la vez.
Sin golf
fuente
Python 3, 128 bytes
Ahorro de 2 + 3 bytes gracias a Shebang y 2 por reemplazar
(d>9)+(d>10)conmax(d-9,0)Sin golf:
Respuesta inicial
nserá el número final yaes el dígito anterior.fuente
finddevuelve -1 y eso es más pequeño que9esonyano se han tocado.[1,a][a>0]*10 -> 10*a**(a>0)ahorra dos bytes :)[0,d][d<=9] -> d*(d<10)¡también ahorra tres bytes!