Wprowadzenie
Rozważ sekwencję liczb całkowitych i jedną z jej podsekwencji, powiedzmy A = [4 2 2 4 4 6 5] i B = [2 4 5] . Chcemy usunąć elementy B z A w kolejności, i jest na to kilka sposobów:
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
We wszystkich przypadkach pozostała sekwencja jest taka sama, [4 2 4 6] . Jeśli tak się stanie, to mówimy, że B jest wyjątkowo wyjmowany z A .
Zadanie
Twoje wejścia są dwie sekwencje liczb całkowitych nieujemnych, A i B , gdzie B gwarantowanych ma być podciąg A . Dane wejściowe mogą być równe i mogą być puste. Możesz je zabrać w dowolnej kolejności, w dowolnym rozsądnym formacie.
Twój wynik powinien być prawdziwą wartością, jeśli B można jednoznacznie usunąć z A , a wartością fałszowania, jeśli nie.
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów.
Przypadki testowe
[] [] -> 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
dla drugiego przypadku%
. Myślę też, że główna funkcja byłaby krótsza w sensownej formie.x%_=x
nie działa, ponieważ typy nie pasują, ale_%_=[]
zapisuje bajt.JavaScript (ES6), 141
152 156 159Funkcja rekurencyjna - dość długa
Mniej golfa
Test
źródło
Pyth - 27 bajtów
Na komórce w szkole teraz, więc nie w pełni golfa.
Pakiet testowy
źródło
JavaScript (ES6),
116114113 bajtówZwraca
false
lubtrue
.Sformatowane i skomentowane
Przypadki testowe
Pokaż fragment kodu
źródło
MATL , 27 bajtów
Najdłuższe przypadki testowe kończą się w kompilatorze online.
Wypróbuj online!
źródło
JavaScript (Firefox 30+),
159147 bajtówOto kilka alternatywnych podejść, obie anonimowe funkcje:
Testowy fragment kodu
Pokaż fragment kodu
źródło
Mathematica, 128 bajtów
Nienazwana funkcja pobierająca dwa argumenty listy, przy czym pierwszy to podsekwencja, a drugi pełna sekwencja; wyjścia
True
lubFalse
.Podstawową częścią jest następująca sekwencja, niemodyfikowana pod kątem czytelności:
Tutaj
#
reprezentuje podsekwencję - na przykład{2,4,5}
. PierwszeArray
polecenie tworzy listę ciągów podobnych do{"a1___","a2___","a3___","a4___"}
, a następnieRiffle
d razem z,#
aby uzyskać dziwną listę jak{"a1___",2,"a2___",4,"a3___",5,"a4___"}
; następnie ta lista jest rzutowana na rzeczywiste wyrażenie Mathematica. Na przykład{2,4,5}
częściowa ocena tego kodu podstawowego toktóry dokładnie podaje listę wszystkich możliwych sposobów, aby usunąć podciąg
{2,4,5}
od#2
a resztę listy spokoju.Po wygenerowaniu tej listy po prostu usuwamy duplikaty za pomocą
Union
i testujemy, czy długość wynikowego wyniku wynosi 1, czy nie.źródło