Pertimbangkan definisi berikut yang diambil dari Jumlah run dalam string oleh W. Rytter. Perhatikan bahwa kata, string, dan substring semuanya sinonim secara kasar.
Jalankan dalam sebuah string adalah segmen periodik yang tidak dapat diperbandingkan (dengan periode minimal yang sama) dalam sebuah string.
Suatu periode p dari suatu kata w adalah setiap bilangan bulat positif p sehingga w [i] = w [i + p] setiap kali kedua sisi dari persamaan ini didefinisikan. Biarkan per (w) menunjukkan ukuran periode terkecil w. Kami mengatakan bahwa kata w adalah iff periodik per (w) <= | w | / 2.
Misalnya, perhatikan string x = abcab
. per(abcab) = 3
sebagai x[1] = x[1+3] = a
, x[2]=x[2+3] = b
dan tidak ada periode yang lebih kecil. abcab
Karenanya string tidak periodik. Namun, string abab
bersifat periodik sesuai (abab) = 2.
Suatu run (atau periodisitas maksimal) dalam string w adalah interval [i ... j] dengan j> = i, sedemikian rupa sehingga
- w [i ... j] adalah kata periodik dengan periode p = per (w [i ... j])
- Itu maksimal. Secara formal, tidak w [i-1] = w [i-1 + p] atau w [j + 1] = w [j + 1-p]. Secara informal, proses tidak dapat dimuat dalam proses yang lebih besar dengan periode yang sama.
Ditunjukkan oleh RUNS (w) himpunan run w.
Contohnya
Empat run atattatt
adalah [4,5] = tt, [7,8] = tt, [1,4] = atat, [2,8] = tattatt.
String aabaabaaaacaacac
berisi 7 run berikut:
[1,2] = aa, [4,5] = aa, [7,10] = aaaa, [12,13] = aa, [13,16] = acac, [1,8] = aabaabaa, [9] , 15] = aacaaca.
Output Anda harus berupa daftar run. Setiap proses harus menentukan interval yang diwakilinya tetapi tidak perlu menampilkan substring itu sendiri. Pemformatan yang tepat bisa apa saja yang nyaman bagi Anda.
Contoh-contoh menggunakan pengindeksan 1 tetapi Anda bebas menggunakan pengindeksan 0 jika lebih nyaman.
TUGAS
Tulis kode yang diberi string w, output RUNS (w).
Bahasa dan input
Anda dapat menggunakan bahasa apa pun yang Anda suka dan mengambil string input dalam bentuk apa pun yang paling nyaman. Anda harus memberikan program lengkap dan Anda harus menunjukkan contoh kode Anda berjalan pada input contoh.
class A{public static ...}
setiap kali saya ingin kode golfJawaban:
Pyth, 38 byte
Suite uji
sumber
[i, j]
mewakili irisan yang dimulai antara (0-indeks) karakteri-1
dani
dan berakhir antara karakterj-1
danj
. Ini adalah konvensi standar dalam bahasa Pyth dan sebagian besar bahasa waras, sebagaimana mestinya (lihat di sini dan di sini ).CJam, 66
Cobalah online
Penjelasan singkat:
Algoritma ini bekerja dalam 4 langkah (3 langkah pertama yang sesuai dengan 3 blok utama yang dapat Anda amati):
Saya ingin bermain golf lebih banyak, jadi ini semua bisa berubah.
sumber