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
NBnão seguido porM1 NinjaBear e 0 outras criaturas. - Qualquer instância
BMnão precedida porNé 1 BearMonkey e 0 outras criaturas. - Caso contrário, as instâncias de
N,BeMsã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 Me 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, #NBMpode vir primeiro).
Além disso:
- A cadeia de entrada irá conter apenas os personagens
N,BeM. - 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
NBMNBMseria uma entrada perfeitamente válida. Lendo da esquerda para a direita, existem claramente 2 NinjaBearMonkeys.