Leia o ábaco (Parte 2: Soroban japonês)

Published by persolut in

O soroban japonês é um tipo de ábaco (ferramenta de contagem) usado deslizando contas enfiadas para cima e para baixo pelos fios. O soroban é dividido em uma parte superior (onde cada conta vale 5 unidades) e uma parte inferior (onde as contas valem 1 unidade). Da direita para a esquerda, as unidades aumentam por um fator de 10. Se usarmos "O" para uma conta e "|" para mostrar o fio, podemos representar o soroban da seguinte forma:

OOOOOOO
|||||||  Upper deck
-------  Dividing line
|||||||  Lower deck
OOOOOOO
OOOOOOO
OOOOOOO
OOOOOOO

Para ler o número, contamos o valor correspondente à quantidade de contas que foram movidas em direção à linha divisória. Os valores das partes superior e inferior são somados. No exemplo abaixo, o número é 30651:

OOOO||O
||||OO|
-------
||O|O|O
OOOO|O|
OOOOOOO
OO|OOOO
OOOOOOO

0000550  Upper deck
0030101  Lower deck
  30651  Total

Dada uma lista de strings que representa o soroban, retorne o número exibido.

Exemplos

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"
}) ➞ 8901750

Observações

Para obter mais informações sobre como usar um soroban, consulte a aba Resources.