pengantar
Saya tidak melihat banyak tantangan regex di sini, jadi saya ingin menawarkan ini sederhana yang menipu yang dapat dilakukan dalam beberapa cara menggunakan sejumlah rasa regex. Saya harap ini memberi para penggemar regex waktu bermain golf yang menyenangkan.
Tantangan
Tantangannya adalah untuk mencocokkan apa yang secara longgar saya juluki seri "egaliter": serangkaian jumlah karakter yang berbeda dengan jumlah yang sama. Ini paling baik dijelaskan dengan contoh.
Pertandingan:
aaabbbccc
xyz
iillppddff
ggggggoooooollllllffffff
abc
banana
Jangan cocokkan:
aabc
xxxyyzzz
iilllpppddff
ggggggoooooollllllfff
aaaaaabbbccc
aaabbbc
abbaa
aabbbc
Untuk menggeneralisasikan, kami ingin mencocokkan subjek dari bentuk ( untuk daftar karakter untuk , di mana untuk semuac1)n(c2)n(c3)n...(ck)n
c1
ck
ci != ci+1
i, k > 1, and n > 0.
Klarifikasi:
Masukan tidak akan kosong.
Suatu karakter dapat terulang kembali nanti dalam string (mis. "Pisang")
k > 1
, jadi akan selalu ada setidaknya 2 karakter berbeda dalam string.Anda dapat mengasumsikan hanya karakter ASCII yang akan diteruskan sebagai input dan tidak ada karakter yang akan menjadi terminator garis.
Aturan
(Terima kasih kepada Martin Ender untuk blok peraturan yang dinyatakan dengan sangat baik ini)
Jawaban Anda harus terdiri dari satu regex, tanpa kode tambahan (kecuali, secara opsional, daftar pengubah regex yang diperlukan untuk membuat solusi Anda berfungsi). Anda tidak boleh menggunakan fitur rasa regex bahasa Anda yang memungkinkan Anda untuk memohon kode dalam bahasa hosting (mis. e
Pengubah Perl ).
Anda dapat menggunakan rasa regex apa pun yang ada sebelum tantangan ini, tetapi mohon tentukan rasanya.
Jangan berasumsi bahwa regex berlabuh secara implisit, misalnya jika Anda menggunakan Python, anggap bahwa regex Anda digunakan dengan re.search dan bukan dengan re.match. Regex Anda harus cocok dengan seluruh string untuk string egaliter yang valid dan tidak menghasilkan yang cocok untuk string yang tidak valid. Anda dapat menggunakan sebanyak mungkin grup penangkap sesuai keinginan.
Anda dapat mengasumsikan bahwa input akan selalu berupa string dua atau lebih karakter ASCII yang tidak mengandung terminator garis apa pun.
Ini adalah golf regex, jadi regex terpendek yang menang. Jika bahasa Anda membutuhkan pembatas (biasanya /.../
) untuk menunjukkan ekspresi reguler, jangan hitung pembatas itu sendiri. Jika solusi Anda memerlukan pengubah, tambahkan satu byte per pengubah.
Kriteria
Ini golf yang bagus, jadi lupakan efisiensi dan cobalah untuk mendapatkan regex sekecil mungkin.
Sebutkan rasa regex mana yang telah Anda gunakan dan, jika mungkin, sertakan tautan yang menunjukkan demo online ekspresi Anda saat beraksi.
banana
egaliter.