Scrivi un'espressione regolare che corrisponda a una determinata stringa composta da tre numeri interi non negativi, separati da spazio se e solo se l'ultimo numero intero è la somma dei due precedenti. Le risposte possono essere per numeri interi di qualsiasi sistema numerico con una radice compresa tra 2 e 10.
Casi test
Questi dovrebbero fallire:
0 1 2
10 20 1000
Questi dovrebbero corrispondere:
10 20 30
28657 46368 75025
0 0 0
Regole
La tua risposta dovrebbe consistere in un unico regex, senza alcun codice aggiuntivo (tranne, facoltativamente, un elenco di modificatori regex necessari per far funzionare la tua soluzione). Non devi usare le caratteristiche del sapore regex della tua lingua che ti consentono di invocare il codice nella lingua di hosting (ad es. Modificatore di Perl e).
Si prega di specificare il sapore regex nella risposta.
Questo è regex golf, quindi vince il regex più breve in byte. Se la tua lingua richiede delimitatori (di solito /.../) per indicare espressioni regolari, non contare i delimitatori stessi. Se la tua soluzione richiede modificatori, aggiungi un byte per modificatore.
Ringraziamenti a Martin Ender e jaytea per le regole del regex-golf.
Ho motivo di credere che sia possibile basarsi sulla soluzione di Martin Ender per trovare e incrementare numeri interi con regex .
/e
modificatore di Perl 5 si applica solo alle sostituzioni e non è l'unico modo per eseguire codice esterno. Anche questo squalifica Perl 6 interamente come una regex è solo un metodo con sintassi aggiuntiva. (Il motivo è che rende le regex più facili da leggere e scrivere) Di conseguenza tutte le funzionalità necessarie nelle regex arcaiche non sono necessarie (o incluse) come hai appena inserito nel codice Perl 6. (il che significa che probabilmente non è possibile fare questa sfida se si limita a regex codice specifico) /^(\d+)**3%' '$ <?{$0[2]==[+] $0[0,1]}>/
o /^(\d+)' '(\d+)' '(\d+)$ <?{$2==$0+$1}>/
oppure/^(\d+)' '(\d+){}" {$0+$1}"$/