El soroban japonés es un tipo de ábaco (herramienta para contar) que se utiliza deslizando cuentas ensartadas hacia arriba y hacia abajo por alambres. El soroban está dividido en una plataforma superior (donde cada cuenta vale 5 unidades) y una plataforma inferior (donde las cuentas valen 1 unidad). De derecha a izquierda, las unidades aumentan por un factor de 10. Si usamos "O" para una cuenta y "|" para mostrar el alambre, podemos representar el soroban de la siguiente manera:
OOOOOOO
||||||| Upper deck
------- Dividing line
||||||| Lower deck
OOOOOOO
OOOOOOO
OOOOOOO
OOOOOOOPara leer el número, contamos el valor correspondiente a las cuentas que se han movido hacia la línea divisoria. Los valores de las plataformas superior e inferior se suman. En el ejemplo siguiente, el número es 30651:
OOOO||O
||||OO|
-------
||O|O|O
OOOO|O|
OOOOOOO
OO|OOOO
OOOOOOO
0000550 Upper deck
0030101 Lower deck
30651 TotalDada una lista de cadenas que representa el soroban, devuelve el número que se muestra.
Soroban(new string[] {
"OOOO||O",
"||||OO|",
"-------",
"|||O|OO",
"OOOOOOO",
"OOO|OOO",
"OOOOO|O",
"OOOOOO|"
}) ➞ 2584
Soroban(new string[] {
"||OO||O",
"OO||OO|",
"-------",
"OO|OO||",
"OOO|OOO",
"OOOO|OO",
"|OOOOOO",
"O|OOOOO"
}) ➞ 8901750Para obtener más información sobre cómo usar un soroban, consulta la pestaña Resources.