Diberi string yang terdiri dari huruf kecil, seperti
aabaaababbbbaaba
dan bilangan bulat positif n , seperti 4
, menghasilkan panjang- n string t sehingga ketika t diulangi dengan panjang s , mereka memiliki banyak karakter yang sama. Untuk contoh yang diberikan, output optimal adalah aaba
, karena memiliki tiga belas karakter yang sama dengan string target:
s: aabaaababbbbaaba
t: aabaaabaaabaaaba (aaba)
^^^^^^^^ ^ ^^^^
dan t tidak mungkin memiliki lebih. Namun, untuk aaaaaab
, ada dua kemungkinan keluaran: aaaa
dan aaba
, yang masing-masing memiliki 6 karakter yang sama dengan string target:
s: aaaaaab
t: aaaaaaaa (aaaa)
^^^^^^
s: aaaaaab
t: aabaaaba (aaba)
^^ ^^^^
Baik aaaa
atau aaba
dapat di-output, atau keduanya jika Anda mau. Perhatikan bahwa s tidak pernah diulang; jejak a
di kedua nilai yang diulang t hanya diabaikan.
Uji kasus
Inputs -> Valid outputs
1 a -> a
1 aa -> a
2 aa -> aa
1 ab -> a b
2 ab -> ab
1 abb -> b
2 abb -> ab bb
2 ababa -> ab
2 abcba -> ab
2 aabbbbb -> bb (ab is not a valid output here)
3 aababba -> aab abb
3 aababbaa -> aab
3 asdasfadf -> asf
3 asdasfadfsdf -> asf adf
2 abcdefghijklmnopqrstuvwxyzyx -> yx
2 supercalifragilisticexpialidocious -> ic ii
3 supercalifragilisticexpialidocious -> iri ili ioi
4 supercalifragilisticexpialidocious -> scii
5 supercalifragilisticexpialidocious -> iapic
2 eeeebaadbaecaebbbbbebbbbeecacebdccaecadbbbaceebedbbbddadebeddedbcedeaadcabdeccceccaeaadbbaecbbcbcbea -> bb be
10 bbbbacacbcedecdbbbdebdaedcecdabcebddbdcecebbeeaacdebdbebaebcecddadeeedbbdbbaeaaeebbedbeeaeedadeecbcd -> ebbbdbeece ebdbdbeece
20 aabbbaaabaaabaaaabbbbabbbbabbbabbbbbabbaaaababbbaababbbaababaaaabbaaabbaabbbabaaabbabbaaabbaaaaaaaba -> aabbbbaaabbabbbaabba
Aturan
- Anda dapat berasumsi bahwa input hanya akan berupa string huruf kecil yang tidak kosong dan bilangan bulat positif tidak lebih besar dari panjang string.
- Anda dapat mengambil input dalam format standar apa pun dan dalam urutan apa pun.
- Anda dapat menampilkan string tunggal, atau lebih dari satu dalam bentuk array, dipisahkan oleh baris baru atau spasi, dll.
- Kode Anda harus selesai untuk setiap test case dalam waktu kurang dari 1 menit pada komputer yang cukup modern.
- Ini kode-golf , jadi buat kode Anda sesingkat mungkin.
2 abb -> ba
mana ia dibangun sebagai(b)[ab]a
: pemimpin(b)
diabaikan,[ab]
cocok.Jawaban:
Jelly , 11 byte
Cobalah online!
Tidak mengharapkan untuk mengalahkan Dennis pada yang satu ini, jadi cobalah untuk FGITW itu (setelah mencoba beberapa kemungkinan; ada lebih dari satu cara untuk membuat 11). Saya datang lebih pendek, sangat mengejutkan saya.
Mengambil string lalu menghitung sebagai argumen baris perintah. Output pada stdout.
Penjelasan
Ini menggunakan wawasan bahwa huruf di setiap posisi pola harus merupakan huruf paling umum yang sesuai dengan posisi itu. Kita dapat menemukan huruf-huruf yang sesuai dengan pola tertentu melalui pemisahan menjadi kelompok-kelompok berukuran pola, dan transposing. Alasan utama solusi ini begitu lama adalah karena Jelly tampaknya tidak memiliki cara pendek untuk menemukan mode daftar (saya telah melakukan beberapa upaya, tetapi mereka semua setidaknya sepanjang enam byte).
Jelly , 10 byte, berdasarkan solusi @Dennis
Cobalah online!
Ini adalah kombinasi dari solusi @Dennis dan solusi saya sendiri; ada mode lima byte dalam solusi itu, yang saya curi untuk solusi ini. (Saya sudah memiliki solusi berdasarkan
⁸ċ
, tetapi tidak bisa mendapatkan di bawah enam byte dengan itu; Saya belum berpikir untuk menggunakanÞ
.)Penjelasan
µ…µ€
danǀ
(dengan…
pada baris sebelumnya) panjangnya tiga byte (yang terakhir membutuhkan baris baru), dan setara. Biasanya saya menggunakan yang pertama, tetapi yang terakhir lebih fleksibel, karena memungkinkan Anda untuk menggunakan⁸
untuk menyebutkan argumen.Ini memungkinkan untuk mengurutkan (
Þ
) berdasarkan jumlah kemunculan dalam⁸
(⁸ċ
), lalu mengambil elemen terakhir (Ṫ
), untuk menemukan mode hanya dalam lima karakter.sumber
Mathematica, 51 byte
Input dan output adalah daftar karakter.
Juga didasarkan pada mode garis transpos. Saya percaya mereka disebut built-in untuk mode daftar
Commonest
semata - mata untuk pegolf kode.sumber
MostCommon
...Python 3,
99, 7361 byte-12, thx ke @Rod
Gagasan yang sama, tetapi menulis ulang untuk menghilangkan pernyataan impor.
Asli
Penjelasan:
sumber
''.join()
untuk mengembalikan daftar string''.join(...)
akan mengembalikan generator, tidak yakin apakah itu diizinkan output.Python 2, 106
Sekarang ini jawaban yang berbeda! Saya sedang memikirkan satu (hampir) -lantai dari awal. Sekarang bahkan lebih pendek, berdasarkan penggunaan zip oleh @Rod.
Terima kasih kepada @ L3viathan dan @Rod untuk klarifikasi tentang penggunaan lambdas sebagai jawaban
Cobalah online
Penjelasan:
combinations(S,N)
membuat semua kombinasi panjang N dari karakter Smax()
memiliki argumenkey
yang digunakan sebagai fungsi input untuk digunakan untuk membandingkan elemenlambda s:sum(x==y for x,y in zip(S,s*len(S)))
disahkan sebagai fungsi seperti ituLambda ini menghitung jumlah karakter yang cocok dalam daftar tupel, hasilkan oleh
zip(S,s*len(S))
s
- salah satu kombinasi dan dikalikan untuklen(S)
membuat string yang dijamin lebih lama dari Szip
membuat tupel karakter dari setiap stringS
dans*len(S)
dan mengabaikan semua karakter yang tidak dapat dicocokkan (dalam kasus satu string lebih lama dari yang lain)Jadi
max
pilih kombinasi, yang menghasilkan jumlah maksimumsumber
[]
fungsi daftar pemahaman di dalam, juga Anda menggunakan1 for ... if <cond>
Anda dapat menggunakan secara langsung<cond> for ...
karena akan digunakan padasum
, python akan mengambilTrue
sebagai1
danFalse
sebagai0
f=
(kecuali itu rekursif)JavaScript (ES6),
10410194 byteDisimpan 3 byte dua kali berkat @Arnauld. Solusi 97 byte yang bekerja dengan semua karakter non-baris baru:
Solusi 104-byte sebelumnya juga berfungsi dengan karakter baris baru:
sumber
o
ke objek baru, bisakah Anda menggunakan kembali array yang diteruskanmap
dengan menggunakan parameter ke-3?(n,s)=>s.replace(/./g,(_,i)=>i<n?[...s].map((c,j,a)=>j%n-i||(a[c]=-~a[c])>m&&(m++,r=c),m=0)&&r:'')
harus menyimpan 3 byte lagi. (Atau 4 byte dengan menggunakan sintaks currying.)Jelly ,
1211 byteCobalah online!
Bagaimana itu bekerja
sumber
Pyth, 11 byte
Mengambil input sebagai
s,n
dan output sebagai daftar karakter.Penjelasan
sumber
Japt ,
1615 byteDisimpan 1 byte berkat @obarakon
14 byte kode + 1 byte untuk
-P
bendera. Cobalah online!Tidak terseret dan penjelasan
sumber
gJ
dengano
Python 2 , 132 byte
Cobalah online!
sumber
05AB1E , 17 byte
Cobalah online!
Penjelasan
sumber
PHP, 245 Bytes
Versi Online
Kerusakan
sumber
Haskell, 84 byte
Contoh penggunaan:
Pisahkan string input menjadi potongan-potongan yang panjang
n
, transpos dan temukan untuk setiap sublist elemen yang paling sering.sumber
Röda , 68 byte
Cobalah online!
Ini adalah fungsi yang mencetak output tanpa tertinggal baris baru.
Ini terinspirasi oleh jawaban ini .
sumber