세 개의 연속 정수와 일치하는 정규식은 세 번째 정수가 첫 두 정수의 합입니다.


27

마지막 정수가 이전 두 정수의 합인 경우에만 음수가 아닌 공백으로 구분 된 세 개의 정수로 구성된 주어진 문자열과 일치하는 정규식을 작성하십시오. 답은 2에서 10 사이의 기수를 갖는 임의의 숫자 시스템의 정수일 수 있습니다.

테스트 사례

이것들은 실패해야합니다 :

0 1 2
10 20 1000

이것들은 일치해야합니다 :

10 20 30
28657 46368 75025
0 0 0

규칙

답은 추가 코드없이 단일 정규식으로 구성되어야합니다 (선택적으로 솔루션 작동에 필요한 정규식 수정 자 목록 제외). 호스팅 언어로 코드를 호출 할 수있는 언어 정규식 기능 (예 : Perl의 e 한정자)을 사용해서는 안됩니다.

답에 정규식 맛을 지정하십시오.

이것은 정규식 골프이므로 바이트 단위의 가장 짧은 정규식이 이깁니다. 언어에서 정규식을 나타 내기 위해 분리 문자 (일반적으로 /.../)가 필요한 경우 분리 문자 자체를 계산하지 마십시오. 솔루션에 수정자가 필요한 경우 수정 자당 1 바이트를 추가하십시오.

크레딧 마틴 청산jaytea 정규식 - 골프 규칙.


정규식으로 정수찾고 증가 시키는 Martin Ender의 솔루션을 기반으로 할 수 있다고 생각하는 이유가 있습니다.


1
이 챌린지 이전에 존재했던 정규식 플레이버를 사용할 수 있습니다. 이 규칙은 현재 컨센서스를 반영하지 않습니다. 즉, 챌린지가 게시 된 후 생성되거나 업데이트 된 언어 (및 정규식 플레이버)는 여전히 경쟁 할 수 있습니다.
Outgolfer Erik

1
관련. (이 답변은 jimmy의 .NET 답변과 다소 비슷해 보일 것입니다.)
Martin Ender

@EriktheOutgolfer 실제로 도전 후에 만들어진 언어가 경쟁 할 수 있다는 합의가 있습니까? 그것은 완전히 말도 안됩니다
edc65


Perl 5의 /e수정자는 대체에만 적용되며 외부 코드를 실행하는 유일한 방법은 아닙니다. 또한 이것은 정규 표현식이 추가 구문이있는 메소드이기 때문에 Perl 6의 자격을 완전히 상실합니다. (정규를 읽고 쓰는 것이 더 쉬워지기 때문이다.) 결과적으로 Perl 6 코드에 넣었을 때 구식 정규 표현식에 필요한 모든 기능이 필요하지 않거나 포함되어 있지 않다. (아마 의미하는 것은 그냥 정규식 특정 코드로 제한 할 경우이 도전을 할 수 없습니다) /^(\d+)**3%' '$ <?{$0[2]==[+] $0[0,1]}>/또는 /^(\d+)' '(\d+)' '(\d+)$ <?{$2==$0+$1}>/또는/^(\d+)' '(\d+){}" {$0+$1}"$/
브래드 길버트는 b2gills

답변:


15

Perl / PCRE : 2,685 바이트

^ (?! (?! 0 * + (? = (\ d *?) ((? : (? = \ d + 0 * + (\ d *?)) (\ d (? (4) \ 4)) 0 * (\ d *?) (\ d \ 6? +) $) \ d) +)) (? = (? (?! \ 1 (? : (? = \ d + 0 * \ 3 ((\ 7? +) \ d)) (? = \ d (\ d * 0 * \ 3 \ 8)) (? = 0 \ 9 [9] | 1 \ 9 [8] | 2 \ 9 [7] | 3 \ 9 [6] | 4 \ 9 [5] | 5 \ 9 [4] | 6 \ 9 [3] | 7 \ 9 [2] | 8 \ 9 [1] | 9 \ 9 [0]) \ d) * + (? = \ d (\ d * 0 * \ 3 \ 8? +)) (? = [5-9] \ 10 [5-9] | 1 \ 10 [9] | 2 \ 10 [89] | 3 \ 10 [7-9] | 4 \ 10 [6-9] | 6 \ 10 [4] | 7 \ 10 [34] | 8 \ 10 [2-4] | 9 \ 10 [1-4]) ) (? = \ d + \ d + 0 * \ 1 \ 3 \ 6 $) | (? (?! .. * + \ 3) \ d +) (? = \ d * (\ 2 | \ 4) (. *? 0 * +) \ d + $) (? (? = 9 * \ 11) (?: 9 (? = \ d * \ 12 [1] (\ 13? +0))) *? (? = \ 11) \ 11 \ 12 [1] \ 13? + \ 6 $ | (? : (\ d) (? = \ d * \ 12 (\ 15? + \ 14))) * (? = \ d (\ d * \ 12 \ 15? +)) (? = 0 \ 16 [1] | 1 \ 16 [2] | 2 \ 16 [3] | 3 \ 16 [4] | 4 \ 16 [5] | 5 \ 16 [ 6] | 6 \ 16 [7] | 7 \ 16 [8] | 8 \ 16 [9]) \ d (? : 9 (? = \ d * \ 12 \ 15? + \ d (\ 17? +0 ))) *? \ 11 \ 12 \ 15? + \ d \ 17? + \ 6 $))) \ 1 (? : (? = (\ d) \ d * 0 * + \ 3 ((\ 19? +) \ d) \ d * 0 * + \ 5 ((\ 21? +) \ d)) (? = \ d (\ d * 0 * + \ 3 \ 20) \ d (\ d * 0 * + \ 5 \ 22)) (? (?! \ 18 (?:(? = \ d + 0 * + \ 3 \ 19 ((\ 25? +) \ d)) (? = \ d (\ d * 0 * + \ 3 \ 19 \ 26)) (? = 0 \ 27 [ 9] | 1 \ 27 [8] | 2 \ 27 [7] | 3 \ 27 [6] | 4 \ 27 [5] | 5 \ 27 [4] | 6 \ 27 [3] | 7 \ 27 [2 ] | 8 \ 27 [1] | 9 \ 27 [0]) \ d) * + (? = \ d (\ d * 0 * + \ 3 \ 19 \ 26? +)) (? = [5-9 ] \ 28 [5-9] | 1 \ 28 [9] | 2 \ 28 [89] | 3 \ 28 [7-9] | 4 \ 28 [6-9] | 6 \ 28 [4] | 7 \ 28 [34] | 8 \ 28 [2-4] | 9 \ 28 [1-4])) (? = 1 \ 23 (? : 1 \ 24 [2] | 2 \ 24 [3] | 3 \ 24 [4] | 4 \ 24 [5] | 5 \ 24 [6] | 6 \ 24 [7] | 7 \ 24 [8] | 8 \ 24 [9] | 9 \ 24 [0]) | 2 \ 23 (? : 1 \ 24 [3] | 2 \ 24 [4] | 3 \ 24 [5] | 4 \ 24 [6] | 5 \ 24 [7] | 6 \ 24 [8] | 7 \ 24 [9 ] | 8 \ 24 [0] | 9 \ 24 [1]) | 3 \ 23 (? : 1 \ 24 [4] | 2 \ 24 [5] | 3 \ 24 [6] | 4 \ 24 [7] | 5 \ 24 [8] | 6 \ 24 [9] | 7 \ 24 [0] | 8 \ 24 [1] | 9 \ 24 [2]) | 4 \ 23 (? : 1 \ 24 [5] | 2 \ 24 [6] | 3 \ 24 [7] | 4 \ 24 [8] | 5 \ 24 [9] | 6 \ 24 [0] | 7 \ 24 [1] | 8 \ 24 [2] | 9 \ 24 [3]) | 5 \ 23 (? : 1 \ 24 [6] | 2 \ 24 [7] | 3 \ 24 [8] | 4 \ 24 [9] | 5 \ 24 [0] | 6 \ 24 [1] | 7 \ 24 [2] | 8 \ 24 [3] | 9 \ 24 [4]) | 6 \ 23 (? : 1 \ 24 [7] | 2 \ 24 [8] | 3 \ 24 [9] | 4 \ 24 [0] | 5 \ 24 [1] | 6 \ 24 [2] | 7 \ 24 [3] | 8 \ 24 [4] | 9 \ 24 [5]) | 7 \ 23 (? : 1 \ 24 [8] | 2 \ 24 [9] | 3 \ 24 [0] | 4 \ 24 [1] | 5 \ 24 [2] | 6 \ 24 [3] | 7 \ 24 [4 ] | 8 \ 24 [5] | 9 \ 24 [6]) | 8 \ 23 (?:1 \ 24 [9] | 2 \ 24 [0] | 3 \ 24 [1] | 4 \ 24 [2] | 5 \ 24 [3] | 6 \ 24 [4] | 7 \ 24 [5] | 8 \ 24 [6] | 9 \ 24 [7]) | 9 \ 23 (? : 1 \ 24 [0] | 2 \ 24 [1] | 3 \ 24 [2] | 4 \ 24 [3] | 5 \ 24 [4] | 6 \ 24 [5] | 7 \ 24 [6] | 8 \ 24 [7] | 9 \ 24 [8]) | 0 \ 23 (\ d) \ 24 \ 29 | (\ d) \ 23 [0] \ 24 \ 30) | (? = 1 \ 23 (? : 0 \ 24 [2] | 1 \ 24 [3] | 2 \ 24 [4] | 3 \ 24 [5] | 4 \ 24 [6] | 5 \ 24 [7] | 6 \ 24 [8] | 7 \ 24 [9] | 8 \ 24 [0] | 9 \ 24 [1]) | 2 \ 23 (? : 0 \ 24 [3] | 1 \ 24 [4] | 2 \ 24 [5] | 3 \ 24 [6] | 4 \ 24 [7] | 5 \ 24 [8] | 6 \ 24 [9] | 7 \ 24 [ 0] | 8 \ 24 [1] | 9 \ 24 [2]) | 3 \ 23 (? : 0 \ 24 [4] | 1 \ 24 [5] | 2 \ 24 [6] | 3 \ 24 [7 ] | 4 \ 24 [8] | 5 \ 24 [9] | 6 \ 24 [0] | 7 \ 24 [1] | 8 \ 24 [2] | 9 \ 24 [3]) | 4 \ 23 (? : 0 \ 24 [5] | 1 \ 24 [6] | 2 \ 24 [7] | 3 \ 24 [8] | 4 \ 24 [9] | 5 \ 24 [0] | 6 \ 24 [1] | 7 \ 24 [2] | 8 \ 24 [3] | 9 \ 24 [4]) | 5 \ 23 (? : 0 \ 24 [6] | 1 \ 24 [7] | 2 \ 24 [8] | 3 \ 24 [9] | 4 \ 24 [0] | 5 \ 24 [1] | 6 \ 24 [2] | 7 \ 24 [3] | 8 \ 24 [4] | 9 \ 24 [5]) | 6 \ 23 (? : 0 \ 24 [7] | 1 \ 24 [8] | 2 \ 24 [9] | 3 \ 24 [0] | 4 \ 24 [1] | 5 \ 24 [2] | 6 \ 24 [3] | 7 \ 24 [4] | 8 \ 24 [5] | 9 \ 24 [6]) | 7 \ 23 (? : 0 \ 24 [8] | 1 \ 24 [9] | 2 \ 24 [ 0] | 3 \ 24 [1] | 4 \ 24 [2] | 5 \ 24 [3] | 6 \ 24 [4] | 7 \ 24 [5] | 8 \ 24 [6] | 9 \ 24 [7 ]) | 8 \ 23 (?:0 \ 24 [9] | 1 \ 24 [0] | 2 \ 24 [1] | 3 \ 24 [2] | 4 \ 24 [3] | 5 \ 24 [4] | 6 \ 24 [5] | 7 \ 24 [6] | 8 \ 24 [7] | 9 \ 24 [8]) | 9 \ 23 (? : 0 \ 24 [0] | 1 \ 24 [1] | 2 \ 24 [2] | 3 \ 24 [3] | 4 \ 24 [4] | 5 \ 24 [5] | 6 \ 24 [6] | 7 \ 24 [7] | 8 \ 24 [8] | 9 \ 24 [9]) | 0 \ 23 (? : 0 \ 24 [1] | 1 \ 24 [2] | 2 \ 24 [3] | 3 \ 24 [4] | 4 \ 24 [5] | 5 \ 24 [6] | 6 \ 24 [ 7] | 7 \ 24 [8] | 8 \ 24 [9] | 9 \ 24 [0]))) \ d) + \ | ^ 0 + \ 0 * (\ d +) \ 0 * \ g {-1 } $ | ^ 0 * (\ d +) \ 0+ \ 0 * \ g {-1} $)). +

온라인으로 사용해보십시오!

나는 정규 표현식으로 인해 어려움을 겪고 난처한 어려움을 겪고 있었으며,이 doozy를 우연히 발견했습니다. 펄 / PCRE로 덧셈을 확인하는 것은 내가 전에 생각한 것이지만, 불가능하거나 내 능력을 넘어선 것으로 즉시 기각되었습니다. 그러나, 나는 지금 그것에 또 다른 균열을 가져 갔고 실제로 내가 그것을했다고 말하게되어 매우 기쁩니다!

나는 그것을 작성할 때 짧은 알고리즘과 전반적인 매칭 기술을 고려하는 것 외에는 실제로 이것을 골프화하지 않았습니다. 나는 그것을 끝내서 정말 기쁘다. : D

사람들이 관심이 있다면 의견을 추가하고 어떻게 작동하는지 설명 할 수 있습니다.

편집 : 나는 설명과 의견과 함께 이것에 대해 내 블로그에 자세한 게시물을 만들었습니다 :) 즐기십시오 : http://www.drregex.com/2018/09/a-regex-i-submitted-to-reddit-climbed.html


4
일부 설명에 확실히 관심이 있습니다!
etene

2
@etene 필자는 글쓰기에 대한 링크로 글을 편집했습니다. : D
jaytea

1
감사합니다, 그 흥미로운 읽을 거리가 될 것입니다!
etene

6

.NET 풍미, 139 (111) 106 + 1 = 107 바이트

RightToLeft수정자가 필요합니다 r. 이진수로 입력하십시오.

(?(2)!)^\5 \7 ((?(2)()(?(2)!)(?<-2>){2})(0|(?<-2>1))(?<=(((0|(?<2>1)|\b)(?=.*(?<=(\5).*))?\7?) \d*){2}))+$

온라인으로 사용해보십시오! ( Retina 사용 )

그룹 균형 조정을위한 예. 나중에 설명하겠습니다 ...

10 진수, 340 243 + 1 = 244 바이트

(?(2)!)^\5 \7 ((?(2)()(?(2)!)(?<-2>){10})(0|(?<-2>1|(?<-2>2|(?<-2>3|(?<-2>4|(?<-2>5|(?<-2>6|(?<-2>7|(?<-2>8|(?<-2>9))))))))))(?<=(((0|(?<2>1|(?<2>2|(?<2>3|(?<2>4|(?<2>5|(?<2>6|(?<2>7|(?<2>8|(?<2>9)))))))))|\b)(?=.*(?<=(\5).*))?\7?) \d*){2}))+$

온라인으로 사용해보십시오!


3
"나중에 이것을 설명하겠다"얼마나 나중에?
OUurous

3
그것은 나중에 나중에 @ 너무 많은.
마틴 엔더

1

.NET, 96 바이트

^\4 \6((?(2)()(?(2)^)(?<-2>){2}| ?)(0|(?<-2>1))(?<=((0|(?<2>1)|)\4?) .*((0|(?<2>1)|)\6?) .*))+$

깃발: r

온라인으로 사용해보십시오!

10 진수 버전, 238 바이트

^\5 \6(?<-6>)((?(2)()(?(2)^)(?<-2>){10}| ?)((?<-2>[1469]|(?<-2>[27]))|[0358])(?([5-9])(?<-2>){5})(?([3489])(?<-2>){3})(?<=(((((?=[5-9](?<2>){5}|)(?=[3489](?<2>){3}|)((?<2>[1469]|(?<2>[27]))|.))?(?( .*)\6?(?<-6>)?|\5?(?<-5>)))) .*){2}))+$

깃발: r

온라인으로 사용해보십시오!

마틴의 대답과 비슷합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.