Ce défi est le prix de NinjaBearMonkey pour avoir gagné mes troupeaux de bots! contester avec la soumission Black Knight . Félicitations NinjaBearMonkey!
Le défi ici est assez simple, mais a une variété d’approches possibles. L'histoire raconte que dans le monde des illusions isométriques , il existe 6 types de créatures différentes:
- Ninjas, abrégés
N
- Ours, abrégé
B
- Singes, abrégés
M
- NinjaBears, abrégé
NB
- BearMonkeys, en abrégé
BM
- NinjaBearMonkeys, en abrégé
NBM
( NinjaBearMonkey est, bien sûr, le dernier type le plus puissant.)
Votre tâche consiste à recenser ces créatures lorsqu'elles sont alignées côte à côte, c'est-à-dire lorsque leurs chaînes d'abréviations sont concaténées. La mise en garde est que vous devez vous assurer de ne pas trop compter les parties de certaines créatures en tant que créatures distinctes qui se ressemblent. Les créatures s'aligneront de telle sorte que:
- Toute instance de
NBM
1 NinjaBearMonkey et 0 autre créature. - Toute instance
NB
non suivie deM
est 1 NinjaBear et 0 autre créature. - Toute instance
BM
non précédée deN
est 1 BearMonkey et 0 autre créature. - Sinon, les instances de
N
,B
etM
sont respectivement des ninjas, des ours et des singes isolés.
La ligne se lit de gauche à droite.
Ainsi, par exemple, dans la lignée des créatures NBMMBNBNBM
, il y a 0 Ninja, 1 Ours, 1 Singe, 1 NinjaBear, 0 BearMonkeys et 2 NinjaBearMonkeys.
Défi
Ecrivez un programme ou une fonction qui prend une chaîne de caractères N
, B
et M
, et imprime ou retourne le nombre de chacun des 6 types de créatures qu'il contient.
La sortie devrait avoir la forme
#N #B #M #NB #BM #NBM
avec le nombre de créatures respectives remplaçant chaque #
signe. Tous les 6 comptes doivent être affichés, séparés par des espaces, même lorsqu'ils sont 0. Cependant, ils peuvent être dans n'importe quel ordre (par exemple, ils #NBM
pourraient venir en premier).
Également:
- La chaîne d'entrée ne contiendra que les caractères
N
,B
etM
. - Si la chaîne vide est entrée, tous les comptages sont 0.
- La sortie peut éventuellement contenir un seul espace de début et / ou de fin et / ou une nouvelle ligne de fin.
La soumission la plus courte en octets l'emporte.
Exemples
Entrée: NB
sortie:0N 0B 0M 1NB 0BM 0NBM
Entrée: NBM
sortie:0N 0B 0M 0NB 0BM 1NBM
Entrée: NBMMBNBNBM
(exemple d'en haut)
Sortie:0N 1B 1M 1NB 0BM 2NBM
Entrée: MBNNBBMNBM
sortie:1N 1B 1M 1NB 1BM 1NBM
Entrée: NNNMNBMMBMMBMMMNBMNNMNNNBNNNBNBBNBNMMNBBNBMMBBMBMBBBNNMBMBMMNNNNNMMBMMBM
sortie:17N 6B 14M 5NB 8BM 3NBM
NBMNBM
serait une entrée parfaitement valide. En le lisant de gauche à droite, il y a clairement 2 NinjaBearMonkeys.