Questa sfida è il premio NinjaBearMonkey per aver vinto il mio Block Building Bot Flocks! sfida con l' invio di Black Knight . Congratulazioni NinjaBearMonkey!
La sfida qui è abbastanza semplice, ma ha una varietà di possibili approcci. La storia racconta che nel mondo di Isometric Illusions , ci sono 6 diversi tipi di creature:
- Ninja, abbreviata
N
- Orsi, abbreviati
B
- Scimmie, abbreviate
M
- NinjaBears, abbreviato
NB
- BearMonkeys, abbreviato
BM
- NinjaBearMonkeys, abbreviato
NBM
( NinjaBearMonkey è, ovviamente, l'ultimo, il tipo più potente.)
Il tuo compito è prendere un censimento di queste creature quando sono allineate fianco a fianco, cioè quando le loro stringhe di abbreviazione sono concatenate. L'avvertenza è che devi assicurarti di non contare in eccesso le parti di alcune creature come creature separate che sembrano simili. Le creature si allineeranno in modo tale che:
- Ogni istanza di
NBM
è 1 NinjaBearMonkey e 0 altre creature. - Qualsiasi istanza di
NB
non seguita daM
è 1 NinjaBear e 0 altre creature. - Qualsiasi istanza
BM
non preceduta daN
è 1 BearMonkey e 0 altre creature. - Altrimenti, le istanze di
N
,B
eM
sono rispettivamente Ninja, Orsi e Scimmie.
La riga viene letta da sinistra a destra.
Quindi, per esempio, nella linea di creature NBMMBNBNBM
ci sono 0 Ninja, 1 Orso, 1 Scimmia, 1 NinjaBear, 0 BearMonkeys e 2 NinjaBearMonkeys.
Sfida
Scrivi un programma o una funzione che accetta una stringa di caratteri N
, B
e M
, e stampa o restituisce il numero di ciascuno dei 6 tipi di creature presenti in esso.
L'output dovrebbe avere il modulo
#N #B #M #NB #BM #NBM
con il rispettivo conteggio delle creature sostituendo ogni #
segno. Tutti e 6 i conteggi devono essere mostrati, separati da spazi, anche quando sono 0. Tuttavia, possono essere in qualsiasi ordine (ad es. #NBM
Potrebbero venire per primi).
Anche:
- La stringa di input conterrà solo i personaggi
N
,B
eM
. - Se viene immessa la stringa vuota, tutti i conteggi sono 0.
- L'output può contenere facoltativamente un singolo spazio iniziale e / o finale e / o una nuova riga finale finale.
Vince l'invio più breve in byte.
Esempi
Ingresso: NB
Uscita:0N 0B 0M 1NB 0BM 0NBM
Ingresso: NBM
Uscita:0N 0B 0M 0NB 0BM 1NBM
Input: NBMMBNBNBM
(esempio dall'alto)
Output:0N 1B 1M 1NB 0BM 2NBM
Ingresso: MBNNBBMNBM
Uscita:1N 1B 1M 1NB 1BM 1NBM
Ingresso: NNNMNBMMBMMBMMMNBMNNMNNNBNNNBNBBNBNMMNBBNBMMBBMBMBBBNNMBMBMMNNNNNMMBMMBM
Uscita:17N 6B 14M 5NB 8BM 3NBM
NBMNBM
sarebbe un input perfettamente valido. Leggendolo da sinistra a destra ci sono chiaramente 2 NinjaBearMonkeys.