Diberikan string s
dan array / daftar l
, tentukan apakah s
dapat dibuat dengan bagian dari atau tidak l
.
Misalnya, jika string adalah "Hello, world!"
dan daftar adalah [' world!', 'Hello,']
, maka program / fungsi harus mengembalikan nilai yang benar, karena Anda dapat mengatur daftar untuk membentuk string. Daftar berikut juga akan kembali nilai truthy: ['l', 'He', 'o, wor', 'd!']
. Bayangkan saja 'l'
mengisi di mana ia perlu di string. Jadi ya, Anda dapat mengulangi elemen daftar untuk membentuk string. Jika tidak dapat membentuk string, itu harus mengembalikan nilai falsy. Metode standar IO, berlaku celah standar.
Kasus uji:
Input (In the form of s, l)
Output (1 if possible, 0 if impossible)
"Hello, world!", ["l", "He", "o, wor", "d!"]
1
"la lal al ", ["la", " l", "al "]
1
"this is a string", ["this should return falsy"]
0
"thi is a string", ["this", "i i", " a", " string"]
0
"aaaaa", ["aa"]
0
"foo bar foobar", ["foo", "bar", " ", "spam"]
1
"ababab", ["a","ba","ab"]
1
"", ["The string can be constructed with nothing!"]
1
code-golf
string
decision-problem
subsequence
Kamerad SparklePony
sumber
sumber
"ababab", ["a","ba","ab"]
Jawaban:
Brachylog , 8 byte
Cobalah online!
Ini sangat lambat. Butuh sekitar 37 detik untuk "Halo, dunia!" test case pada PC saya, dan batas waktu pada TIO.
Ini mengambil string melalui variabel Input dan daftar melalui variabel Output
Penjelasan
sumber
["la", " l", "al "]
sebagai daftar, itu diakhiri di komputer saya dan dijawab dengan benarfalse.
setelah 6800 detik, dan "hanya" 113 miliar kesimpulan.Mathematica, 29 byte
Penjelasan:
Solusi kecurangan Borderline, 21 byte
Karena Mathematica adalah bahasa pemrograman simbolik, tidak ada * perbedaan antara ekspresi
List[a,b,...]
danAlternatives[a,b,...]
selain bagaimana mereka berinteraksi dengan simbol lain dan bagaimana mereka ditampilkan ({a,b,...}
dana|b|...
, masing-masing). Ketika digunakan dalam argumen keduaStringMatchQ
,Alternatives
ekspresi diperlakukan sebagai pola string, dan dengan demikian kita dapat menyimpan8
byte di atas solusi saya di atas dengan mengambil argumen kedua sebagaiAlternatives
ekspresi.* Secara teknis
List
jugaLocked
, yang mencegah penggunaUnprotect
untuk mengubahnya dan mengubah perilakunya.sumber
{x,y,z}
diperlakukan sama sepertix|y|z
untuk pencocokan pola string. Saya pikir Anda bisa menggantinya""|##&@@#2..
dengan adil#2..
.Pyth, 23 byte
Mengambil input seperti
[['string'],['list', 'of', 'parts']]
. Outputnya berupa daftar kosong atau daftar dengan nilai di dalamnya. Dalam Pyth, daftar yang berisi apa pun, bahkan string nol (['']
), bernilai true.Cobalah online!
Penjelasan:
Solusi ini terus-menerus mencoba untuk menghapus setiap bagian yang mungkin dari awal string, dan melacak nilai apa yang masih perlu dilihat.
Jika kita melihat nilai
G
dalam kasus uji[['ababab'],['a','ba','ab']]
setelah setiap iterasi dari loop sementara, inilah yang kita dapatkan:Dan, dalam kasus uji
[['aaaaa'],['aa']]
, inilah yang kami dapatkan:Saya membuat test case lain,
[['aaaaaa'],['a','aa','aaa']]
dan hasilnya adalah ini:Daftar output berisi banyak sampah di dalamnya, tetapi itu masih merupakan nilai yang sebenarnya.
sumber
Perl 5 , 39 byte
38 byte kode +
-p
bendera.Cobalah online!
Untuk input
"Hello, world!", ["l", "He", "o, wor", "d!"]
(sebenarnya dipisahkan oleh baris baru), ia membangun polal|He|o, wor|d!|
(dengan metacharacters lolos, terima kasih kepada\Q..\E
), dan kemudian melihat apakah string pertama cocok dengan pola ini/^($v)*$/
.Pada TryItOnline, perhatikan bahwa harus ada baris baru yang tertinggal.
sumber
undef
adalah nilai falsy yang dikembalikan oleh sebagian besar builtin. Dan ketika mencetaknya, sebenarnya tidak ada yang dicetak. Dan itulah yang saya lakukan. Mencetak "1/0" adalah alami untuk bahasa seperti C, tetapi untuk Perl, "1 / undef" adalah cara alami.PHP, 69 Bytes
Testcases
sumber
["", ["The string can be constructed with nothing!"]]
Python 2, 141 byte
Cobalah secara Online!
Sangat tidak efisien. Kasus uji pertama kali habis pada TIO.
sumber
JavaScript (ES6), 59 byte
Mengambil array substring
a
dan strings
dalam sintaks currying(a)(s)
. Pengembalianfalse
/true
.Berkomentar
Uji kasus
Tampilkan cuplikan kode
sumber
Haskell , 35 byte
#
mengambil aString
dan daftarString
s, dan mengembalikan aBool
.Cobalah online!
Hanya saja, saya tidak keberatan dengan test case yang saya tinggalkan karena meronta-ronta laptop saya yang sedikit, bahkan dengan -O2. Saya menduga GHC tidak menyatukan daftar elemen perantara 30517578125, ia memiliki terlalu banyak pembagian untuk mengumpulkan sampah dengan cepat, dan karena kasus uji salah, program harus menghasilkan semuanya ... jangan ragu untuk mencoba jika Anda bisa tangani itu.
mapM("":)(l<$s)
adalah daftar semua cara membuatlength s
daftar elemen yang berupa string kosong atau stringl
.sumber
Pyth,
17151114 bytePersyaratan untuk string kosong berubah, menambahkan 3 byte.
Penjelasan
versi lama
Lebih pendek dan berjalan dalam umur semesta!
Penjelasan
Ini sangat lambat, tetapi bekerja untuk kasus uji saya (kecil)
Penjelasan
sumber
Jelly ,
14128 byteCobalah online!
Bagaimana itu bekerja
perbaikan bug pada case
"", ["The string can be constructed with nothing"]
berkat @JonathanAllansumber
"", ["The string can be constructed with nothing!"]
;FŒṖḟ⁹$€Ạ¬
akan memperbaikinya.ḟ
, sehingga Anda tidak perlu$
atau⁹
:;FŒṖḟ€Ạ¬
.¬
dengan operasi yang selalu mengembalikan true dengan argumen "" yang tepat.R, 49 byte
Cobalah online!
sumber
('x', '.')
, tetapi tidak.Pyth, 10
8byteSuite uji
Ini mengambil daftar di baris pertama STDIN, dan string (tanpa tanda kutip) di baris kedua.
Untuk memulai, daftar disimpan
Q
, dan string disimpanz
. Selanjutnya, kami membentuk semua kemungkinan partisiz
. Setiap partisi akan difilter (f
) untuk memeriksa apakah hanya menggunakan potongan-potonganQ
. Untuk melakukan ini, kami menghapus semua elemenQ
dariT
, partisi tempat kami mempartisi, dan secara logis meniadakan hasilnya!
, sehingga hanya partisi tempat setiap elemenQ
disimpan.Untuk memperbaiki masalah yang
''
tidak memiliki partisi, kami menambahkan kata pertama kamus ke z, sehingga tidak akan menjadi string kosong.sumber
""
sepertinya gagal kasus itu."", [""]
dan"", []
belum ditutup - jangan pergi ke sana :)PowerShell,
615857 byteCobalah online!
Solusi lama:
sumber
Python 2, 64 byte
Coba ini secara online!
sumber
("aaaaaaa",["aa","aaa"])
.('x', '.')
, kurasa, tapi tidak."Hello", ["\w"]
dll.PowerShell, 78
Pendekatan berbasis regex cukup mudah.
sumber
CJam (16 byte)
Ini adalah blok anonim (fungsi) yang mengambil string dan array string pada stack. Demo online .
Ini menggunakan algoritma yang jelas:
Nilai kembali adalah array / string kosong (falsy) jika
str
tidak dapat dibuat, atau array yang berisistr
(benar, bahkan jikastr
itu sendiri adalah string kosong) jika dapat dibuat.sumber
C ++ (Bcc), 287 byte
karena saya tidak menulis atau menggunakan terlalu banyak next_permutation () saya tidak tahu apakah semua baik-baik saja. Saya tidak tahu 100% apakah itu solusi yang terlalu mungkin ini di luar kualitas ... Satu daftar string di sini adalah satu array pointer ke char; NULL diakhiri Algo itu mudah, ada satu algo yang linierinya coba jika semua string dalam daftar sesuai dengan argumen "a" string ada satu algo lain yang mengubah indeks daftar string sehingga mencoba semua kemungkinan kombinasi.
ungolf itu, tes kode dan hasilnya di sini
ini akan dikompilasi dalam kompiler gcc C ++
sumber
Python, 66 byte
Tidak Disatukan:
sumber
Microsoft Sql Server, 353 byte
Uji secara online.
Versi yang dapat dibaca:
sumber
C, 140 byte
Saya yakin ada cara yang lebih singkat untuk melakukan ini dalam C tetapi saya ingin membuat solusi yang menguji semua kombinasi yang mungkin dari substring daripada metode find / replace yang biasa.
Cobalah online
Tidak Disatukan:
sumber