Saya menggunakan "akhiran" secara longgar di sini berarti "sub-string yang mengikuti awalan".
"Awalan" di sini berarti MULAI kata, di mana awal kata didefinisikan sebagai setelah spasi atau dari karakter pertama dari teks input (untuk kata pertama). "Awalan" di tengah kata diabaikan.
Misalnya jika awalan input Anda adalah "lengan" dan teks inputnya adalah "Pasukan Dumbledore dipersenjatai sepenuhnya untuk Armageddon yang akan datang" maka daftar output berisi (y, ed, ageddon).
Uji Kasus
Asumsikan case-sensitive, string berakhir setelah spasi. Input tidak akan mulai dengan spasi.
Menghapus duplikat adalah opsional.
Input prefix: "1"
Input text:
"He1in aosl 1ll j21j 1lj2j 1lj2 1ll l1j2i"
Output: (ll, lj2j, lj2) - in any permutation
Input prefix: "frac"
Input text:
"fracking fractals fracted fractional currency fractionally fractioned into fractious fractostratic fractures causing quite a fracas"
Output: (king, tals, ted, tional, tionally, tioned, tious, tostratic, tures, as)
Input prefix: "href="https://www.astrotheme.com/astrology/"
Input text:
"(div style="padding: 0; background: url('https://www.astrotheme.com/images/site/arrondi_450_hd.png') no-repeat; text-align: left; font-weight: bold; width: 450px; height: 36px")
(div class="titreFiche" style="padding: 5px 0 0 6px")(a href="https://www.astrotheme.com/astrology/Nolwenn_Leroy" title="Nolwenn Leroy: Astrology, birth chart, horoscope and astrological portrait")Nolwenn Leroy(br /)
(/div)
(div style="text-align: right; border-left: 1px solid #b2c1e2; border-right: 1px solid #b2c1e2; width: 446px; padding: 1px 1px 0; background: #eff8ff")
(table style="width: 100%")(tr)(td style="width: 220px")
(div style="padding: 0; background: url('https://www.astrotheme.com/images/site/arrondi_450_hd.png') no-repeat; text-align: left; font-weight: bold; width: 450px; height: 36px")
(div class="titreFiche" style="padding: 5px 0 0 6px")(a href="https://www.astrotheme.com/astrology/Kim_Kardashian" title="Kim Kardashian: Astrology, birth chart, horoscope and astrological portrait")Kim Kardashian(br /)(span style="font-weight: normal; font-size: 11px")Display her detailed horoscope and birth chart(/span)(/a)(/div)
(/div)
(div style="padding: 0; background: url('https://www.astrotheme.com/images/site/arrondi_450_hd.png') no-repeat; text-align: left; font-weight: bold; width: 450px; height: 36px")
(div class="titreFiche" style="padding: 5px 0 0 6px")(a href="https://www.astrotheme.com/astrology/Julia_Roberts" title="Julia Roberts: Astrology, birth chart, horoscope and astrological portrait")Julia Roberts(br /)(span style="font-weight: normal; font-size: 11px")Display her detailed horoscope and birth chart(/span)(/a)(/div)
(td id="cfcXkw9aycuj35h" style="text-align: right")
(/div)"
Output: (Nolwenn_Leroy", Kim_Kardashian", Julia_Roberts")
Pemenang
Ini adalah kode-golf , sehingga byte paling sedikit menang. :)
Dapat menerima input dengan cara apa pun yang berfungsi, selama kode Anda dapat menyelesaikan masalah arbitrer seperti kasus uji.
sumber
https://www.astrotheme.com/astrology/
menjadi awalan saat didahului olehhref="
?Jawaban:
R , 63 byte
Cobalah online!
Penerapan positif-lihat di belakang sayangnya 5 byte lebih lama karena
regmatches/gregexpr
kombinasi besar :sumber
Jeli , 12 byte
Cobalah online!
sumber
Japt , 9 byte
8 byte jika kita dapat mengambil input sebagai array kata.
Cobalah online!
sumber
url('')
), tidak ada dari mereka yang berada di awal.Python 2 ,
5756 byteCobalah online!
-1 dengan terima kasih kepada @mypetlion
sumber
lambda i,j:[w[len(i):]for w in j.split()if w.find(i)==0]
untuk -1 byteC (gcc) ,
113109106105 byte-4 byte terima kasih kepada @LambdaBeta!
-3 byte terima kasih kepada @WindmillCookies!
Cobalah online!
sumber
^0
. Just;*t;
and&&*t;
Japt ,
1612 bytePort of Arnauld Answer
-4 byte dari @Shaggy
Cobalah online!
sumber
05AB1E , 11 byte
Cobalah online! (di sini adalah demo untuk string multiline)
Bagaimana cara kerjanya?
sumber
Stax , 8 byte
Jalankan dan debug itu
Penjelasan:
Saya juga bisa menggunakan
x%t
(panjang X, trim dari kiri), yang sama-sama panjang tetapi paket hingga 9 byte .sumber
Retina , 31 byte
Cobalah online! Baris pertama harus menjadi awalan yang diinginkan, sisanya adalah teks input. Tidak menghapus duplikat. Akan menjadi 25 byte jika spasi putih adalah sepator yang valid. Penjelasan: Kami ingin membuat daftar akhiran dari awalan yang valid. The
[^ ¶]+
sesuai dengan akhiran sendiri. Awalan regexp adalah lookbehind yang memastikan bahwa awalan suffix adalah awalan input. Ketika tampilan dievaluasi dari kanan ke kiri, ini dimulai dengan mencocokkan awalan (menggunakan pola yang sama tetapi di dalam()
s untuk menangkapnya), lalu karakter apa pun, sebelum akhirnya mencocokkan awalan pada barisnya sendiri pada awal input.sumber
¶
adalah karakter baris baru, tapi saya tidak tahu mengapa begitu banyak yang dibutuhkan di sini.¶
memastikan bahwa seluruh baris pertama dicocokkan dengan awalan. Yang kedua¶
diperlukan karena tidak diketahui berapa banyak garis perantara yang ada. Dua yang terakhir¶
bekerja dengan cara yang sama - kelas karakter yang dinegasikan biasanya menyertakan baris baru tetapi kami tidak menginginkannya di sini.¶
, mungkin lebih.Brachylog ,
2421 byteCobalah online!
Bisa jadi beberapa byte lebih pendek jika ada berbagi variabel dengan predikat sebaris.
Input adalah larik dengan awalan sebagai elemen pertama dan teks sebagai elemen kedua.
sumber
IBM / Lotus Notes Formula, 54 byte
Mengambil input dari dua bidang bernama
a
danb
. Berfungsi karena Formula akan secara rekursif menerapkan fungsi ke daftar tanpa perlu@For
loop.Tidak ada TIO yang tersedia jadi inilah tangkapan layarnya:
sumber
APL (Dyalog Unicode) , 23 byte SBCS
Program lengkap. Meminta teks dan awalan dari stdin. Mencetak daftar ke stdout.
Cobalah online!
⎕
prompt (untuk teks)⊢
hasilkan itu (terpisah'\1'
dari⎕
)(
…)⎕S'\1'
PCRE Cari dan kembalikan daftar grup tangkap 1 dari regex berikut:⎕
prompt (untuk awalan)'(\w+)\b',
awali string ini (grup karakter kata diikuti oleh batas kata)5⌽
putar 5 karakter pertama hingga akhir;'\bPREFIX(\w+)'
sumber
C (dentang) , 107 byte
Cobalah online!
Deskripsi:
Harus dentang karena gf segfaults tanpa
#include <string.h>
karena masalah strtok.sumber
MATL, 17 byte
Cobalah di MATL Online
Bagaimana?
Yb
- Pisahkan input pada spasi, letakkan hasilnya dalam array sel94
- Kode ASCII untuk^
karakterih
- Dapatkan input (katakan "frac"), gabungkan '^' dan input'(.*)'h
- Dorong string'(.*)'
ke dalam tumpukan, gabungkan '^ frac' dan '(. *)'. Jadi sekarang kita punya'^frac(.*)
, sebuah regex yang cocok dengan "frac" di awal string dan menangkap apa pun yang terjadi setelahnya.6&XX
- Jalankan pencocokan regexp, dengan6&
menentukan mode 'Token' yaitu, kelompok tangkapan yang cocok dikembalikan sebagai ganti seluruh pertandingan.Secara implisit menampilkan hasilnya.
sumber
'Tokens'
; senang mendengarnya!Bash + grep, 20 byte
Awalan diberikan sebagai parameter baris perintah, dan teks input disalurkan melalui stdin.
Cobalah online!
sumber
PowerShell 3.0,
606259 byteKehilangan beberapa byte yang menekan output cmatch. Punya solusi janky yang diperoleh beberapa dengan sengaja menyebabkan duplikat. Tapi itu juga melempar redline jika tidak cocok pada awalnya tapi itu tidak baik sekarang karena aku memikirkannya. +2 byte untuk memperbaikinya.
sumber
king, tals, ted, tional, tional, tionally, tioned, tioned, tious, tostratic, tures,tures,tures, tures, as
dan menunjukkan kesalahan indeks padaHe1in
contoh. Powershell 5.1, 6.0.2. Solusi dengan 62 byte adalah Ok.JavaScript (ES6), 57 byte
Mengambil input dalam sintaks currying
(text)(prefix)
. Tidak menghapus duplikat.Cobalah online!
sumber
JavaScript (Node.js) ,
6459 byte-5 byte dari @Shaggy
Cobalah online!
sumber
Haskell , 51 byte
Cobalah online!
sumber
Sekam , 11 byte
Cukup banyak port jawaban Haskell :
Cobalah online!
Penjelasan
sumber
Jelly ,
119 byteTautan diad yang menerima teks (daftar karakter) di sebelah kiri dan awalan (daftar karakter) di sebelah kanan yang menghasilkan daftar daftar karakter (sufiks yang dihasilkan).
Cobalah online! (Footer bergabung dengan spasi untuk menghindari smashing implisit program penuh)
Catatan: Saya menambahkan tiga kasus tepi ke string di OP - tidak difrackled dan nofracfracheremate ke awal, yang seharusnya tidak menampilkan dan fracfracit sampai akhir yang seharusnya menghasilkan fracit.
Bagaimana?
11 byter sebelumnya:
Juga tautan diad seperti di atas.
Cobalah online!
sumber
Perl 5 dengan -asE,
232221 byte (?)Cobalah online!
Dapat dijalankan sebagai commandline one-liner as
perl -asE 'say/^$b(.*)/ for@F' -- -b=frac -
, atau dengan nama file sebagai ganti yang terakhir-
.Atau dari file skrip, katakan
perl -as -M5.010 script.pl -b=frac -
(terima kasih kepada @Brad Gilbert b2gills untuk tautan TIO yang menunjukkan ini).Kode itu sendiri adalah 18 byte, saya menambahkan 3 byte untuk
-b=
opsi yang menetapkan nilainya (input awalan) ke variabel yang disebutkan$b
dalam kode. Itu terasa seperti pengecualian untuk konsensus "bendera tidak dihitung" yang biasa.-a
memisahkan setiap jalur input pada spasi dan menempatkan hasilnya dalam array@F
.-s
adalah cara pintas untuk menetapkan argumen baris perintah sebagai variabel, dengan memberikan nama pada baris perintah. Di sini argumennya adalah-b=frac
, yang menempatkan awalan "frac" dalam sebuah variabel$b
./^$b(.*)/
- Cocokkan dengan nilai$b
pada awal string..*
Apa pun yang terjadi setelah itu, sampai akhir kata, dan paranthes di sekitarnya menangkap nilai ini. Nilai yang ditangkap secara otomatis dikembalikan, untuk dicetak olehsay
. Mengulang-ulang kata-kata yang dipisahkan oleh ruangfor @F
berarti kita tidak perlu memeriksa ruang awal atau akhir.sumber
Perl 6 , 30 byte
Menguji
Diperluas:
sumber
p
dan<(
diperlukan karena jika tidak dapat dianggap sebagai$v<…>
kependekan dari$v{qw '…'}
.Java 10, 94 byte
Cobalah online di sini .
Tidak Disatukan:
sumber
Small Basic , 242 byte
Script yang tidak mengambil input dan output ke
TextWindow
ObjectCobalah di SmallBasic.com! Membutuhkan IE / Silverlight
sumber
Python 2 , 53 byte
Cobalah online!
sumber
Brachylog , 12 byte
Cobalah online!
Mengambil input
[text, prefix]
melalui variabel input, dan menghasilkan setiap kata melalui variabel output. Ini awalnya jawaban Sunda, yang saya mulai mencoba golf setelah membaca bahwa itu "bisa beberapa byte lebih pendek jika ada berbagi variabel dengan predikat sebaris", yang mungkin sekarang. Ternyata output generator menyimpan lebih banyak byte.Dua upaya pertama saya untuk menurunkannya, menggunakan fitur bahasa yang cukup baru:
Dengan variabel global yang diharapkan:
hA⁰&tṇ₁{∧A⁰;.c?∧}ˢ
(18 byte)Dengan metapredicate apply-to-head:
ṇ₁ᵗz{tR&h;.cR∧}ˢ
(16 byte)Dan solusi asli saya:
Brachylog , 15 byte
Cobalah online!
I / O yang sama. Ini pada dasarnya adalah generator untuk kata-kata dengan awalan
ṇ₁ʰ⟨∋a₀⟩
,, dimodifikasi untuk menghapus awalan.Predikat yang sangat berbeda dengan jumlah byte yang sama:
Brachylog , 15 byte
Cobalah online!
I / O yang sama.
sumber
Merah , 62 byte
Cobalah online!
sumber
Pyth ,
2120181716 byteCobalah online!
-1 dengan menggunakan
V
alih-alihFN
karenaV
set secara implisitN
-2 setelah membaca lebih lanjut tentang opsi pengiris string
-1 menggunakan
x
untuk memeriksa keberadaan substring pada indeks 0-1 menggunakan ganti dengan "" untuk mendapatkan akhir dari string
Saya yakin ini bisa menggunakan beberapa golf serius tetapi sebagai pemula Pyth, hanya membuatnya bekerja adalah bonus.
Bagaimana cara kerjanya?
sumber
Excel VBA, 86 byte
Mengambil input sebagai awalan
[A1]
dan nilai-nilai[B1]
dan output ke konsol.sumber