pengantar
Beberapa waktu yang lalu seorang pengguna SO yang hilang memposting pertanyaan di sini dan sekarang sudah dihapus tapi saya pikir itu akan menjadi tantangan yang bagus jadi begini ...
Tantangan
Tulis program atau fungsi lengkap yang membutuhkan dua string dan periksa apakah permutasi string pertama adalah sub-string dari string kedua.
Memasukkan
Dua string, string dan sub-string untuk diuji (Anda dapat memilih urutannya).
Keluaran:
Nilai kebenaran jika string berisi permutasi dari sub-string.
Nilai falsey jika string tidak mengandung permutasi dari sub-string.
Tes ini peka terhadap huruf besar-kecil.
Contoh / Uji kasus
sub-string string
input d!rl Hello World!
output truthy
input Pog Programming Puzzles & Code Golf
output falsey
input ghjuyt asdfhytgju1234
output truthy
Jawaban:
Brachylog , 2 byte
Cobalah online!
Penjelasan
sumber
JavaScript (ES6), 77 byte
Mengembalikan 1 atau 0.
Potongan
sumber
Python 2,
6766 byteMengambil input sebagai dua string, substring terlebih dahulu.
sumber
sorted
.05AB1E , 3 byte
Cobalah online!
-1 byte terima kasih kepada Emigna .
Penjelasan:
sumber
.
Java 8,
266244 bytePenjelasan:
Coba di sini.
sumber
Action<params>
bukanFunc<params, returnVal>
. Saya menganggap itu akan menjadi sesuatu yang serupa.Consumer
danaccept(...)
bukannyaFunction
danapply(...)
ketika saya ingin memiliki lambda dengan parameter dan tanpa tipe kembali. Saya sedang belajar Java 8. :) Tapi karena saya harus berubahvoid p(String p,String q)
,p("",p);
danp(p+q.ch...,q.sub...)
untukp->q->
,p.apply("").accept(p);
danp.apply(p+q.ch...).accept(q.sub...)
itu lebih pendek untuk menggunakan kombinasi lambda untuk metode utama, dan hanya metode Java 7void p(String p,String q)
untuk metode rekursif.Function<String, Predicate<String>>
di tambang.Jelly , 5 byte
Cobalah online!
-1 terima kasih kepada Emigna karena mendorong saya untuk mencoba lagi bermain golf.
Penjelasan:
sumber
Japt,
107 byteCobalah online
Penjelasan
sumber
Python , 60 byte
Bentuk jawaban TFeld yang berubah - berikan kredit!
Fungsi rekursif mengembalikan boolean
True
(truey) atau string kosong (falsy).Cobalah online!
mengurutkan substring,,
u
dan panjang yang sama dari bagian depan string,,t
(menggunakan slicet[:len(u)]
) jika mereka sama makaTrue
dikembalikan, jikat
tidak masih benar (tidak kosong) berulang dengan dequeuedt
(menggunakan slice,t[1:]
) . Jikat
menjadi kosong makaand
tidak dieksekusi dan ini kosongt
dikembalikan.sumber
lambda u,t,s=sorted:
untuk one-liner, tidak ada byte yang disimpanPyth,
98 byte-1 byte terima kasih kepada @Erik_the_Outgolfer
Mengambil dua string yang dikutip, yang kedua adalah substring.
Cobalah!
sumber
s
bukan}1
.Mathematica,
5550 byte-5 byte dari user202729
Kembali
False
jika permutasi input pertama ada di string kedua. KembaliTrue
jika permutasi input pertama tidak dalam string kedua.Penjelasan:
sumber
True
/False
.Characters
.CJam ,
1312 byteCobalah online!
Saya merasa CJam benar-benar terbatas dibandingkan dengan bahasa golf lainnya, tapi mungkin hanya saya saja yang buruk ...
Saya sedang berpikir untuk pindah ke yang lain. 05AB1E sepertinya menyenangkan.
Memperbaiki bug kecil berkat Erik the Outgolfer
Cut satu gigitan karena angka yang bukan nol adalah benar
Penjelasan:
sumber
a
danabc
?W>
.le!lf{\#)}:+
dianggap sebagai solusi yang valid? Seharusnya output0
jika string tidak ditemukan dan beberapa angka positif sebaliknya. Apakah angka yang bukan nol validtruthy
?)
alih-alihW>
, sesuai klarifikasi OP.Java 9 JShell , 160 byte
(baris baru disisipkan untuk dibaca)
Cobalah online!
Catatan: JShell menyertakan sejumlah impor secara default. Sebagai solusi Java 8 atau Java 9, perlu mengimpor:
Untuk tambahan 45 byte, atau total 205 byte. TIO link di atas adalah untuk program Java 9 karena TIO saat ini tidak memiliki JShell (dan tidak jelas bagi saya bagaimana JShell akan bekerja pada TIO).
sumber
C #, 320 byte
Saya yakin menghitung permutasi bisa jauh lebih pendek tapi saya tidak bisa melihat bagaimana saat ini.
Versi yang diformat / Lengkap:
sumber
Ruby , 69 byte
Cobalah online!
sumber
Perl 6 , 48 byte
Mengembalikan persimpangan atau-setiap kehadiran permutasi sebagai substring. Misalnya, dengan argumen
"Hello World!"
dan"d!l"
, mengembalikan:... yang "runtuh" ke
True
dalam konteks boolean. Artinya, persimpangan adalah nilai kebenaran.sumber
PHP> = 7.1, 91 Bytes
Testcases
sumber
~$p
alih-aliha&$p
.,
Haskell, 54 byte
Menggunakan kekuatan Data.List untuk keduanya
isInfixOf
dan jugapermutations
.sumber
R , 103 byte
Cobalah online!
Kembali
TRUE
untuk kebenaran danNA
kepalsuan.sumber
APL (Dyalog) , 18 byte
Cobalah online!
sumber
MATL, 10 byte
Cobalah di MATL Online
sumber