Aqui está um simples rubi de arte ASCII :
___
/\_/\
/_/ \_\
\ \_/ /
\/_\/
Como joalheiro da ASCII Gemstone Corporation, seu trabalho é inspecionar os rubis recém-adquiridos e deixar uma nota sobre os defeitos encontrados.
Felizmente, apenas 12 tipos de defeitos são possíveis, e seu fornecedor garante que nenhum rubi terá mais de um defeito.
Os defeitos 12 correspondem à substituição de um dos 12 interiores _
, /
ou \
caracteres do rubi com um carácter de espaço ( ). O perímetro externo de um rubi nunca apresenta defeitos.
Os defeitos são numerados de acordo com o caráter interno que possui um espaço em seu lugar:
Portanto, um rubi com defeito 1 se parece com isso:
___
/\_/\
/_/ _\
\ \_/ /
\/_\/
Um rubi com defeito 11 se parece com isso:
___
/\_/\
/_/ \_\
\ \_/ /
\ _\/
É a mesma idéia para todos os outros defeitos.
Desafio
Escreva um programa ou função que utilize a sequência de um único rubi potencialmente defeituoso. O número do defeito deve ser impresso ou devolvido. O número do defeito é 0 se não houver defeito.
Obtenha entrada de um arquivo de texto, stdin ou um argumento de função de sequência. Retorne o número do defeito ou imprima-o no stdout.
Você pode supor que o ruby tenha uma nova linha à direita. Você não pode presumir que ele tenha espaços à direita ou novas linhas iniciais.
O código mais curto em bytes vence. ( Contador de bytes acessíveis ) .
Casos de teste
Os 13 tipos exatos de rubis, seguidos diretamente pelo resultado esperado:
___
/\_/\
/_/ \_\
\ \_/ /
\/_\/
0
___
/\_/\
/_/ _\
\ \_/ /
\/_\/
1
___
/\ /\
/_/ \_\
\ \_/ /
\/_\/
2
___
/\_/\
/_ \_\
\ \_/ /
\/_\/
3
___
/\_/\
/_/ \_\
\ _/ /
\/_\/
4
___
/\_/\
/_/ \_\
\ \ / /
\/_\/
5
___
/\_/\
/_/ \_\
\ \_ /
\/_\/
6
___
/\_/\
/_/ \ \
\ \_/ /
\/_\/
7
___
/\_ \
/_/ \_\
\ \_/ /
\/_\/
8
___
/ _/\
/_/ \_\
\ \_/ /
\/_\/
9
___
/\_/\
/ / \_\
\ \_/ /
\/_\/
10
___
/\_/\
/_/ \_\
\ \_/ /
\ _\/
11
___
/\_/\
/_/ \_\
\ \_/ /
\/_ /
12