Diberikan daftar daftar menemukan daftar terpendek yang merupakan sublist yang berdekatan dari satu daftar.
Misalnya kalau kita punya
[[1,2,3],
[1,2,3,4],
[2,4,5,6],
[1,2,4,5,6]]
sublist bersebelahan terpendek akan [3,4]
karena hanya muncul di daftar kedua.
Jika tidak ada sublist berdekatan yang unik (ini membutuhkan setidaknya satu entri duplikat), buat daftar kosong. Berikut ini sebuah contoh
[[1,2,3],
[1,2,3],
[1,2]]
Jika ada beberapa daftar yang bersebelahan dengan ukuran minimal, Anda dapat menampilkan salah satu dari mereka atau daftar yang berisi semuanya. Misalnya jika input tadi
[[1,2,3],[2],[1],[3]]
Anda dapat menampilkan [1,2]
, [2,3]
atau [[1,2],[2,3]]
. Jika Anda memilih untuk melakukan opsi terakhir, Anda dapat menampilkan daftar tunggal untuk kasus-kasus di mana hanya ada satu solusi.
Output dapat muncul dalam daftar yang sama lebih dari sekali selama itu muncul di daftar lain. Sebagai contoh
[[1,2,1,2],[2,1]]
harus mengeluarkan [1,2]
karena [1,2]
merupakan sublist dari daftar pertama tetapi bukan yang kedua, meskipun itu adalah sublist dari daftar pertama dengan dua cara berbeda.
Anda dapat memasukkan daftar daftar yang berisi tipe apa saja asalkan tipe tersebut memiliki lebih dari 100 nilai yang mungkin, yaitu tidak ada Boolean.
Ini adalah kode-golf sehingga jawaban akan dinilai dalam byte dengan lebih sedikit byte lebih baik.
Uji Kasus
[[1,1]] : [1]
[[1],[1]] : []
[[1,1],[1]] : [1,1]
sumber
[[1,1]]
Pyth, 15 byte
Suite uji
Pertama, kami membuat semua substring dari setiap daftar input
.:R)Q
. Kemudian, kami membuat semua pemesanan yang mungkin, dari grup substring tersebut.p
.Sekarang untuk bagian yang sulit:
-M
. Ini melipat-
fungsi di atas setiap daftar pemesanan. Dimulai dengan daftar substring pertama, kemudian menyaring semua penghuni semua daftar lainnya.Kemudian, hasilnya digabungkan, dipesan berdasarkan panjangnya, a
[]
ditambahkan, dan kemudian elemen pertama dari daftar yang dihasilkan diekstraksi denganh
.Ini akan menjadi 4 byte lebih pendek jika saya bisa kesalahan pada tidak ada daftar unik daripada menghasilkan daftar kosong.
sumber
hlDs-M.p.:R
mungkin adalah apa yang dia maksud.Pyth - 20 byte
Test Suite .
sumber
[[1,1]]
.Haskell ,
149128126113 byteCobalah online!
Disimpan 21 byte berkat Wheat Wizard, H.PWiz dan Bruce Forte.
Disimpan dua byte lagi berkat H.PWiz.
Disimpan 13 byte berkat nimi.
EDIT Ini adalah penjelasan asli:
sumber
i=
pada akhir program Anda karena fungsi bebas titik tidak perlu ditugaskan sesuai dengan aturan kami.foldl1(++)
adilconcat
?(length$filter(==x)l)
bisa lebih pendeklength(filter(==x)l)
atau lebih pendek darisum[1|y<-l,y==x]
[]
itu, tetapi>>=id
bahkan lebih pendek;) Juga @jferard: Anda dapat menyejajarkan banyak fungsi (mis.f
,g
Dll.) Karena Anda hanya menggunakannya sekali.Java 8, 251 + 19 = 270 byte
Lambda yang sangat kotor dari, minimal,
List<List>
keList
(terbaik untuk melemparkannya keFunction<List<List<Integer>>, List<Integer>>
meskipun). Ini adalah solusi brute force yang mengubah panjang chunk dari 1 ke ukuran daftar terbesar, dalam setiap kasus iterasi setiap chunk dengan panjang itu di setiap daftar dan memeriksa setiap chunk terhadap setiap chunk dengan ukuran yang sama di setiap daftar lainnya.Takut saya, pemulung.
Lambda yang tidak tersentuh
Cobalah secara Online
Java 8, 289 + 45 = 334 byte
Ini adalah pendekatan yang lebih fungsional menggunakan aliran. Jika ada metode
Stream
untuk mengurangi hanya elemen yang muncul sekali, solusi ini akan mengalahkan yang di atas. Tetapkan untuk jenis yang sama seperti di atas.Lambda yang tidak tersentuh
Cobalah secara Online
sumber
Jelly , 15 byte
Cobalah online!
-3 byte terima kasih kepada Jonathan Allan
sumber
ċ1
digantiS
?[1, 2, 1]
untuk input[[1,2],[1,2,1],[2,1,1]]
sementara[1,1]
lebih pendek.05AB1E , 15 byte
Cobalah online!
sumber
Pyth, 14 byte
Coba di sini.
sumber