Diberikan string sebagai argumen, hasilkan panjang substring berulang yang terpanjang atau tidak tumpang tindih atau nol jika tidak ada string tersebut.
Anda dapat menganggap string input tidak kosong.
Contohnya
abcdefabc
: substring abc
diulangi pada posisi 1 dan 7, sehingga program harus menampilkan 3
abcabcabcabcab
: abcabc
atau bcabca
atau cabcab
diulang, sehingga program harus menampilkan 6 . (substring abcabcabcab
juga diulang, tetapi kejadiannya tumpang tindih, jadi kami tidak menerimanya).
aaaaaaa
: aaa
diulangi pada posisi 1 dan 4 misalnya, sehingga program harus menampilkan 3
abcda
: a
diulang, sehingga program harus menampilkan 1
xyz
: tidak ada string berulang → 0
ababcabcabcabcab
: harus mengembalikan 6
Ini adalah kode-golf , byte paling sedikit menang.
code-golf
string
code-golf
code-golf
kolmogorov-complexity
primes
code-golf
kolmogorov-complexity
hexadecimal
code-golf
code-golf
string
code-golf
string
random
code-golf
array-manipulation
code-golf
ascii-art
kolmogorov-complexity
random
code-golf
array-manipulation
code-golf
stateful
code-golf
hello-world
code-golf
string
code-golf
interpreter
lisp
code-golf
restricted-source
quine
palindrome
code-golf
ascii-art
random
generation
challenge-writing
ascii-art
random
polyglot
maze
answer-chaining
string
cops-and-robbers
whitespace
code-golf
string
cops-and-robbers
whitespace
code-golf
number
sequence
code-golf
date
code-golf
ascii-art
decision-problem
code-golf
combinatorics
chemistry
code-golf
kolmogorov-complexity
source-layout
radiation-hardening
code-golf
ascii-art
path-finding
maze
code-golf
string
ascii-art
game
animation
code-golf
string
ascii-art
code-golf
ascii-art
kolmogorov-complexity
code-golf
restricted-source
new-years
Arnaud
sumber
sumber
Jawaban:
brainfuck, 226 byte
Diformat:
Mengharapkan input dengan atau tanpa baris baru, dan menampilkan hasilnya sebagai nilai byte .
Cobalah online.
Ini memeriksa setiap awalan untuk melihat apakah itu terjadi kemudian dalam string, lalu memangkas karakter pertama dan mengulangi proses sampai tidak ada lagi karakter yang tersisa.
Rekaman itu dibagi menjadi 3-sel node,
c 0 f
di mana
c
karakter dari string yang diberikan, danf
merupakan bendera yang dapat berupa salah satu, negatif, atau nol. Bendera bukan-nol ditempatkan di antara dua karakter yang saat ini dibandingkan, dan yang negatif dicadangkan untuk sel setelah akhir awalan saat ini dan sebelum awal akhiran saat ini (yaitu, sebelum indeks pertandingan potensial saat ini).Hasilnya disimpan di sebelah kiri string dan diperbarui setiap kali kecocokan ditemukan.
(String sebenarnya diproses secara terbalik dengan
\x01
menambahkannya.)sumber
Jelly , 12 byte
Cobalah online!
Bagaimana itu bekerja
sumber
œ-Q
sangat rapi.Perl 6 , 36 byte
Cobalah
Diperluas:
sumber
Retina ,
353230 byteTantangan yang cukup keren.
Cobalah online
Penjelasan:
sumber
M%`.
sebagai tahap kedua.JavaScript (ES6),
796866 byteSunting: Disimpan
1113 byte berkat @Arnauld.sumber
Haskell , 79 byte
Cobalah online!
sumber
%
dapat mengakumulasi urutan yang tidak bersebelahan, memberikan positif palsu seperti 2 untukaa
dalamaxayaa
,a%d
salah, tetapi juga tidak perlu. Yang juga berarti Anda dapat menggunakanmax
bukanmaximum
.a%d
untuk""%d
memperbaikinya.a
kosong.sum[1|(x,y)<-zip a c,x==y]
bisa digunakan sebagai gantinyaa!c
.Python 3 ,
7572 byteCobalah online!
sumber
JavaScript, 120
sumber
Sekam , 11 byte
Cobalah online!
Catatan: Sekam lebih baru dari tantangan ini.
Penjelasan
sumber
Perl 5 dengan
-p
, 40 byteCobalah online!
sumber
Mathematica,
7565 byte10 byte disimpan karena @JingHwan Min .
Fungsi anonim. Mengambil string sebagai input, dan mengembalikan angka sebagai output.
sumber
BlankNullSequence (___)
kapanOverlaps->All
ada.Max@StringLength@StringCases[#,a___~~___~~a___:>a,Overlaps->All]&
akan baik-baik saja.StringReplace
: PPyth - 16 byte
Saya perlu golf mengubah semua string menjadi panjang dan menemukan maks.
Test Suite .
sumber
Clojure, 112 byte
loop dua kali dari angka
0
ken - 1
(n
menjadi panjang string), menjatuhkanj
karakter dan membagi sisanya menjadi bagian "awal" dan "akhir". Membuat satu set semua substring dengane
panjangb
dan menggunakannya sebagai fungsi untuk memeriksa apakahb
ditemukan dari sana. Mengembalikan panjangb
jika ditemukan dan 0 jika tidak, mengembalikan maks dari nilai-nilai ini.Akan menarik melihat versi yang lebih pendek.
sumber
Retina , 24 byte
Cobalah online!
Sebuah pemanasan bagi saya untuk mempelajari fitur-fitur baru dari Retina 1.
Penjelasan
Tahap Daftar, ini mengembalikan semua kecocokan untuk regex
(.*).*\1
, yang cocok dengan pola apa pun dari bentuk "ABA", di mana A dan B adalah dua substring sewenang-wenang (mungkin kosong). Opsi tambahan yang diberikan untuk tahap ini adalahv
, yang mempertimbangkan pertandingan yang tumpang tindih, dan$
yang menerapkan substitusi pada masing-masing pertandingan sebelum mengembalikannya: substitusi ditunjukkan pada baris kedua, dan sesuai dengan panjang (.
) dari grup penangkap pertama ( yang akan menjadi substring "A" pada contoh sebelumnya).Kami sekarang memiliki semua panjang substring berulang, tahap ini hanya mengurutkannya dalam urutan numerik, dari yang terpendek ke yang terpanjang.
Akhirnya, tahap grep ini (
G
) hanya menyimpan hasil terakhir (-1
), yang merupakan panjang dari substring terpanjang yang diulang.sumber
Javascript, 165 byte
Uji Kasus
sumber
ababcabcabcabcab
, tetapi stringcabcab
diulang.