Escriba una expresión regular que coincida con una cadena dada que consta de tres enteros no negativos separados por espacios si y solo si el último entero es la suma de los dos anteriores. Las respuestas pueden ser para enteros de cualquier sistema de numeración con radix entre 2 y 10.
Casos de prueba
Estos deberían fallar:
0 1 2
10 20 1000
Estos deben coincidir con:
10 20 30
28657 46368 75025
0 0 0
Reglas
Su respuesta debe consistir en una única expresión regular, sin ningún código adicional (excepto, opcionalmente, una lista de modificadores de expresión regular necesarios para que su solución funcione). No debe utilizar las características de la expresión regular de su idioma que le permiten invocar código en el idioma de alojamiento (por ejemplo, el modificador e de Perl).
Por favor, especifique su sabor regex en su respuesta.
Esto es regex golf, por lo que gana la expresión regular más corta en bytes. Si su idioma requiere delimitadores (generalmente /.../) para denotar expresiones regulares, no cuente los delimitadores. Si su solución requiere modificadores, agregue un byte por modificador.
Créditos a Martin Ender y Jaytea por las reglas de regex-golf.
Tengo razones para creer que es posible en base a la solución de Martin Ender para encontrar e incrementar enteros con expresiones regulares .
/e
modificador de Perl 5 solo se aplica a las sustituciones, y no es la única forma de ejecutar código externo. Además, esto descalifica a Perl 6 por completo, ya que una expresión regular es solo un método con sintaxis adicional. (La razón es que hace que las expresiones regulares sean más fáciles de leer y escribir) Como resultado, todas las características necesarias en expresiones regulares arcaicas no son necesarias (ni están incluidas), ya que acaba de ingresar el código Perl 6. (lo que significa que probablemente no es posible hacer este reto si sólo limitar a código específico de expresiones regulares) /^(\d+)**3%' '$ <?{$0[2]==[+] $0[0,1]}>/
o /^(\d+)' '(\d+)' '(\d+)$ <?{$2==$0+$1}>/
o/^(\d+)' '(\d+){}" {$0+$1}"$/