¡Este desafío es el premio de NinjaBearMonkey por ganar mis bloques de bloques de construcción! desafío con la presentación del Caballero Negro . ¡Felicidades NinjaBearMonkey!
El desafío aquí es bastante simple, pero tiene una variedad de enfoques posibles. La historia cuenta que en el mundo de las ilusiones isométricas , hay 6 tipos diferentes de criaturas:
- Ninjas, abreviado
N
- Osos, abreviados
B
- Monos, abreviados
M
- NinjaBears, abreviado
NB
- BearMonkeys, abreviado
BM
- NinjaBearMonkeys, abreviado
NBM
( NinjaBearMonkey es, por supuesto, el último tipo más poderoso).
Su tarea es hacer un censo de estas criaturas cuando están alineadas una al lado de la otra, es decir, cuando sus cadenas de abreviatura están concatenadas. La advertencia es que debes asegurarte de no contar en exceso las partes de algunas criaturas como criaturas separadas que parecen similares. Las criaturas se alinearán de manera que:
- Cualquier instancia de
NBM
es 1 NinjaBearMonkey y 0 otras criaturas. - Cualquier instancia de
NB
no seguidoM
es 1 NinjaBear y 0 otras criaturas. - Cualquier instancia de
BM
no precedidaN
es 1 BearMonkey y 0 otras criaturas. - De lo contrario, las instancias de
N
,B
yM
son Ninjas, Osos y Monos solteros respectivamente.
La línea se lee de izquierda a derecha.
Entonces, por ejemplo, en la línea de criaturas NBMMBNBNBM
, hay 0 Ninjas, 1 Oso, 1 Mono, 1 NinjaBear, 0 BearMonkeys y 2 NinjaBearMonkeys.
Reto
Escriba un programa o función que tome una cadena de caracteres N
,, B
y M
, e imprima o devuelva cuántos de cada uno de los 6 tipos de criaturas están presentes en él.
La salida debe tener la forma
#N #B #M #NB #BM #NBM
con el respectivo conteo de criaturas reemplazando cada #
signo. Se deben mostrar los 6 recuentos, separados por espacios, incluso cuando son 0. Sin embargo, pueden estar en cualquier orden (p. Ej., #NBM
Podrían aparecer primero).
También:
- La cadena de entrada sólo contendrá los caracteres
N
,B
yM
. - Si se ingresa la cadena vacía, todos los recuentos son 0.
- La salida puede contener opcionalmente un único espacio inicial y / o final, y / o una nueva línea final.
La presentación más corta en bytes gana.
Ejemplos
Entrada: NB
Salida:0N 0B 0M 1NB 0BM 0NBM
Entrada: NBM
Salida:0N 0B 0M 0NB 0BM 1NBM
Entrada: NBMMBNBNBM
(ejemplo de arriba)
Salida:0N 1B 1M 1NB 0BM 2NBM
Entrada: MBNNBBMNBM
Salida:1N 1B 1M 1NB 1BM 1NBM
Entrada: NNNMNBMMBMMBMMMNBMNNMNNNBNNNBNBBNBNMMNBBNBMMBBMBMBBBNNMBMBMMNNNNNMMBMMBM
Salida:17N 6B 14M 5NB 8BM 3NBM
NBMNBM
sería una entrada perfectamente válida. Leyendo de izquierda a derecha, claramente hay 2 NinjaBearMonkeys.