Diberikan daftar string, ganti setiap string dengan salah satu substring yang tidak kosong yang bukan substring dari string lain dalam daftar dan sesingkat mungkin.
Contoh
Diberikan daftar ["hello","hallo","hola"]
, "hello"
harus diganti hanya "e"
karena substring ini tidak terkandung dalam "hallo"
dan "hola"
dan sesingkat mungkin. "hallo"
dapat diganti dengan baik "ha"
atau "al"
dan "hola"
oleh salah "ho"
, "ol"
atau "la"
.
Aturan
- Anda dapat mengasumsikan bahwa string tidak akan kosong dan hanya berisi karakter alfabet dari kasus yang sama.
- Anda dapat mengasumsikan bahwa substring seperti itu ada untuk setiap string dalam daftar, yaitu tidak ada string dalam daftar yang akan menjadi substring dari salah satu string lainnya.
- Input dan output dapat dalam format apa pun yang masuk akal.
- Ini adalah kode-golf , jadi coba gunakan sesedikit mungkin byte dalam bahasa pilihan Anda.
Uji Kasus
Hanya satu output yang mungkin diberikan untuk sebagian besar kasus.
["ppcg"] -> ["p"] (or ["c"] or ["g"])
["hello","hallo","hola"] -> ["e","ha","ho"]
["abc","bca","bac"] -> ["ab","ca","ba"]
["abc","abd","dbc"] -> ["abc","bd","db"]
["lorem","ipsum","dolor","sit","amet"] -> ["re","p","d","si","a"]
["abc","acb","bac","bca","cab","cba"] -> ["abc","acb","bac","bca","cab","cba"]
Terkait: Substring Identifikasi Terpendek - ide serupa, tetapi lebih banyak melibatkan aturan dan format rumit.
code-golf
string
code-golf
string
code-golf
array-manipulation
code-golf
quine
code-golf
array-manipulation
integer
matrix
classification
code-golf
quine
code-golf
string
matrix
conversion
code-golf
string
number
code-golf
string
code-golf
number
sequence
integer
code-golf
decision-problem
matrix
code-golf
string
code-golf
math
code-golf
math
array-manipulation
combinatorics
code-golf
random
code-golf
code-golf
alphabet
code-golf
python
c
code-golf
base-conversion
code-golf
string
counting
code-challenge
code-generation
fastest-code
code-golf
kolmogorov-complexity
matrix
code-golf
string
code-golf
array-manipulation
decision-problem
random
sudoku
code-golf
chess
code-golf
card-games
encode
code-golf
decision-problem
code-golf
code-golf
math
array-manipulation
matrix
Laikoni
sumber
sumber
""
(string kosong) secara unik mengidentifikasi untuk"ppcg"
case tunggal ?Jawaban:
Jelly ,
129 byteCobalah online! Atau lihat test-suite (membutuhkan ~ 35s)
sumber
Python 2 , 116 byte
Cobalah online!
sumber
Pyth , 12 byte
Coba di sini!
Bagaimana itu bekerja
Pada dasarnya filter substring dari masing-masing yang hanya terjadi di salah satu string dalam daftar (yaitu, itu unik untuk string itu) dan mendapatkan yang pertama.
sumber
Prolog (SWI) ,
175163 byteCobalah online!
Sebagian besar hal di sini seharusnya cukup jelas, tetapi:
Penjelasan
Tanda tangan: (
+
= input,?
= opsional,-
= output,:
= ekspresi)sub_string(+String, ?Before, ?Length, ?After, ?SubString)
string_length(+String, -Length)
member(?Elem, ?List)
between(+Low, +High, ?Value)
findall(+Template, :Goal, -Bag)
forall(:Cond, :Action)
\+ \+
hanyanot not
(yaitu mengonversi kecocokan ke boolean (dalam hal ini, mencegah kecocokan keduanyap
secarappcg
terpisah))sumber
APL (Dyalog) , 25 byte
Terima kasih ngn untuk menyimpan satu byte
Cobalah online!
sumber
J ,
30 2925 byteCobalah online!
sumber
Jelly , 10 byte
Cobalah online!
sumber
JavaScript (ES6), 93 byte
Cobalah online!
Bagaimana?
Untuk setiap string dengan panjang L dalam array input a [] dan dimulai dengan n = 0 , kami menggunakan fungsi rekursif g () untuk menghasilkan semua substring u dari s dengan:
Misalnya, dengan s = "abc" dan L = 3 :
Beberapa substring dihasilkan beberapa kali, tetapi tidak masalah. Yang penting adalah bahwa semua substring dengan panjang N telah dihasilkan sebelum substring dengan panjang N + 1 .
Kami menghentikan proses secepat u tidak dapat ditemukan di setiap lain String S di sebuah [] , yang dijamin terjadi ketika u == s dalam kasus terburuk, sesuai tantangan aturan # 2:
Oleh karena itu, dalam contoh di atas, langkah 7 dan 8 sebenarnya tidak akan pernah diproses.
sumber
PowerShell , 107 byte
Cobalah online!
Penjelasan
Untuk setiap string yang disediakan (dan tetapkan seluruh array
$a
):for
pengulangan pada setiap panjang substring (berdasarkan 1) dari string (menugaskan string itu sendiri$s
dan panjangnya$g
)$i
):$i
, lalu untuk setiap indeks:$s
) di posisi$_
(indeks) dan panjangnya$i
Where-Object
(?
), dan kembalikan jika:$a
) yang tidak mengandung string saat ini$s
, tidak memiliki kecocokan untuk substring saat ini$_
Kembali pada level string, kita memiliki semua substring dari string ini yang tidak ditemukan pada yang lain, jadi ambil yang pertama
[0]
karena kita hanya membutuhkan satu dari mereka, kemudian lanjutkan dengan string berikutnya.sumber
C # (Visual C # Interactive Compiler) , 149 byte
Cobalah online!
Kurang bermain golf ...
sumber