pengantar
Pertimbangkan urutan bilangan bulat dan salah satu dari urutannya, katakanlah A = [4 2 2 4 4 6 5] dan B = [2 4 5] . Kami ingin menghapus elemen B dari A secara berurutan, dan ada beberapa cara untuk melakukan itu:
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
Dalam semua kasus, urutan yang tersisa adalah sama, [4 2 4 6] . Jika ini terjadi, kita mengatakan bahwa B adalah unik dilepas dari A .
Tugas
Input Anda adalah dua urutan bilangan bulat non-negatif, A dan B , di mana B dijamin menjadi subsequence dari A . Input mungkin sama, dan mungkin kosong. Anda dapat mengambilnya dalam urutan apa pun yang Anda inginkan, dalam format apa pun yang masuk akal.
Output Anda akan menjadi nilai kebenaran jika B dilepas secara unik dari A , dan nilai palsu jika tidak.
Aturan dan penilaian
Anda dapat menulis program atau fungsi lengkap. Hitungan byte terendah menang.
Uji kasus
[] [] -> 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
untuk kasus kedua%
. Juga, saya pikir fungsi utama akan lebih pendek dalam bentuk yang tajam.x%_=x
tidak akan berfungsi karena tipe tidak cocok tetapi_%_=[]
menyimpan satu byte.JavaScript (ES6), 141
152 156 159Fungsi rekursif - cukup panjang
Kurang golf
Uji
sumber
Pyth - 27 byte
Di ponsel di sekolah sekarang, jadi tidak sepenuhnya bermain golf.
Test Suite
sumber
JavaScript (ES6),
116114113 bytePengembalian
false
atautrue
.Diformat dan dikomentari
Uji kasus
Tampilkan cuplikan kode
sumber
MATL , 27 byte
Kasus uji terpanjang kehabisan waktu dalam kompiler online
Cobalah online!
sumber
JavaScript (Firefox 30+),
159147 byteBerikut adalah beberapa pendekatan alternatif, keduanya berfungsi anonim:
Cuplikan tes
Tampilkan cuplikan kode
sumber
Mathematica, 128 byte
Fungsi tanpa nama mengambil dua argumen daftar, di mana yang pertama adalah urutan dan yang kedua adalah urutan penuh; output
True
atauFalse
.Bagian inti adalah urutan berikut, tidak disunat untuk dibaca:
Di sini
#
mewakili urutan — misalnya{2,4,5}
,.Array
Perintah pertama membuat daftar string seperti{"a1___","a2___","a3___","a4___"}
, yang kemudianRiffle
d bersama dengan#
untuk menghasilkan daftar aneh seperti{"a1___",2,"a2___",4,"a3___",5,"a4___"}
; maka daftar ini dilemparkan ke dalam ekspresi Mathematica yang sebenarnya. Sebagai contoh{2,4,5}
, evaluasi parsial dari kode inti ini adalahyang secara tepat memberikan daftar semua cara yang mungkin untuk menghapus urutan
{2,4,5}
dari#2
dan meninggalkan sisa daftar sendirian.Setelah daftar ini dibuat, kami cukup menghapus duplikat menggunakan
Union
dan menguji apakah panjang output yang dihasilkan adalah 1 atau tidak.sumber