Giriş
Burada pek çok regex zorluğu görmüyorum, bu yüzden bir dizi regex aroması kullanarak birkaç şekilde yapılabilen bu aldatıcı basit olanı sunmak istiyorum. Umarım regex meraklılarına eğlenceli golf zamanı sunar.
Meydan okuma
Zorluk, bir "eşitlikçi" dizi olarak çok gevşek olarak adlandırdığım şeyle eşleşmektir: eşit sayıda farklı karakter dizisi. Bu en iyi örneklerle açıklanmaktadır.
Eşleşme:
aaabbbccc
xyz
iillppddff
ggggggoooooollllllffffff
abc
banana
Eşleşmiyor:
aabc
xxxyyzzz
iilllpppddff
ggggggoooooollllllfff
aaaaaabbbccc
aaabbbc
abbaa
aabbbc
Genelleme, biz (formun bir konu eşleştirmek istediğiniz herhangi bir karakter listesi için için nerede, herkes içinc1)n(c2)n(c3)n...(ck)n
c1
ck
ci != ci+1
i, k > 1, and n > 0.
Açıklamalar:
Giriş boş olmayacak.
Bir karakter daha sonra dizede kendini tekrar edebilir (örn. "Muz")
k > 1
, bu nedenle dizede her zaman en az 2 farklı karakter olacaktır.Giriş olarak yalnızca ASCII karakterlerinin geçirileceğini ve hiçbir karakterin satır sonlandırıcı olmayacağını varsayabilirsiniz.
kurallar
(Bu mükemmel kurallar bloğu için Martin Ender'e teşekkürler)
Cevabınız ek kod olmadan tek bir normal ifadeden oluşmalıdır (isteğe bağlı olarak, çözümünüzü çalıştırabilmeniz için gereken normal ifade değiştiricilerinin bir listesi hariç). Barındıran dilde (örneğin Perl e
değiştiricisi) kodu çağırmanıza izin veren dilinizin regex lezzetinin özelliklerini kullanmamalısınız .
Bu meydan okumadan önce var olan herhangi bir regex aromasını kullanabilirsiniz, ancak lütfen aromayı belirtin.
Normal ifadenin dolaylı olarak sabitlendiğini varsaymayın, örneğin Python kullanıyorsanız normal ifadenizin re.match ile değil re.search ile kullanıldığını varsayın. Normal ifadeniz için normal ifadeniz tüm dizeyle eşleşmeli ve geçersiz dizelerle eşleşmemelidir. İstediğiniz sayıda yakalama grubu kullanabilirsiniz.
Girişin her zaman satır sonlandırıcı içermeyen iki veya daha fazla ASCII karakterden oluşan bir dize olacağını varsayabilirsiniz.
Bu regex golf, yani bayttaki en kısa regex kazanır. /.../
Diliniz düzenli ifadeleri belirtmek için (genellikle ) sınırlayıcılar gerektiriyorsa , sınırlayıcıları saymayın. Çözümünüzde değiştirici gerekiyorsa, değiştirici başına bir bayt ekleyin.
Kriterler
Bu moda golf iyi, bu yüzden verimliliği unutma ve sadece regex mümkün olduğunca küçük almaya çalışın.
Lütfen hangi regex lezzetini kullandığınızı belirtin ve mümkünse, ifadenizin çevrimiçi bir demosunu eylemde gösteren bir bağlantı ekleyin.
banana
, eşitlikçi.