Schreiben Sie einen regulären Ausdruck, der einer bestimmten Zeichenfolge entspricht, die aus drei nicht negativen, durch Leerzeichen getrennten Ganzzahlen besteht, und zwar genau dann, wenn die letzte Ganzzahl die Summe der beiden vorhergehenden ist. Die Antworten können für ganze Zahlen eines beliebigen Zahlensystems mit einem Radix zwischen 2 und 10 erfolgen.
Testfälle
Diese sollten fehlschlagen:
0 1 2
10 20 1000
Diese sollten übereinstimmen mit:
10 20 30
28657 46368 75025
0 0 0
Regeln
Ihre Antwort sollte aus einem einzelnen regulären Ausdruck ohne zusätzlichen Code bestehen (mit Ausnahme einer optionalen Liste von regulären Ausdrucksmodifikatoren, die erforderlich sind, damit Ihre Lösung funktioniert). Sie dürfen keine Funktionen der Regex-Variante Ihrer Sprache verwenden, mit denen Sie Code in der Hosting-Sprache aufrufen können (z. B. der e-Modifikator von Perl).
Bitte geben Sie in Ihrer Antwort Ihren Regex-Geschmack an.
Dies ist Regex-Golf, also gewinnt der kürzeste Regex in Bytes. Wenn in Ihrer Sprache Begrenzer (normalerweise /.../) für reguläre Ausdrücke erforderlich sind, zählen Sie die Begrenzer nicht selbst. Wenn Ihre Lösung Modifikatoren erfordert, fügen Sie ein Byte pro Modifikator hinzu.
Dank an Martin Ender und jaytea für die Regex-Golfregeln.
Ich habe Grund zu der Annahme, dass es basierend auf der Lösung von Martin Ender möglich ist , Ganzzahlen mit Regex zu finden und zu erhöhen .
/e
Modifikator von Perl 5 gilt nur für Ersetzungen und ist nicht die einzige Möglichkeit, externen Code auszuführen. Auch dies disqualifiziert Perl 6 vollständig, da ein regulärer Ausdruck nur eine Methode mit zusätzlicher Syntax ist. (Der Grund dafür ist, dass reguläre Ausdrücke einfacher zu lesen und zu schreiben sind.) Daher werden alle Funktionen, die in archaischen regulären Ausdrücken benötigt werden, nicht benötigt (oder sind enthalten), da Sie gerade Perl 6-Code eingegeben haben. (es wahrscheinlich Sinn ist nicht möglich , diese Herausforderung zu tun , wenn Sie auf regex spezifischen Code begrenzen nur) /^(\d+)**3%' '$ <?{$0[2]==[+] $0[0,1]}>/
oder /^(\d+)' '(\d+)' '(\d+)$ <?{$2==$0+$1}>/
oder/^(\d+)' '(\d+){}" {$0+$1}"$/