Wyzwanie to jest nagrodą NinjaBearMonkey za wygraną w moje stada robotów Block Building! wyzwanie z poddaniem się Czarnego Rycerza . Gratulacje NinjaBearMonkey!
Wyzwanie tutaj jest dość proste, ale ma wiele możliwych podejść. Historia głosi, że w świecie Isometric Illusions istnieje 6 różnych rodzajów stworzeń:
- Ninja, w skrócie
N
- Niedźwiedzie, w skrócie
B
- Małpy, w skrócie
M
- NinjaBears, w skrócie
NB
- BearMonkeys, w skrócie
BM
- NinjaBearMonkeys, w skrócie
NBM
( NinjaBearMonkey jest oczywiście ostatnim, najpotężniejszym typem.)
Twoim zadaniem jest wykonanie spisu tych stworzeń, gdy są one ustawione obok siebie, tj. Kiedy ich łańcuchy skrótów są połączone. Zastrzeżenie polega na tym, że musisz uważać, aby nie przeliczyć części niektórych stworzeń jako osobnych stworzeń, które wyglądają podobnie. Stworzenia ustawią się tak, że:
- Każde wystąpienie
NBM
to 1 NinjaBearMonkey i 0 innych stworzeń. - Każde wystąpienie, po którym
NB
nie następuje,M
to 1 NinjaBear i 0 innych stworzeń. - Każda instancja, której
BM
nie poprzedza,N
to 1 BearMonkey i 0 innych stworzeń. - W przeciwnym razie przypadki
N
,B
iM
są to pojedyncze Ninjas, niedźwiedzie, małpy i odpowiednio.
Linia jest odczytywana od lewej do prawej.
Na przykład w linii stworzeń NBMMBNBNBM
jest 0 Ninja, 1 Niedźwiedź, 1 Małpa, 1 NinjaBear, 0 BearMonkeys i 2 NinjaBearMonkeys.
Wyzwanie
Napisz program lub funkcję, która pobiera ciąg znaków N
, B
oraz M
, i wypisuje lub zwraca liczbę każdego z 6 typów stworzeń w nim obecnych.
Dane wyjściowe powinny mieć formę
#N #B #M #NB #BM #NBM
z odpowiednią liczbą stworzeń zastępujących każdy #
znak. Wszystkie 6 liczb musi być pokazanych, oddzielonych spacjami, nawet gdy są one równe 0. Jednak mogą być w dowolnej kolejności (np. #NBM
Mogą być pierwsze).
Również:
- Ciąg wejściowy będzie zawierać tylko znaki
N
,B
iM
. - Jeśli wprowadzony zostanie pusty ciąg, wszystkie liczby będą wynosić 0.
- Dane wyjściowe mogą opcjonalnie zawierać pojedyncze początkowe i / lub końcowe spacje i / lub pojedyncze końcowe znaki.
Najkrótsze przesłanie w bajtach wygrywa.
Przykłady
Wejście: NB
Wyjście:0N 0B 0M 1NB 0BM 0NBM
Wejście: NBM
Wyjście:0N 0B 0M 0NB 0BM 1NBM
Dane wejściowe: NBMMBNBNBM
(przykład z góry) Dane
wyjściowe:0N 1B 1M 1NB 0BM 2NBM
Wejście: MBNNBBMNBM
Wyjście:1N 1B 1M 1NB 1BM 1NBM
Wejście: NNNMNBMMBMMBMMMNBMNNMNNNBNNNBNBBNBNMMNBBNBMMBBMBMBBBNNMBMBMMNNNNNMMBMMBM
Wyjście:17N 6B 14M 5NB 8BM 3NBM
NBMNBM
byłoby całkowicie poprawnym wejściem. Czytając go od lewej do prawej, wyraźnie widać 2 NinjaBearMonkeys.