Napisz wyrażenie regularne, które pasuje do danego ciągu składającego się z trzech nieujemnych liczb całkowitych oddzielonych spacją, jeśli i tylko wtedy, gdy ostatnia liczba całkowita jest sumą dwóch poprzednich. Odpowiedzi mogą dotyczyć liczb całkowitych dowolnego systemu liczbowego o podstawach od 2 do 10.
Przypadki testowe
Powinny one zawieść:
0 1 2
10 20 1000
Powinny one pasować:
10 20 30
28657 46368 75025
0 0 0
Zasady
Twoja odpowiedź powinna składać się z jednego wyrażenia regularnego, bez dodatkowego kodu (z wyjątkiem, opcjonalnie, listy modyfikatorów wyrażeń regularnych wymaganych do działania rozwiązania). Nie wolno używać funkcji smaku regularnego swojego języka, które pozwalają na wywołanie kodu w języku hostingowym (np. Modyfikator e Perla).
Podaj swój smak wyrażenia regularnego w swojej odpowiedzi.
To jest wyrażenie regularne, więc wygrywa najkrótszy wyrażenie regularne w bajtach. Jeśli twój język wymaga ograniczników (zwykle /.../) do oznaczania wyrażeń regularnych, nie licz samych ograniczników. Jeśli Twoje rozwiązanie wymaga modyfikatorów, dodaj jeden bajt na modyfikator.
Podziękowania dla Martina Endera i Jaytei za reguły gry w golfa.
Mam powód, by sądzić, że jest to możliwe w oparciu o rozwiązanie Martina Endera dotyczące wyszukiwania i zwiększania liczb całkowitych za pomocą wyrażenia regularnego .
/e
Modyfikator Perla 5 dotyczy tylko podstawień i nie jest jedynym sposobem uruchamiania zewnętrznego kodu. Również to całkowicie dyskwalifikuje Perl 6, ponieważ wyrażenie regularne jest tylko metodą z dodatkową składnią. (Powodem jest to, że sprawia, że wyrażenia regularne są łatwiejsze do odczytu i zapisu). W rezultacie wszystkie funkcje potrzebne w archaicznych wyrażeniach regularnych nie są potrzebne (lub włączone), jak właśnie wstawiłeś kod Perla 6. (co oznacza, że prawdopodobnie nie jest to możliwe, aby zrobić to wyzwanie, jeśli tylko ograniczać się do konkretnego kodu regex) /^(\d+)**3%' '$ <?{$0[2]==[+] $0[0,1]}>/
lub /^(\d+)' '(\d+)' '(\d+)$ <?{$2==$0+$1}>/
lub/^(\d+)' '(\d+){}" {$0+$1}"$/