Du kämpfst gegen ein ausgedehntes Netzwerk feindlicher Spione . Sie wissen, dass jeder Spion mindestens eine (manchmal mehrere) gefälschte Identität hat , die er gerne benutzt. Sie möchten wirklich wissen, mit wie vielen Spionen Sie tatsächlich zu tun haben.
Glücklicherweise Ihre Abwehrmittel ihre Arbeit tun und kann manchmal herausfinden , wenn zwei gefälschte Identitäten tatsächlich von demselben Feind Spion kontrolliert werden.
Das heißt:
- Ihre Agenten wissen jedoch nicht immer, wann zwei gefälschte Identitäten denselben Spion hinter sich haben
- Wenn Ihnen ein Agent sagt, dass zwei gefälschte Identitäten von demselben Spion kontrolliert werden, vertrauen Sie darauf, dass sie richtig sind.
Agentennachrichten
Agenten senden Ihnen kryptische Nachrichten, in denen Sie erfahren, welche Identitäten denselben Spion haben. Ein Beispiel:
Sie müssen mit 2 Agenten und 5 gefälschten Identitäten umgehen.
Der erste Agent sendet Ihnen eine Nachricht:
Red Red Blue Orange Orange
Das heißt, sie denken, es gibt 3 Spione:
- Der erste (rot) steuert die Identitäten 1 und 2
- der zweite (blau) kontrolliert Identität 3
- die dritte (orange) steuert die identitäten 4 und 5
Der zweite Agent sendet Ihnen eine Nachricht:
cat dog dog bird fly
Das heißt, sie denken, es gibt 4 Spione:
- Die erste (Katze) kontrolliert Identität 1
- der zweite (Hund) kontrolliert die Identitäten 2 und 3
- der dritte (Vogel) kontrolliert Identität 4
- die vierte (Fliege) kontrolliert die Identität 5
Kompilieren der Informationen, die wir sehen:
Identities: id1 id2 id3 id4 id5
Agent 1: |--same-spy--| |--same-spy--|
Agent 2: |--same-spy--|
Conclusion: |-----same-spy------||--same-spy--|
Das heißt, es gibt höchstens 2 Spione .
Anmerkungen
Identitäten, die demselben Spion gehören, müssen nicht aufeinanderfolgend sein, dh eine Nachricht wie:
dog cat dog
ist gültig.
Das gleiche Wort könnte auch von zwei verschiedenen Agenten verwendet werden - das bedeutet nichts, es ist nur ein Zufall, zB:
Agent 1: Steam Water Ice
Agent 2: Ice Ice Baby
Eis wird von beiden Agenten verwendet - das Eis, das vom Ice
ersten Agenten verwendet wird, hat nichts mit den beiden Vorkommen des Eises zu tun, Ice
das vom zweiten Agenten verwendet wird.
Herausforderung
Stellen Sie alle Informationen Ihrer Agenten zusammen und finden Sie heraus, wie viele feindliche Spione es tatsächlich gibt. (Um genauer zu sein, erhalten Sie die niedrigste Obergrenze, wenn Sie die begrenzten Informationen haben.)
Der kürzeste Code in Bytes gewinnt.
Eingangs- und Ausgangsspezifikation
Die Eingabe ist eine Liste von n Zeilen, die n Nachrichten von Agenten darstellen. Jede Zeile besteht aus k durch Leerzeichen getrennten Token, wobei k für alle Zeilen gleich ist. Token sind alphanumerisch und beliebig lang. Der Fall ist wichtig.
Die Ausgabe sollte eine einzelne Zahl sein, die die Anzahl der unterschiedlichen Spione darstellt, basierend auf den Informationen Ihrer Agenten.
Beispiele
Beispiel 1
Eingang:
Angel Devil Angel Joker Thief Thief
Ra Ra Ras Pu Ti N
say sea c c see cee
Ausgabe:
2
Beispiel 2
Eingang:
Blossom Bubbles Buttercup
Ed Edd Eddy
Ausgabe:
3
Beispiel 3
Eingang:
Botswana Botswana Botswana
Left Middle Right
Ausgabe:
1
Beispiel 4
Eingang:
Black White
White Black
Ausgabe:
2
Beispiel 5
Eingang:
Foo Bar Foo
Foo Bar Bar
Ausgabe:
1
Beispiel 6
Eingang:
A B C D
A A C D
A B C C
A B B D
Ausgabe:
1
Beispiel 7
Eingang:
A B A C
Ausgabe:
3
Beispiel 8
Eingang:
A
B
C
Ausgabe:
1
Beispiel 9
Eingang:
X
Ausgabe:
1