Farklı Bir Meta Regex Golf Sahası


42

Uyarı: Popüler talebin ardından kuralları biraz gevşettim:

  • Maksimum regex boyutu 5 cevapta 1 bayt büyür . Cevap N , 29 + ⌈N / 5⌉ bayta kadar kullanabilir .
  • Her cevabın puanı (M / (30 + N / 5)) N olacaktır.

Regex golfta, size iki dizge verilir ve ilk dizideki tüm dizelerle eşleşen en kısa regex'i yaratmanız istenir, ancak ikinci dizideki tüm dizelerde başarısız olur.

Yapacağımız şey budur, ancak ne zaman birisi cevap verirse, regex'in kendisi iki dizi diziden birine (kendi tercihine göre) eklenecektir. Bu nedenle, bu zorluğa cevap verebilmek için katı bir emir var.

Bir örnek üzerinden gidelim:

  • Bunu başlatacağımı abc(ki yapmayacağım) ve maç setine yerleştirdiğimi söyle .
  • O halde geçerli bir ikinci cevap a, yukarıdakiyle eşleştiği için olacaktır (ve henüz başarısız olması gereken hiçbir dize yoktur). Diyelim ki bu cevap başarısız setine giriyor .
  • Şimdi üçüncü cevap eşleşmek zorunda abcama başarısız a. Bu nedenle olası bir üçüncü cevap budur b. Bunu maç setine koyalım .
  • Dördüncü cevap şimdi uyuşmalı abcve bbaşarısız olmalı a. Yinelenen cevaplara izin vermeyiz, bu nedenle geçerli bir regex olur c|b.

Önemli olan, cevabınızın mümkün olduğu kadar kısa olması gerektiği. Bu ilk birkaç cevap için önemsiz olabilir, ancak birkaç cevap aldığımızda, istenen eşleşmeyi olabildiğince az karakterle elde etmek zorlaşır ve zorlaşır.

Asıl zorluk için, başlangıçta eşleşme seti PPCGve başarısızlık seti içerir [PPCG]ve ben zaten ilk cevabı verdim.

cevaplama

Bu zorlukla ilgili anlaşılması gereken en önemli şey , bir kerede yalnızca bir kişinin yanıt verebilmesi ve her bir cevabın öncekine göre değişmesidir .

Aynı şekilde iki cevap asla olmamalıdır N. İki kişi aynı anda bazılarına cevap Nveriyorsa, daha sonra cevap veren (birkaç saniye fark olsa bile) cevaplarını nazikçe silmelisiniz.

Bu çalışmayı biraz daha pürüzsüz hale getirmek için, cevabınızı gönderirken aşağıdaki adımlara uymaya çalışın:

  • Birisinin önceki cevabın doğruluğunu bağımsız olarak doğruladığından emin olun (ve ilgili bir yorum bıraktı).
  • Önceki cevapta bulunan iki test setini alın ve bir setteki tüm karakter dizileriyle eşleşen ve diğerinde olmayan bir regex yazın.
  • Cevabınızı aşağıdaki biçimde gönderin:

    # N. [regex flavour] - [regex size in bytes]
    
        [regex]
    
    [link to online regex tester]
    
    [notes, explanation, observations, whatever]
    
    ### The next answer has to match the following strings:
    
        [match set]
    
    ### And fail on these strings:
    
        [fail set]
    

    Ncevabın numarası nerede ? Lütfen önceki cevabınızdaki metni kopyalayın [match set]ve [fail set]regex'inizi bunlardan birine ekleyin .

    Bu kesinlikle meydan okuma için hayatidir! Muhasebecilikle mücadelede yardımcı olacak bir gösterge panosu aracı sundum ve yukarıdaki şablona dayanıyor. (Gönderinin altına bakın.)

  • Başka bir kullanıcı şimdi gönderinizi gözden geçirmeli ve cevabınız tüm kuralları takip ediyorsa (aşağıya bakınız), "Doğrulama doğrulandı" şeklinde bir yorum bırakmalıdır. Olmazsa, kusurları gösteren bir yorum bırakmalıdırlar. Daha sonra bu sorunları çözmek için 15 dakikanız var . Bunu yapmazsanız, cevabınız geçersiz sayılır, silinir ve bir başkası bir önceki cevap için bir takip mesajı gönderebilir. (Bu olursa, istediğiniz zaman yeni bir cevap göndermekte özgürsünüz.)

Bu düzenlemeler oldukça katı görünebilir, ancak zincirdeki bir yerde geçersiz cevapları önlemek için gereklidir.

kurallar

  • Bir kullanıcı 4 saatlik süre için sadece bir cevap verebilir. (Bu, kullanıcıların soruyu sürekli izlemesini ve mümkün olduğunca cevap vermesini engellemek içindir.)
  • Bir kullanıcı arka arkaya iki cevap gönderemez. (örneğin, 1. cevabı gönderdiğimden beri 2. cevabı yapamam, ancak 3. yapabilirim.)
  • Doğrulanmış cevapları düzenlemeyin. (Kısaltmanın bir yolunu bulsanız bile!)
  • Eğer zincirde daha önce bir hata keşfedilirse (yani takip cevapları kaydedildikten sonra), rahatsız edici cevap silinmeli ve yeni gönderilerin başarısız olması gereken dizelerden silinecektir. Ancak , sonra yayınlanan tüm cevapları gerekir değil yansıtacak şekilde değiştirilmelidir.
  • Açıkçası, regex'inizin geçerli olduğu bir lezzeti belirtin. Çevrimiçi olarak serbestçe test edilebilen herhangi bir lezzeti seçebilirsiniz. StackOverflow'ta çevrimiçi test edicilerin iyi bir listesi var . Özellikle, Regex101 ve RegexPlanet , çok çeşitli tatları desteklediklerinden faydalı olmalıdır. Lütfen cevabınız için seçtiğiniz test cihazına bir link ekleyin. Üzerinde geçiş yaparak global ve mtest cihazında ultiline değiştiricileri, tek seferde tüm dizeleri test edebilirsiniz, her satırda bir (onlar herhangi bir bireysel ipe gerekli değildir, çünkü bu değiştiricileri, senin regex boyutu doğru sayılmaz).
  • Regex'iniz boş olmamalıdır.
  • N cevabı için regex'iniz 29 + ⌈N / 5⌉ bayttan uzun olmamalıdır . Başka bir deyişle, 1'den 5'e kadar olan cevaplar 30 bayta kadar (dahil), 6'dan 10'a kadar olan cevaplar 31 byte'a kadar kullanabilir ... 31'den 35'e kadar cevaplar 36 byte'a kadar kullanabilir. Bir sonraki yanıtın kaç karakter kullanabileceğini görmek için gösterge tablosunu kontrol edin.
  • Regex'iniz her iki test setindeki herhangi bir dizeyle aynı olmamalıdır.
  • İlgili ana bilgisayar dili kullanıyor olsa da, göndericinize veya bayt sayınıza sınırlayıcıları dahil etmeyin. Regex'iniz değiştiriciler kullanıyorsa, regex boyutuna değiştirici başına bir bayt ekleyin. Örneğin /foo/i4 bayt olurdu.

puanlama

Her bir cevabın puanı (M / (30 + N / 5)) N olarak hesaplanır , burada M , bayt cinsinden regex boyutundadır ve N , sayıdır. Her kullanıcının puanı, tüm cevaplarının ürünüdür. Genel puanı en düşük olan kullanıcı kazanır. Beklenmedik bir bağlanma durumunda, son gönderime sahip olan kullanıcı kazanır. Bu kullanıcının son cevabını kabul edeceğim.

Eğer puanları toplamayı tercih ederseniz, her bir cevaplayıcının puanını N * (log (M) - log (30)) olarak hesaplayabilir ve tüm cevapların üzerine toplayabilirsiniz. Bu aynı afiş sırasını verecek.

Cevabın bir cevabını puanlamasına gerek yok, sadece M'yi rapor et . Sorunun altındaki zorluk kontrol paneli puanları hesaplayacak ve iki çok yakın puan olması durumunda, rasgele kesinlikli türler kullanarak sonuçları iki kez kontrol edeceğim.

Her yanıtın puanının 1'den az olduğunu, bu nedenle yeni bir cevap vererek genel puanınızı artırabileceğinizi unutmayın. Ancak, gönderimlerinizin her biri ne kadar kısa olursa, puanınızı o kadar verimli bir şekilde düşürebilirsiniz. Ayrıca, daha sonra cevaplar artan üs nedeniyle daha uzun olmasına rağmen daha düşük bir puan alabilir.

Gösterge Paneli

Doktor’un buradaki çalışmasına dayanarak Stack Snippets’i kullanarak küçük bir Dashboard aracı yazdım . Umarım bu, bu cevaba bağlı zorluklarda bir düzen almamıza yardımcı olur.

Bu, özellikle çatışan cevaplar varsa, bir cevabın doğrulanması gerekiyorsa veya bir sonraki cevabın gönderilip gönderilemeyeceğini belirtir.

Ayrıca puanları olan tüm cevapların bir listesini ve tüm kullanıcıların lider tablosunu oluşturur. Lütfen yukarıdaki meydan okuma formatına uyun, böylece gösterge paneli yanıtlarınızı ilgili dizeleri okuyabilir. Aksi takdirde, lider panosuna dahil olmayabilir.

Herhangi bir hata tespit ederseniz veya aletin kullanışlılığının nasıl geliştirilebileceğine dair bazı fikirleriniz varsa lütfen bana bildirin ( ideal olarak sohbette ).


Kurallar düşündüğümden biraz daha katı çıktı. Sohbette biraz tartışma yaptıktan sonra, ödül bittikten biraz sonra kuralları rahatlatmayı düşünüyorum. Aşağıda düşünebileceğim seçenekler için 3 yorum yapacağım. Lütfen yorumlarınızı oylayarak tercihinizi belirtin.
Martin Ender

2
Kural kuraldır. Onları değiştirmeyin. Başka bir cevap göndermenin imkansız olması utanç verici olabilir, ancak bu kuralları değiştirmeyi haklı çıkarmaz.
Martin Ender

2
Her 10 cevapta ek bir bayt alın . Buna bağlı olarak, cevap puanını (M / (30 + N / 10)) ^ N olarak değiştirin . Bu geriye dönük olarak uygulanır, böylece bir sonraki cevap 32 bayta kadar kullanabilir. Puanlamadaki değişiklik, skor tablosundaki ilk iki sırayı etkilemeyecek, ancak diğer kullanıcılar biraz karıştırılacak.
Martin Ender

8
Her 5 cevapta ek bir bayt alın . Buna bağlı olarak, cevap puanını (M / (30 + N / 5)) ^ N olarak değiştirin . Bu geriye dönük olarak uygulanır, böylece bir sonraki cevap 35 bayta kadar kullanabilir. Puanlamadaki değişiklik, skor tablosundaki ilk iki sırayı etkilemeyecek, ancak diğer kullanıcılar biraz karıştırılacak.
Martin Ender

4
Siz insanlar tuhaf ve bükülmüşsünüz. Bunu kendine neden yaptın? (Yine de okumak eğlenceli: P)
Joe

Yanıtlar:


5

42. Piton aroması - 38

\?[^w$]*\$$|^P|\w.\)|w.?\+|w\^|[^?P]P$

Regex101'de Test Edildi

Son birkaç cevapta entropi eksikliği bana geliyordu ... (bunu daha önce yapmalıydım)

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)
\w.\)|\?[^-$]*\$$|[]^C]\w$|w[+^]
[]^C]\w$|\w.\)|-\$|w[+^]|\?[^w$]*\$$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)
\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)
\$..\\|\?[^w$]*\$$|w\^|[]^C]\w$
[]^C]\w$|\w.\)|w[[+^]|\?[^w$]*\$$
\?[^w$]*\$$|^P|\w.\)|w.?\+|w\^|[^?P]P$

Doğruluk doğrulandı.
Martin Ender

Programım 45 karakterden kısa bir cevap bulmakta zorlanıyor ...
Vi.

@Vi. En azından 38 çözüm olduğunu söyleyebilirim ama elbette eğer biri daha
düşmeyi

11

28. Python lezzet - 29

\.\)|P[.$?]|w\^|^[^|C\\]*$|^P

Regex101'de Test Edildi

Etrafta bir sürü keman yapıldı - sette 4 numara, setteki bir regex'in alt dizisi olduğu için muhtemelen en büyük acıdır ve ayrıca setteki bir regex'in ekini paylaşır.

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\

Doğruluk doğrulandı.
Martin Ender

9

24 - Python lezzet - 29

^(..[^^].{4,22}\$|[^?]+\w)$|2

Burada test edildi

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2

1
Doğruluk doğrulandı.
feersum

8

10. Python lezzet - 19

^[\w^]*$|!|]P|G]\$$

Regex101'de test edilmiştir .

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)*[^\\|]*[^\]]$

Doğruluk doğrulandı.
FryAmTheEggman

8

8. ECMAScript tadı - 14 bayt

[^?][PG]$|<|PG

gösteri

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG

Doğruluk doğrulandı.
FryAmTheEggman

Demo bağlantısı düzeltildi.
Martin Ender

@FryAmTheEggman Komut, yorumları okuyor, ancak yalnızca " dize doğruluğu" ifadesini bir alt dize olarak görüyor (yoksayılıyor).
Martin Ender 14:14

@ MartinBüttner Teşekkürler, bilmek güzel.
FryAmTheEggman

3
1 singlehandedly 10 kat daha zor bu zorluğu yapmak için
SP3000


7

9. Python lezzet - 28

^[^\\|]*(\\\\)*[^\\|]*[^\]]$

Regex101'de Test Edildi

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)*[^\\|]*[^\]]$

Bunu bir dakika önce çalışmamasını da buldum. Bir bayrağın eşleşmesi için iki ters eğik çizgi gerekir, böylece bir bayrağın onu kurtarabileceğini sanmıyorum.
feersum

Boğmaca .... + yerine * olmalıydı. Cevabımı düzenledim
ndc5057 13:14

Doğruluk doğrulandı.
FryAmTheEggman 13:14

7

23. PCRE lezzet - 28

([^\\}<]{3}|][^]]|^).?[$PG]$

Regex101'de test edilmiştir.

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$

Ne yapar [^]?
feersum

@ feersum ]Bir karakter sınıfının ilk elemanı olan (isteğe bağlı olumsuzlamadan sonra) çoğu lezzetlerde, karakter sınıfının yalnızca bir parçasıdır ]ve kapanmaz (çünkü boş karakter sınıfları biraz anlamsızdır). Yani [^]]her şeyle eşleşir ]. Önemli istisna, boş karakter sınıflarına izin veren ECMAScript'tir. Bu durumda []hiçbir şeyle eşleşmiyor , ECMAScript bir değiştiriciye sahip olmadığı ve bir okuma yazmak için bir acı olduğu için uygun olan herhangi bir karakter gibi davranıyor (?!)ve [^]eşleşiyor . s[\s\S]
Martin Ender

Doğruluk doğrulandı.
Martin Ender

7

11. Python - 29

^(.{,4}|.{9}|.{16,19}|.{5}P)$

► RegexPlanet'te Test Edin

Neredeyse tüm geçersiz cevapların geçerli olanlardan farklı bir uzunluğu vardır. Bu regex bundan yararlanır.

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

Doğruluk doğrulandı.
feersum

7

29. PCRE aroması - 28

^..(.[!)3G^w]|$)|\^.{7}$|G\)

Regex101'de Test Edildi

Bu cevap hala çalışıyor ...

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\

Doğruluk doğrulandı.
Martin Ender

1
Güzel!
Sıkışma

Bunu genetik algoritma kullanarak hesaplamaya çalışıyordum, ama sadece 30 karakterli regex üretti ... Şimdi bir sonraki cevabı elde etmek için çalışıyor. Geçerli sonuç - 32 karakter.
Vi.

@Vi Bir genetik algoritma, orada sahip olduğunuz ilginç fikirler: P
Sp3000

@ Sp3000, Şimdi 30 karakter ... Ama başka bir cevaplayıcı geldi, bu yüzden yeniden başlatmanız gerekiyor.
Vi.

6

31. Perl lezzet - 29

[?[CP(].[-<)|w]|^P|^[^C|\\]*$

Nasıl çalıştığını bilmiyorum , ilk baskınıma göre genetik algoritmalara girdi . Orada program çıktısı cevabı bahseder.

Bir sonraki cevap eşleşmek zorunda:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

ve başarısız olmak:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$

Doğruluk doğrulandı.
Martin Ender

Ahaha nice - önceki cevapları popülasyon için tohum olarak kullandın mı, yoksa sadece öncekine benzeyen mi oldu?
Sp3000

Geçen ve başarısız olan dizeler ilk yapı taşları olarak kullanılır. Yerel minimumlar nedeniyle bir süre sonra yasaklandılar. Program günlüğüne nasıl gittiğini görebilirsiniz: "metric =" ifadesinden sonraki parantez içindeki sayı, ne kadar hızlı ilerleyeceğimizin ölçüsüdür. Uzun süre düşüktür, mevcut cevapları yasaklıyoruz ve sıfırlıyoruz.
Vi.

(Bu arada, bir sonraki cevap için 31 karakter adayı zaten bulundu)
Vi.

Oh, limit arttı mı? Değil 29mi? Bu şekilde yakında bitmeyecek ... En büyük zorluk, son regex'i bulmak olmasına rağmen.
Vi.

6

32. PCRE - 30 bayt

^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)

Regex101'de Test Edildi

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir :

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

Ve bu dizgelerde başarısız olun :

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)

1
Doğruluk doğrulandı.
Martin Ender

Neden "başarısız" listesine eklenir? Kendisi zaten başarısız oluyor, bu yüzden değişiklik yapmadan bir sonraki cevap olarak hizmet edebilir. Sanırım her cevap için hangi listenin ekleneceğine dair bir seçenek yok.
Vi.

3
@Vi. Sanırım hwnd bugün kendini iyi hissediyor
Sp3000

Devam ettikçe daha da zorlaştıracağım.
hwnd

5

1. ECMAScript lezzet - 2 bayt

^P

Regex101 üzerinde test edin.

İlk eşleşme kümesi PPCGve başarısız küme [PPCG]. Bu nedenle, bu regex basitçe dize olduğunu test başlar ile P.

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P

Ve bu dizgelerde başarısız olun:

[PPCG]

3
Doğruluk doğrulandı.
Beta Çürüme

5

3. ECMAScript lezzet - 6 bayt

[^\]]$

Burada test et

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P

Ve bu dizelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$

1
Doğruluk doğrulandı.
Beta Çürüme

5

7. Python lezzet - 16

(?<!\\..)(?!]).$

Regex101'de Test Edildi

Maç listesine bir \ eklemeliyim :)

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P

Doğruluk doğrulandı.
NinjaBearMonkey 13:14

Bu… bu sapkın.
wchargin

@WChargin Thanks :) Bazı user23013 veya n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ cevaplarına bakmalısınız; bazıları oldukça 'sapkın';)
FryAmTheEggman

5

12. ECMAScript tadı - 17

!|[^?]P(CG|G..)?$

Burada test et .

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

Doğruluk doğrulandı.
Martin Ender

5

22. PCRE Lezzet - 29 bayt

Orjinal no. 22 1 saat boyunca değiştirilmediğinden, geçersiz olduğunu kabul ediyorum.

^.{3,23}[.-~]..\$$|[^P?][PG]$

gösteri

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P

1
Doğruluk doğrulandı. (Ve evet, bu doğru, önceki 22 artık geçersiz.)
Martin Ender

5

26. Piton aroması - 28

^..(.[!G)(3w^]|.{7}$|$)|\$\?

Regex101'de Test Etme

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~

Doğruluk doğrulandı.
Martin Ender

5

30. Piton aroması - 28

[[?C(].[-!)|w]|^P|^[^C|\\]*$

Regex101'de Test Edildi

Bir irade olduğunda ...

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$

Doğruluk doğrulandı.
jimmy23013

5

37. Perl lezzet - 30

\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)

Regex101'de Gönderme .

Çözüm, önceki gibi aynı program tarafından üretildi. Program ayrıca 29 karakterli bir çözüm de bastı \?[^$w]*\$|[]^C]\w)$|w.]|\w.\, nedenini bilmiyorum, yanlış biçimlendirilmiş bir regex gibi görünüyor ...

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)
\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)

Doğruluk doğrulandı.
Martin Ender

Ahaha Oldukça kızgınım. İlk yarıya kadar geldikten sonra bunu anlamadım: P
Sp3000

5

40. PCRE - 33 bayt

[]^C]\w$|\w.\)|w[[+^]|\?[^w$]*\$$

Regex101'de Test Edildi

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir :

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)
\w.\)|\?[^-$]*\$$|[]^C]\w$|w[+^]

Ve bu dizgelerde başarısız olun :

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)
\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)
\$..\\|\?[^w$]*\$$|w\^|[]^C]\w$
[]^C]\w$|\w.\)|w[[+^]|\?[^w$]*\$$

Doğruluk doğrulandı.
Vi.

1
35'im

Ve 32 karakterlik bir cevap için 3 seçeneğim var, ancak tüm meydan okuma biraz sıkıcı oldu (özellikle Regex101'in gönderimleri ve başarısız / başarılı dizelerin listesi). Biri isterse cevap gönderebilirim.
Vi.

4

4. ECMAScript lezzet - 5 bayt

^\^?P

Burada test et .

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P

1
Doğruluk doğrulandı.
Beta Çürüme

4

5. ECMAScript tadı - 6 bayt

^[P^]P

Regex101'de test edilmiştir .

Ayarlanan başarı ile işleri biraz renklendirme zamanı.

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P

Doğruluk doğrulandı.
FryAmTheEggman 13:14

4

6. ECMAScript lezzet - 9 bayt

[^?][PG]$

Regex101'de test edilmiştir .

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P

1
Doğruluk doğrulandı.
FireFly

4

14. PCRE lezzet - 25

([.$?]|G\])\$$|^\^?P|\]P$

Regex101'de Test Edildi

Bu oldukça zorlaşmaya başladı.

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

Doğruluk doğrulandı.
Martin Ender 14:14

4

15. PCRE lezzet - 26

([P.$?]\$|[]^]P|G\]\$|CG)$

Regex101'de Test Edildi

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

1
Doğruluk doğrulandı.
FireFly

4

16. PCRE tadı - 21

^[^?]*[PG]$|[?$].*\$$

Regex 101'de test edilmiştir .

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$

Uyuşmuyor PPCG.
jimmy23013

@ user23013 düzeltildi
es1024

Doğruluk doğrulandı.
jimmy23013

4

25. PCRE lezzet - 29

^(..[^^].{4,22}\$|[^?]+\w)$|~

Burada test edildi. (Test regex, \neşleşmenin birden fazla satıra yayılmadığından emin olmak için bir ek içerir . Her bir dizeyle eşleşmek için bu gerekli değildir.)

Düşük asılı bir meyveydi! :) Yine de plannapus'u tebrik etmek zorundayım, bu regex mevcut test setleri için inanılmaz derecede şık. Bu cevabı yükseltmek istiyorsanız, bir öncekini de arttırdığınızdan emin olun!

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~

1
Doğruluk doğrulandı.
feersum

4

35. PCRE - 35 bayt

^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)

Regex101'de Test Edildi

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir :

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

Ve bu dizgelerde başarısız olun :

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)

Doğrulayıcımda hata yok.
Vi.

Doğruluk doğrulandı. (@Vi., Gösterge paneli bu belirli ifadeyi arar.)
Martin Ender

Bu cümleyi kullanmakla ilgili düşündüm, ancak yorumumu yetkili kılmak isteyip istemediğimden emin değildim.
Vi.

Daha önce bahsettiğim 34 karakterlik cevabım burada işe yarıyor. 4 saat beklemek (veya böyle) ...
Vi.

Bilgisayar korsanlığını zahmet etmiyorum - Bilgisayara devrediyorum. Belki bir StackExchange API kullanarak cevap gönderme bot yazmak? ..
Vi.

4

36. Piton aroması - 32

\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)

Regex101'de Test Edildi

Üç adet 32 ​​bayt regex hazırım ve neyse ki bunlardan biri hala çalışıyor: D

Bir sonraki cevap aşağıdaki dizelerle eşleşmelidir:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)

Ve bu dizgelerde başarısız olun:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)

1
Doğruluk doğrulandı.
Martin Ender

Bir Perl regex olarak doğruluk da doğrulanmıştır.
Vi.

Dilerim, gönderilecek 30 karakterden oluşan bir yanıtım olduğundan, sorunun yarına kadar etkisiz kalacağını umalım.
Vi.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.