Inny rodzaj golfa Meta Regex


42

Uwaga: W ślad za popularnym żądaniem nieco złagodziłem zasady:

  • Maksymalny rozmiar wyrażenia regularnego rośnie o 1 bajt co 5 odpowiedzi . Odpowiedź N może wykorzystywać do 29 + ⌈N / 5⌉ bajtów.
  • Wynik każdej odpowiedzi będzie wynosić (M / (30 + N / 5)) N

W regex golfu otrzymujesz dwa zestawy ciągów i zostajesz poproszony o utworzenie najkrótszego wyrażenia pasującego, który pasuje do wszystkich ciągów w pierwszym zestawie, ale zawodzi w przypadku wszystkich ciągów w drugim zestawie.

Tak właśnie zrobimy, ale za każdym razem, gdy ktoś odpowie, jego wyrażenie regularne zostanie dodane do jednego z dwóch zestawów ciągów (według własnego wyboru). Dlatego w tym wyzwaniu istnieje ścisła kolejność odpowiedzi.

Przejdźmy przez przykład:

  • Powiedzmy, że zaczynam to abc(czego nie zrobię) i umieszczam w zestawie meczów .
  • Wtedy poprawna druga odpowiedź byłaby a, ponieważ pasuje do powyższego (i nie ma żadnych ciągów, które jeszcze nie powinny zawieść). Powiedz, że ta odpowiedź trafia do zestawu błędów .
  • Teraz trzecia odpowiedź musi się zgadzać, abcale nie działa a. Możliwa jest trzecia odpowiedź b. Umieśćmy to w zestawie meczów .
  • Czwarta odpowiedź musi teraz pasować abci b, ale się nie powiedzie a. Nie zezwalamy na powielanie odpowiedzi, więc prawidłowym wyrażeniem regularnym byłoby c|b.

Ważne jest, aby twoja odpowiedź była jak najkrótsza. Może to być trywialne w przypadku pierwszych kilku odpowiedzi, ale gdy otrzymamy kilka odpowiedzi, powinno być coraz trudniej uzyskać pożądane dopasowanie w jak najmniejszej liczbie znaków.

W przypadku rzeczywistego wyzwania, początkowo zestaw meczów zawiera, PPCGa zestaw błędów zawiera [PPCG], a ja już podałem pierwszą odpowiedź.

Odpowiadanie

Kluczową rzeczą do zrozumienia w tym wyzwaniu jest to, że tylko jedna osoba może odpowiedzieć na raz, a każda odpowiedź zależy od poprzedniej .

Nigdy nie powinny być dwie odpowiedzi z tym samym N. Jeśli dwie osoby jednocześnie odpowiedzą na niektóre N, osoba, która odpowiedziała później (nawet jeśli jest to różnica kilku sekund), powinna uprzejmie usunąć swoją odpowiedź.

Aby ten przebieg przebiegał nieco płynniej, postaraj się przestrzegać następujących kroków podczas publikowania odpowiedzi:

  • Upewnij się, że ktoś niezależnie zweryfikował poprawność poprzedniej odpowiedzi (i zostawił odpowiedni komentarz).
  • Weź dwa zestawy testowe znalezione w poprzedniej odpowiedzi i napisz wyrażenie regularne pasujące do wszystkich łańcuchów w jednym zestawie, a żaden w drugim.
  • Opublikuj swoją odpowiedź w następującym formacie:

    # 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]
    

    gdzie Njest numer twojej odpowiedzi. Proszę skopiować [match set]i [fail set]od poprzedniej odpowiedzi, i dołączyć swój regex do jednego z nich.

    Jest to absolutnie niezbędne do podjęcia wyzwania! Udostępniłem narzędzie pulpitu nawigacyjnego dla wyzwania, które pomaga w prowadzeniu księgowości i opiera się na powyższym szablonie. (Zobacz dół posta.)

  • Inny użytkownik powinien teraz przejrzeć przesłane zgłoszenie i zostawić komentarz „Poprawność zweryfikowana”, jeśli odpowiedź jest zgodna ze wszystkimi zasadami (patrz poniżej). Jeśli nie, powinni zostawić komentarz wskazujący na wszelkie wady. Masz wtedy 15 minut na rozwiązanie tych problemów. Jeśli tego nie zrobisz, twoja odpowiedź zostanie uznana za nieważną, powinna zostać usunięta, a ktoś inny może opublikować odpowiedź uzupełniającą na poprzednią. (Jeśli tak się stanie, możesz przesłać nową odpowiedź w dowolnym momencie).

Przepisy te mogą wydawać się dość surowe, ale są konieczne, aby uniknąć nieprawidłowych odpowiedzi gdzieś w łańcuchu.

Zasady

  • Użytkownik może przesłać tylko jedną odpowiedź na okres 4 godzin. (Ma to na celu uniemożliwienie użytkownikom ciągłego oglądania pytania i udzielania jak największej odpowiedzi).
  • Użytkownik nie może przesłać dwóch odpowiedzi z rzędu. (np. odkąd przesłałem odpowiedź 1, nie mogę odpowiedzieć 2, ale mógłbym zrobić 3)
  • Nie edytuj odpowiedzi, które zostały zweryfikowane. (Nawet jeśli znajdziesz sposób, aby go skrócić!)
  • W przypadku wykrycia błędu na wcześniejszym etapie łańcucha (tj. Po opublikowaniu odpowiedzi uzupełniających), obraźliwa odpowiedź powinna zostać usunięta i zostanie usunięta z zestawu ciągów, w których nowe zgłoszenia powinny zawieść. Jednak wszystkie odpowiedzi, które zostały opublikowane od tego czasu, nie powinny być zmieniane w celu odzwierciedlenia.
  • Wyraźnie określ jeden smak, w którym wyrażenie regularne jest ważne. Możesz wybrać dowolny smak, który można swobodnie testować online. Na StackOverflow znajduje się dobra lista testerów online . W szczególności powinny być przydatne Regex101 i RegexPlanet , ponieważ obsługują one szeroką gamę smaków. W odpowiedzi podaj link do testera, który wybrałeś. Dzięki przejściu na gskroniowe i multiline modyfikatory w testerze, można przetestować wszystkie struny naraz, po jednym z każdej linii (te modyfikatory nie są wliczane do Twojego regex wielkości, ponieważ nie są one potrzebne na każdym indywidualnym ciąg).
  • Wyrażenie regularne nie może być puste.
  • Twoje wyrażenie regularne dla odpowiedzi N nie może być dłuższe niż 29 + ⌈N / 5⌉ bajtów. Tj. Odpowiedzi od 1 do 5 mogą wykorzystywać do 30 bajtów (włącznie), odpowiedzi od 6 do 10 mogą wykorzystywać do 31 bajtów ... odpowiedzi od 31 do 35 mogą wykorzystywać do 36 bajtów. Sprawdź pulpit nawigacyjny, aby zobaczyć, ile znaków może użyć następna odpowiedź.
  • Wyrażenie regularne nie może być identyczne z żadnym łańcuchem w żadnym zestawie testowym.
  • Nie umieszczaj ograniczników w przesyłanych danych ani liczbie bajtów, nawet jeśli używa ich odpowiedni język hosta. Jeśli wyrażenie regularne używa modyfikatorów, dodaj jeden bajt na modyfikator do rozmiaru wyrażenia regularnego. Np. /foo/iMiałby 4 bajty.

Punktacja

Wynik każdej odpowiedzi jest obliczany jako (M / (30 + N / 5)) N , gdzie M to wielkość wyrażenia regularnego w bajtach, a N to liczba. Wynik każdego użytkownika jest iloczynem wszystkich jego odpowiedzi. Użytkownik z najniższym ogólnym wynikiem wygrywa. W mało prawdopodobnym przypadku remisu wygrywa użytkownik z najnowszym przesłaniem. Zaakceptuję najnowszą odpowiedź tego użytkownika.

Jeśli wolisz sumowanie wyników, możesz obliczyć wynik każdej odpowiedzi jako N * (log (M) - log (30)) i zsumować je dla wszystkich odpowiedzi. To da taką samą kolejność liderów.

Nie ma potrzeby, aby obejmować ocenę odpowiedzi na odpowiedź, tylko zgłosić M . Pulpit zadań w dolnej części pytania obliczy wyniki, a w przypadku dwóch bardzo bliskich wyników dokładnie sprawdzę wyniki przy użyciu typów o dowolnej dokładności.

Pamiętaj, że wynik każdej odpowiedzi jest mniejszy niż 1, więc możesz poprawić swój ogólny wynik, podając nową odpowiedź. Im krótsze są wszystkie zgłoszenia, tym bardziej skutecznie możesz obniżyć swój wynik. Co więcej, późniejsze odpowiedzi mogą osiągnąć niższy wynik, chociaż są dłuższe, ze względu na rosnący wykładnik.

Deska rozdzielcza

Napisałem małe narzędzie Dashboard, wykorzystujące fragmenty stosu, oparte na pracy Optymalizatora tutaj . Mam nadzieję, że pomoże nam to uporządkować te wyzwania zależne od odpowiedzi.

Spowoduje to wyświetlenie bieżącego statusu wyzwania - w szczególności, jeśli istnieją sprzeczne odpowiedzi, jeśli odpowiedź wymaga weryfikacji lub jeśli można opublikować następną odpowiedź.

Tworzy również listę wszystkich odpowiedzi z wynikami, a także tabelę wyników wszystkich użytkowników. Trzymaj się powyższego formatu wyzwania, aby pulpit nawigacyjny mógł odczytać odpowiednie ciągi z twoich odpowiedzi. W przeciwnym razie możesz nie zostać uwzględniony w tabeli wyników.

Daj mi znać ( najlepiej na czacie ), jeśli zauważysz jakieś błędy lub masz jakieś pomysły, w jaki sposób można poprawić użyteczność narzędzia.


Zasady okazały się nieco surowsze niż zamierzałem. Po krótkiej dyskusji na czacie zastanawiam się nad złagodzeniem zasad nieco po zakończeniu nagrody. Zamieszczę 3 komentarze do opcji, które mogę wymyślić poniżej. Wskaż swoje preferencje, głosując na komentarze.
Martin Ender

2
Zasady to zasady. Nie zmieniaj ich. Szkoda, że ​​opublikowanie kolejnej odpowiedzi jest prawie niemożliwe, ale nie usprawiedliwia to zmiany reguł.
Martin Ender

2
Pozwól na dodatkowy bajt co 10 odpowiedzi. Odpowiednio do zmiany odpowiedzi na wynik (M / (30 + N / 10)) ^ N . Zostanie to zastosowane z mocą wsteczną, więc następna odpowiedź może zająć do 32 bajtów. Zmiana punktacji nie wpłynie na dwa pierwsze miejsca w tabeli liderów, ale pozostali użytkownicy zostaną nieco przetasowani.
Martin Ender

8
Pozwól na dodatkowy bajt co 5 odpowiedzi. Odpowiednio do zmiany odpowiedzi na wynik (M / (30 + N / 5)) ^ N . Zostanie to zastosowane z mocą wsteczną, więc następna odpowiedź może zająć do 35 bajtów. Zmiana punktacji nie wpłynie na dwa pierwsze miejsca w tabeli liderów, ale pozostali użytkownicy zostaną nieco przetasowani.
Martin Ender

4
Wy ludzie jesteście dziwni i pokręceni. Dlaczego mielibyście to sobie robić? (Fajnie jest czytać: P)
Joe

Odpowiedzi:


5

42. Smak Pythona - 38

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

Testowane na Regex101

Brak entropii w ostatnich kilku odpowiedziach dotarł do mnie ... (powinienem to zrobić wcześniej)

Następna odpowiedź musi pasować do następujących ciągów:

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$]*\$$

I zawiodłem na tych ciągach:

[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$

Poprawność zweryfikowana.
Martin Ender

Mój program stara się znaleźć odpowiedź o długości mniejszej niż 45 znaków ...
Vi.

@Vi. Cóż, mogę powiedzieć, że istnieje przynajmniej 38 rozwiązanie, ale oczywiście byłoby interesujące, gdyby komuś udało się obniżyć :)
Sp3000

11

28. Smak Python - 29

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

Testowane na Regex101

Wiele manipulacji zostało zrobionych - numer 4 w zestawie przepustek jest prawdopodobnie największym bólem, ponieważ jest to podciąg wyrażenia regularnego w zestawie błędów, a także dzieli sufiks z innym wyrażeniem regularnym w zestawie błędów.

Następna odpowiedź musi pasować do następujących ciągów:

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

I zawiodłem na tych ciągach:

[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\\

Poprawność zweryfikowana.
Martin Ender

9

24 - smak Pythona - 29

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

Testowane tutaj

Następna odpowiedź musi pasować do następujących ciągów:

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]$

I zawiodłem na tych ciągach:

[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
Poprawność zweryfikowana.
feersum

8

10. Smak Python - 19

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

Testowane na Regex101 .

Następna odpowiedź musi pasować do następujących ciągów:

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

I zawiodłem na tych ciągach:

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

Poprawność zweryfikowana.
FryAmTheEggman

8

8. Smak ECMAScript - 14 bajtów

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

Próbny

Następna odpowiedź musi pasować do następujących ciągów:

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

I zawiodłem na tych ciągach:

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

Poprawność zweryfikowana.
FryAmTheEggman

Naprawiono link demonstracyjny.
Martin Ender

@FryAmTheEggman Skrypt odczytuje komentarze, ale szuka tylko „sprawdzonej poprawności” jako ciągu podrzędnego (ignorując wielkość liter).
Martin Ender

@ MartinBüttner Dzięki, dobrze wiedzieć.
FryAmTheEggman

3
+1 za samodzielne uczynienie tego wyzwania 10 razy trudniejszym
Sp3000


7

9. Smak Python - 28

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

Testowane na Regex101

Następna odpowiedź musi pasować do następujących ciągów:

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

I zawiodłem na tych ciągach:

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

Przekonałem się też, że to nie działało minutę temu. Wymaga dwóch odwrotnych ukośników, aby dopasować, więc nie sądzę, żeby flaga mogła to uratować.
feersum

Ups .... Powinien być * zamiast +. Zredagowałem swoją odpowiedź
ndc5057

Sprawdzono poprawność.
FryAmTheEggman

7

23. Smak PCRE - 28

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

Testowane na Regex101.

Następna odpowiedź musi pasować do następujących ciągów:

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]$

I zawiodłem na tych ciągach:

[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]$

Co ma [^]zrobić?
feersum

@feersum W większości odmian, a ]jako pierwszy element klasy znaków (po opcjonalnej negacji), jest tylko ]wewnątrz klasy znaków i nie zamyka się (ponieważ puste klasy znaków są nieco bezcelowe). Więc [^]]pasuje do wszystkiego oprócz ]. Godnym uwagi wyjątkiem jest ECMAScript, który dopuszcza puste klasy znaków. W takim przypadku []nic nie pasuje, działa jak (?!)i [^]pasuje do dowolnego znaku, co jest wygodne, ponieważ ECMAScript nie ma smodyfikatora i trudno [\s\S]jest wpisać odczyt.
Martin Ender

Poprawność zweryfikowana.
Martin Ender

7

11. Python - 29

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

► Test w RegexPlanet

Prawie wszystkie nieprawidłowe odpowiedzi mają inną długość niż wszystkie prawidłowe. Ten wyrażenie regularne wykorzystuje to.

Następna odpowiedź musi pasować do następujących ciągów:

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

I zawiodłem na tych ciągach:

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

Poprawność zweryfikowana.
feersum

7

29. Smak PCRE - 28

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

Testowane na Regex101

Ta odpowiedź wciąż działa ...

Następna odpowiedź musi pasować do następujących ciągów:

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\)

I zawiodłem na tych ciągach:

[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\\

Poprawność zweryfikowana.
Martin Ender,

1
Miły! Z wyjątkiem przetasowań, właśnie to miałem
Sp3000,

Próbowałem to obliczyć za pomocą algorytmu genetycznego, ale przyniosło to tylko 30 znaków wyrażenia regularnego ... Teraz uruchomiłem go, aby uzyskać następną odpowiedź. Aktualny wynik - 32 znaki.
Vi.

@Vi Algorytm genetyczny eh, ciekawe pomysły, które tam masz: P
Sp3000,

@ Sp3000, teraz 30 znaków ... Ale przyszła kolejna odpowiedź, więc musisz zrestartować.
Vi.

6

31. Smak Perla - 29

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

Nie wiem, jak to działa, został wyprodukowany przez moją pierwszą wyprawę do algorytmów genetycznych . Jest wyjście programu, które wspomina odpowiedź.

Następna odpowiedź musi pasować:

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\)

i zawieść:

[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|\\]*$

Poprawność zweryfikowana.
Martin Ender

Ahaha fajnie - czy użyłeś poprzednich odpowiedzi jako nasion dla populacji, czy po prostu wyglądało to tak jak poprzednie?
Sp3000,

Przepuszczające i niedziałające łańcuchy są używane jako początkowe bloki konstrukcyjne. Jednak po pewnym czasie zostali zbanowani ze względu na lokalne minimum. Możesz zobaczyć, jak to idzie w dzienniku programu: liczba w nawiasach po „metric =” jest miarą tego, jak szybko idziemy do przodu. Długo jest niski, banujemy bieżące odpowiedzi i resetujemy.
Vi.

(Tymczasem 31-znakowy kandydat do następnej odpowiedzi został już znaleziony)
Vi.

Och, limit wzrósł? To nie 29jest W ten sposób wkrótce się to nie skończy ... Myślę, że głównym wyzwaniem jest znalezienie ostatniego, ostatecznego wyrażenia regularnego.
Vi.

6

32. PCRE - 30 bajtów

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

Testowane na Regex101

Następna odpowiedź musi pasować do następujących ciągów :

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\)

I zawiodłem na tych ciągach :

[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
Poprawność zweryfikowana.
Martin Ender

Dlaczego jest dodawany do listy „błędów”? Już się nie powiedzie, więc może służyć jako następna odpowiedź bez modyfikacji. Przypuszczam, że dla każdej odpowiedzi nie ma wyboru, do której listy ma zostać dołączona.
Vi.

3
@Vi.
Wydaje

Sprawię, że będzie to trudniejsze, ponieważ będzie kontynuowane.
hwnd

5

1. Smak ECMAScript - 2 bajty

^P

Przetestuj na Regex101.

Początkowy zestaw pasujący to PPCGzestaw niepoprawny [PPCG]. Dlatego te wyrażenie regularne po prostu sprawdza, czy ciąg zaczyna się od P.

Następna odpowiedź musi pasować do następujących ciągów:

PPCG
^P

I zawiodłem na tych ciągach:

[PPCG]

3
Poprawność zweryfikowana.
Beta Decay

5

3. Smak ECMAScript - 6 bajtów

[^\]]$

Sprawdź to tutaj

Następna odpowiedź musi pasować do następujących ciągów:

PPCG
^P

I zawiodłeś na tych ciągach:

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

1
Poprawność zweryfikowana.
Beta Decay

5

7. Smak Python - 16

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

Testowane na Regex101

Musisz dodać \ do listy meczów :)

Następna odpowiedź musi pasować do następujących ciągów:

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

I zawiodłem na tych ciągach:

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

Poprawność zweryfikowana.
NinjaBearMonkey

To… to jest przebiegłe.
wchargin

@WChargin Dzięki :) Powinieneś sprawdzić niektóre odpowiedzi user23013 lub n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨d̷̰̀ĥ̷̳; niektóre są dość „przebiegłe”;)
FryAmTheEggman

5

12. Smak ECMAScript - 17

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

Sprawdź to tutaj .

Następna odpowiedź musi pasować do następujących ciągów:

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

I zawiodłem na tych ciągach:

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

Poprawność zweryfikowana.
Martin Ender

5

22. Smak PCRE - 29 bajtów

Ponieważ oryginał nr 22 nie jest modyfikowany przez 1 godzinę, zakładam, że stał się nieważny.

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

Próbny

Następna odpowiedź musi pasować do następujących ciągów:

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]$

I zawiodłem na tych ciągach:

[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
Poprawność zweryfikowana. (I tak, zgadza się, poprzednie 22 jest teraz nieważne.)
Martin Ender

5

26. Smak Python - 28

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

Test na Regex101

Następna odpowiedź musi pasować do następujących ciągów:

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}$|$)|\$\?

I zawiodłem na tych ciągach:

[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)$|~

Poprawność zweryfikowana.
Martin Ender

5

30. Smak Python - 28

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

Testowane na Regex101

Kiedy jest wola ...

Następna odpowiedź musi pasować do następujących ciągów:

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\)

I zawiodłem na tych ciągach:

[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|\\]*$

Poprawność zweryfikowana.
jimmy23013

5

37. Smak Perla - 30

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

Zgłoszenie na Regex101 .

Rozwiązanie zostało opracowane przez ten sam program co poprzednio. Program wydrukował również 29-znakowe rozwiązanie \?[^$w]*\$|[]^C]\w)$|w.]|\w.\, nie wiem dlaczego, ponieważ wygląda na zniekształconą regex ...

Następna odpowiedź musi pasować do następujących ciągów:

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\^|\|..\)

I zawiodłem na tych ciągach:

[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.\)

Poprawność zweryfikowana.
Martin Ender

Ahaha, jestem bardzo zirytowany, że nie dostałem tego po tym, jak doszedłem tak daleko z pierwszą połową: P
Sp3000,

5

40. PCRE - 33 bajty

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

Testowane na Regex101

Następna odpowiedź musi pasować do następujących ciągów :

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[+^]

I zawiodłem na tych ciągach :

[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$]*\$$

Poprawność zweryfikowana.
Vi.

1
Mam 35, ale nie jestem z tego zadowolony, więc zobaczę, czy mogę dostać coś bardziej interesującego
Sp3000,

I mam 3 opcje na 32-znakową odpowiedź, ale całe wyzwanie stało się trochę nudne (szczególnie księgowość zgłoszeń Regex101 i list ciągów błędów / przejść). Jeśli ktoś chce, mogę wysłać odpowiedź.
Vi.

4

4. Smak ECMAScript - 5 bajtów

^\^?P

Sprawdź to tutaj .

Następna odpowiedź musi pasować do następujących ciągów:

PPCG
^P

I zawiodłem na tych ciągach:

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

1
Poprawność zweryfikowana.
Beta Decay

4

5. Smak ECMAScript - 6 bajtów

^[P^]P

Testowane na Regex101 .

Czas nieco urozmaicić zestaw sukcesów.

Następna odpowiedź musi pasować do następujących ciągów:

PPCG
^P
^[P^]P

I zawiodłem na tych ciągach:

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

Poprawność zweryfikowana.
FryAmTheEggman

4

6. Smak ECMAScript - 9 bajtów

[^?][PG]$

Testowane na Regex101 .

Następna odpowiedź musi pasować do następujących ciągów:

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

I zawiodłem na tych ciągach:

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

1
Poprawność zweryfikowana.
FireFly,

4

14. Smak PCRE - 25

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

Testowane na Regex101

To zaczyna być dość trudne.

Następna odpowiedź musi pasować do następujących ciągów:

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

I zawiodłem na tych ciągach:

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

Poprawność zweryfikowana.
Martin Ender

4

15. Smak PCRE - 26

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

Testowane na Regex101

Następna odpowiedź musi pasować do następujących ciągów:

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

I zawiodłem na tych ciągach:

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

1
Poprawność zweryfikowana.
FireFly,

4

16. Smak PCRE - 21

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

Testowany na Regex 101 .

Następna odpowiedź musi pasować do następujących ciągów:

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

I zawiodłem na tych ciągach:

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

Nie pasuje PPCG.
jimmy23013

@ user23013 naprawiono
es1024

Poprawność zweryfikowana.
jimmy23013

4

25. Smak PCRE - 29

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

Testowane tutaj. (Wyrażenie testowe zawiera dodatkowe, \naby upewnić się, że żadne dopasowanie nie obejmuje wielu wierszy. Nie jest konieczne dopasowanie każdego łańcucha).

To był nisko wiszący owoc! :) Muszę pogratulować plannapusowi, ten regex jest niesamowicie elegancki dla obecnych zestawów testowych. Jeśli chcesz głosować za odpowiedzią, pamiętaj, aby głosować również na poprzednią!

Następna odpowiedź musi pasować do następujących ciągów:

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]$

I zawiodłem na tych ciągach:

[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
Poprawność zweryfikowana.
feersum

4

35. PCRE - 35 bajtów

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

Testowane na Regex101

Następna odpowiedź musi pasować do następujących ciągów :

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\)

I zawiodłem na tych ciągach :

[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\\|]+$|\.[)$-](?!.!)

Mój weryfikator nie wykazuje błędów.
Vi.

Poprawność zweryfikowana. (@Vi., Deska rozdzielcza szuka tego konkretnego wyrażenia.)
Martin Ender

Myślałem o użyciu tego wyrażenia, ale nie byłem pewien, czy chcę, aby mój komentarz był wiarygodny.
Vi.

Wydaje się, że moja inna wspomniana wcześniej 34-znakowa odpowiedź działa tutaj. Czekam 4 godziny (lub tak) ...
Vi.

Nie zawracam sobie głowy hakowaniem - deleguję to na komputer. Może napisz bota wysyłającego odpowiedź za pomocą StackExchange API? ..
Vi.

4

36. Smak Pythona - 32

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

Testowane na Regex101

Miałem przygotowane trzy 32-bajtowe wyrażenia regularne i na szczęście jeden z nich nadal działa: D

Następna odpowiedź musi pasować do następujących ciągów:

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\^|\|..\)

I zawiodłem na tych ciągach:

[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
Poprawność zweryfikowana.
Martin Ender,

Sprawdzana jest również poprawność wyrażenia regularnego Perla.
Vi.

Miejmy nadzieję, że pytanie będzie nieaktywne do jutra, ponieważ mam oczekującą odpowiedź na 30 znaków.
Vi.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.