Esse desafio é o prêmio de NinjaBearMonkey por ganhar meus blocos de construção de blocos de blocos! desafio com a finalização do Cavaleiro Negro . Parabéns NinjaBearMonkey!
O desafio aqui é bastante simples, mas tem uma variedade de abordagens possíveis. A história diz que, no mundo das Ilusões Isométricas , existem 6 tipos diferentes de criaturas:
- Ninjas, abreviado
N
- Ursos, abreviados
B
- Macacos, abreviados
M
- NinjaBears, abreviado
NB
- BearMonkeys, abreviado
BM
- NinjaBearMonkeys, abreviado
NBM
( NinjaBearMonkey é, obviamente, o último e mais poderoso tipo.)
Sua tarefa é fazer um censo dessas criaturas quando elas estão alinhadas lado a lado, ou seja, quando suas cadeias de abreviação são concatenadas. A ressalva é que você precisa se certificar de não contar demais as partes de algumas criaturas como criaturas separadas que parecem semelhantes. As criaturas se alinharão de tal forma que:
- Qualquer instância de
NBM
é 1 NinjaBearMonkey e 0 outras criaturas. - Qualquer instância de
NB
não seguido porM
1 NinjaBear e 0 outras criaturas. - Qualquer instância
BM
não precedida porN
é 1 BearMonkey e 0 outras criaturas. - Caso contrário, as instâncias de
N
,B
eM
são Ninjas, Ursos e Macacos únicos, respectivamente.
A linha é lida da esquerda para a direita.
Assim, por exemplo, na linha de criaturas NBMMBNBNBM
, existem 0 Ninjas, 1 Urso, 1 Macaco, 1 NinjaBear, 0 BearMonkeys e 2 NinjaBearMonkeys.
Desafio
Escreva um programa ou função que recebe de uma série de personagens N
, B
, e M
e impressões ou retornos quantos de cada um dos 6 tipos de criaturas estão presentes nele.
A saída deve ter o formato
#N #B #M #NB #BM #NBM
com a respectiva contagem de criaturas substituindo cada #
sinal. Todas as 6 contagens devem ser exibidas, separadas por espaços, mesmo quando são 0. No entanto, elas podem estar em qualquer ordem (por exemplo, #NBM
pode vir primeiro).
Além disso:
- A cadeia de entrada irá conter apenas os personagens
N
,B
eM
. - Se a sequência vazia for inserida, todas as contagens serão 0.
- A saída pode opcionalmente conter um único espaço à esquerda e / ou à direita e / ou uma nova linha à direita.
O menor envio em bytes vence.
Exemplos
Entrada: NB
Saída:0N 0B 0M 1NB 0BM 0NBM
Entrada: NBM
Saída:0N 0B 0M 0NB 0BM 1NBM
Entrada: NBMMBNBNBM
(exemplo acima)
Saída:0N 1B 1M 1NB 0BM 2NBM
Entrada: MBNNBBMNBM
Saída:1N 1B 1M 1NB 1BM 1NBM
Entrada: NNNMNBMMBMMBMMMNBMNNMNNNBNNNBNBBNBNMMNBBNBMMBBMBMBBBNNMBMBMMNNNNNMMBMMBM
Saída:17N 6B 14M 5NB 8BM 3NBM
NBMNBM
seria uma entrada perfeitamente válida. Lendo da esquerda para a direita, existem claramente 2 NinjaBearMonkeys.