Ihr Ziel ist es, den festgelegten Schnittpunkt zweier Ganzzahllisten zu berechnen. Der Schnittpunkt ist definiert als die eindeutige ungeordnete Gruppe von Ganzzahlen, die mindestens einmal in beiden Eingabelisten gefunden wird.
Eingang
Die Eingabe kann in jedem gewünschten Format (Funktionsparameter, stdio usw.) erfolgen und besteht aus zwei Listen von Ganzzahlen. Sie nehmen viele nichts anderes an, als dass sie eine nicht negative Anzahl von Ganzzahlen enthalten (dh sie sind unsortiert, enthalten möglicherweise Duplikate, haben unterschiedliche Längen und sind möglicherweise sogar leer). Es wird davon ausgegangen, dass jede Ganzzahl in den muttersprachlichen Ganzzahltyp Ihrer Sprache passt, mehr als eine Dezimalstelle lang sein kann und vorzeichenbehaftet ist.
Beispieleingabe:
1 4 3 9 8 8 3 7 0
10 1 4 4 8 -1
Ausgabe
Die Ausgabe ist eine beliebige listähnliche Anzahl von Ganzzahlen, die den festgelegten Schnittpunkt der beiden Listen in einem beliebigen Format (Rückgabewert, Standard usw.) darstellen. Es ist nicht erforderlich, dass die Ausgabe sortiert wird. Sie können jedoch auch eine Implementierung bereitstellen, die zufällig immer sortiert ist. Die Ausgabe muss eine gültige ungeordnete Menge bilden (z. B. darf sie keine doppelten Werte enthalten).
Beispieltestfälle (beachten Sie, dass die Reihenfolge der Ausgabe nicht wichtig ist):
Die ersten beiden Zeilen sind die Eingabelisten, die dritte Zeile ist die Ausgabe. (empty)
bezeichnet die leere Liste.
(empty)
(empty)
(empty)
1000
(empty)
(empty)
3 1 2 4 3 1 1 1 1 3
3 1 -1 0 8 3 3 1
1 3
1 2 1
3 3 4
(empty)
Wertung
Das ist Code Golf; Die kürzeste Antwort in Bytes gewinnt.
Standardschlupflöcher sind verboten. Sie können alle integrierten Funktionen verwenden, die nicht für satzähnliche Vorgänge ausgelegt sind.
Verbotene integrierte Funktionen:
- Festlegen der Erstellung / Entfernung von Duplikaten
- Differenz / Schnittpunkt / Vereinigung einstellen
- Verallgemeinerte Mitgliedschaftstests (z. B. alles, was dem
in
Schlüsselwort in Python ähnelt ,indexOf
ähnliche Funktionen usw.). Beachten Sie, dass die Verwendung von "foreach item in list" -Konstrukten zulässig ist (vorausgesetzt, sie verstoßen nicht gegen eine der anderen Einschränkungen), obwohl Python dasin
Schlüsselwort zum Erstellen dieses Konstrukts erneut verwendet. - Diese verbotenen integrierten Funktionen sind "viral". Wenn also eine größere integrierte Funktion eine dieser Unterfunktionen enthält, ist dies ebenfalls verboten (z. B. Filtern nach Mitgliedschaft in einer Liste).
Alle integrierten Funktionen, die nicht in der obigen Liste enthalten sind, sind zulässig (z. B. Sortieren, Testen der Ganzzahlgleichheit, Anhängen / Entfernen der Liste nach Index, Filtern usw.).
Nehmen Sie zum Beispiel die folgenden zwei Beispielausschnitte (Python-ähnlichen Code):
# prohibited: filters by testing if each value in tmpList is a member of listA
result = tmpList.filter(listA)
# ok: filtering by a lambda which manually iterates over listA and checks for equality
def my_in_func(val, slist):
for a in slist:
if(val == a):
return True
return False
result = filter(lambda v: my_in_func(val, listA), tmpList)
Sie können diese Set-ähnlichen Funktionen gerne selbst implementieren und sie werden für Ihre Punktzahl angerechnet.
Ihre Lösung sollte in angemessener Zeit abgeschlossen sein (z. B. weniger als eine Minute auf der Hardware, die Sie für zwei Listen mit einer Länge von jeweils 1000 haben).