Einführung
Betrachten Sie eine Folge von ganzen Zahlen und eine ihrer Untersequenzen: A = [4 2 2 4 4 6 5] und B = [2 4 5] . Wir möchten die Elemente von B nacheinander aus A entfernen. Dazu gibt es verschiedene Möglichkeiten:
A = 4 2 2 4 4 6 5
B = 2 4 5
-> 4 2 4 6
A = 4 2 2 4 4 6 5
B = 2 4 5
-> 4 2 4 6
A = 4 2 2 4 4 6 5
B = 2 4 5
-> 4 2 4 6
A = 4 2 2 4 4 6 5
B = 2 4 5
-> 4 2 4 6
In allen Fällen ist die verbleibende Sequenz dieselbe, [4 2 4 6] . Wenn dies der Fall ist , sagen wir , dass B ist eindeutig entfernbar von A .
Die Aufgabe
Ihre Eingaben sind zwei Folgen nichtnegativer Ganzzahlen, A und B , wobei B garantiert eine Teilfolge von A ist . Die Eingaben können gleich und leer sein. Sie können sie in jeder gewünschten Reihenfolge und in jedem angemessenen Format aufnehmen.
Ihre Ausgabe ist ein wahrer Wert, wenn B eindeutig von A entfernbar ist , und ein falscher Wert, wenn nicht.
Regeln und Wertung
Sie können ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt.
Testfälle
[] [] -> True
[0,3] [] -> True
[1,0,1] [1] -> False
[0,2] [0,2] -> True
[2,2,1,1,2,2,2] [2,1] -> True
[4,2,2,4,4,6,5] [4,5] -> False
[10,5,10,10,5,10] [10,5,10] -> False
[4,2,2,4,4,6,5] [2,4,5] -> True
[1,1,1,0,0,0,1,1,1,0] [1,0,1,1] -> True
[0,1,0,0,0,0,1,1,0,1] [1,0,1,1] -> False
[0,4,0,0,4,1,4,2,2] [0,0,0,1,4] -> True
[0,2,2,25,0,2,2,26,0,0,2] [2,0,0,0,2] -> True
[1,1,1,3,2,1,3,2,2,3,3,2] [1,1,2,3,2] -> False
[0,3,2,0,1,3,2,0,0,0,3,2] [0,1,2,0,3] -> False
[5,7,2,7,7,1,7,7,5,2,7,7,5,2,2,7,5] [2,7,5,7,7,2] -> False
[5,4,0,5,4,5,4,1,0,4,2,1,1,2,4,4,0,2,2,1] [4,0,1,1,2,1] -> False
[0,1,4,0,1,4,0,1,5,1,4,4,2,0,0,1,1,1,2,4] [0,1,0,0,2,0,1,4] -> True
x%_=x
für den zweiten Fall von haben%
. Außerdem denke ich, dass die Hauptfunktion in sinnvoller Form kürzer wäre.x%_=x
nicht, da die Typen nicht übereinstimmen, sondern_%_=[]
ein Byte speichern.JavaScript (ES6), 141
152 156 159Rekursive Funktion - ziemlich lang
Weniger golfen
Prüfung
quelle
Pyth - 27 Bytes
Im Moment auf dem Handy in der Schule, also nicht voll im Golf.
Test Suite
quelle
JavaScript (ES6),
116114113 ByteRückgabe
false
odertrue
.Formatiert und kommentiert
Testfälle
Code-Snippet anzeigen
quelle
MATL , 27 Bytes
Die längsten Testfälle haben im Online-Compiler keine Zeit mehr.
Probieren Sie es online!
quelle
JavaScript (Firefox 30+),
159147 BytesHier sind ein paar alternative Ansätze, beide anonyme Funktionen:
Testschnipsel
Code-Snippet anzeigen
quelle
Mathematica, 128 Bytes
Unbenannte Funktion, die zwei Listenargumente verwendet, wobei das erste die Teilsequenz und das zweite die vollständige Sequenz ist; Ausgänge
True
oderFalse
.Der Kernteil ist die folgende Sequenz, die der Lesbarkeit halber nicht angezeigt wird:
Hier
#
stellt die Teilsequenz dar - zum Beispiel{2,4,5}
. Der ersteArray
Befehl erzeugt eine Liste von Strings wie{"a1___","a2___","a3___","a4___"}
, die dannRiffle
zusammen mit d#
eine seltsame Liste wie ergibt{"a1___",2,"a2___",4,"a3___",5,"a4___"}
; dann wird diese Liste in einen tatsächlichen Mathematica-Ausdruck umgewandelt. Für das Beispiel{2,4,5}
ist eine teilweise Auswertung dieses Kerncodeswas genau gibt eine Liste aller Möglichkeiten , die Teilfolge entfernen
{2,4,5}
aus#2
und den Rest der Liste in Ruhe lassen.Nachdem diese Liste erstellt wurde, entfernen wir einfach Duplikate mit
Union
und testen, ob die Länge der resultierenden Ausgabe 1 ist oder nicht.quelle