Stai combattendo una vasta rete di spie nemiche . Sai che ogni spia ha almeno un'identità (a volte multipla) falsa che gli piace usare. Ti piacerebbe davvero sapere quante spie hai effettivamente a che fare.
Fortunatamente, i tuoi agenti di controspionaggio stanno facendo il loro lavoro e talvolta riescono a capire quando due false identità sono effettivamente controllate dalla stessa spia nemica.
Vale a dire:
- Tuttavia, i tuoi agenti non sanno sempre quando due falsi identi hanno la stessa spia dietro di loro
- Se un agente ti dice che due identità false sono controllate dalla stessa spia, ti fidi che hanno ragione.
Messaggi dell'agente
Gli agenti ti inviano messaggi criptici che ti dicono quali identità hanno la stessa spia dietro di loro. Un esempio:
Hai 2 agenti e 5 identità false da affrontare.
Il primo agente ti invia un messaggio:
Red Red Blue Orange Orange
Questo significa che pensano che ci siano 3 spie:
- il primo (rosso) controlla le identità 1 e 2
- il secondo (blu) controlla l'identità 3
- il terzo (arancione) controlla le identità 4 e 5
Il secondo agente ti invia un messaggio:
cat dog dog bird fly
Questo significa che pensano che ci siano 4 spie:
- il primo (cat) controlla l'identità 1
- il secondo (cane) controlla le identità 2 e 3
- il terzo (uccello) controlla l'identità 4
- il quarto (vola) controlla l'identità 5
Compilando le informazioni che vediamo:
Identities: id1 id2 id3 id4 id5
Agent 1: |--same-spy--| |--same-spy--|
Agent 2: |--same-spy--|
Conclusion: |-----same-spy------||--same-spy--|
Ciò significa che ci sono al massimo 2 spie .
Gli appunti
Le identità possedute dalla stessa spia non devono essere consecutive, cioè un messaggio come:
dog cat dog
è valido.
Inoltre, la stessa parola potrebbe essere utilizzata da due agenti diversi: ciò non significa nulla, è solo una coincidenza, ad esempio:
Agent 1: Steam Water Ice
Agent 2: Ice Ice Baby
Il ghiaccio è usato da entrambi gli agenti: quello Iceusato dal primo agente non è correlato alle due occorrenze Iceusate dal secondo agente.
Sfida
Compila le informazioni di tutti i tuoi agenti e scopri quante spie nemiche ci sono davvero. (Per essere più precisi, ottieni il limite superiore più basso, date le informazioni limitate che hai.)
Vince il codice più breve in byte.
Spec. Input e output
L'input è un elenco di n righe, che rappresentano n messaggi degli agenti. Ogni linea è composta da k token separati da spazio, lo stesso k per tutte le linee. I token sono alfanumerici, lunghezza arbitraria. Caso importante.
L'output dovrebbe essere un singolo numero, che rappresenta il numero di spie distinte, in base alle informazioni dei tuoi agenti.
Esempi
Esempio 1
Ingresso:
Angel Devil Angel Joker Thief Thief
Ra Ra Ras Pu Ti N
say sea c c see cee
Produzione:
2
Esempio 2
Ingresso:
Blossom Bubbles Buttercup
Ed Edd Eddy
Produzione:
3
Esempio 3
Ingresso:
Botswana Botswana Botswana
Left Middle Right
Produzione:
1
Esempio 4
Ingresso:
Black White
White Black
Produzione:
2
Esempio 5
Ingresso:
Foo Bar Foo
Foo Bar Bar
Produzione:
1
Esempio 6
Ingresso:
A B C D
A A C D
A B C C
A B B D
Produzione:
1
Esempio 7
Ingresso:
A B A C
Produzione:
3
Esempio 8
Ingresso:
A
B
C
Produzione:
1
Esempio 9
Ingresso:
X
Produzione:
1