주의 사항 : 대중의 요구에 따라 규칙을 약간 완화했습니다.
- 최대 정규 표현식 크기는 5 개의 응답마다 1 바이트 씩 증가 합니다 . 답 N 은 최대 29 + ⌈N / 5⌉ 바이트 를 사용할 수 있습니다 .
- 각 답변의 점수는 (M / (30 + N / 5)) N입니다.
정규식 골프에서는 두 세트의 문자열이 주어지며 첫 번째 세트의 모든 문자열과 일치하지만 두 번째 세트의 모든 문자열에서 실패하는 가장 짧은 정규식을 작성하라는 메시지가 표시됩니다.
그것이 우리가 할 일이지만, 누군가 대답 할 때마다 정규 표현식 자체가 두 가지 문자열 중 하나에 추가됩니다 (자신의 선택). 따라서이 과제에 대한 답변을 엄격히해야합니다.
예를 들어 봅시다 :
- 이걸로 시작한다고 말하고 일치 세트
abc
에 넣습니다 . - 그런 다음
a
위와 일치하므로 유효한 두 번째 대답은입니다 (그리고 아직 실패해야 할 문자열이 없습니다). 이 답변이 실패 세트 에 들어간다고 가정하십시오 . - 이제 세 번째 답변은 일치해야
abc
하지만 실패합니다a
. 따라서 가능한 세 번째 대답은b
입니다. 이것을 경기 세트 에 넣겠습니다 . - 네 번째 대답은 지금은 일치해야
abc
하고b
, 그러나에 실패a
. 중복 답변을 허용하지 않으므로 유효한 정규 표현식은입니다c|b
.
중요한 것은 대답이 가능한 짧아야한다는 것입니다. 처음 몇 가지 대답에는 사소한 것이지만, 몇 가지 대답을 얻으면 가능한 한 적은 문자로 원하는 일치 항목을 얻는 것이 점점 어려워집니다.
실제 챌린지의 경우 처음에 일치 세트에 포함 PPCG
되고 실패 세트에 포함되어 [PPCG]
있으며 이미 첫 번째 답변을 제공했습니다.
응답
이 과제에 대해 이해해야 할 핵심은 한 번에 한 사람 만 답변 할 수 있으며 각 답변은 그 전의 답변에 달려 있다는 것 입니다.
같은 두 개의 답변이 없어야합니다 N
. 두 사람이 일부 N
에 대해 동시에 답변 하면 나중에 답변 한 사람 (몇 초 차이가 있더라도)은 은혜롭게 답변을 삭제해야합니다.
이 과정을 조금 더 매끄럽게하려면 답을 게시 할 때 다음 단계를 따르십시오.
- 누군가가 이전 답변의 정확성을 독립적으로 확인했는지 확인하고 해당 의견을 남겼는지 확인하십시오.
- 이전 답변에서 찾은 두 가지 테스트 세트를 가져 와서 한 세트의 모든 문자열과 일치하고 다른 세트에는없는 정규식을 작성하십시오.
다음 형식으로 답변을 게시하십시오.
# N. [regex flavour] - [regex size in bytes] [regex] [link to online regex tester] [notes, explanation, observations, whatever] ### The next answer has to match the following strings: [match set] ### And fail on these strings: [fail set]
N
답의 수는 어디에 있습니까 ? 복사하시기 바랍니다[match set]
및[fail set]
이전의 대답에서, 그리고에 정규식을 추가 한 그들.이것은 도전에 절대적으로 중요합니다! 부기와 관련하여 도움을 줄 수있는 대시 보드 도구를 제공했으며 위의 템플릿을 사용합니다. (포스트 하단 참조)
- 다른 사용자가 제출 한 내용을 검토하고 답변이 모든 규칙 (아래 참조)을 준수하는 경우 "수정 확인"이라는 메모를 남기십시오. 그렇지 않은 경우, 결함을 지적하는 주석을 남겨야합니다. 그런 다음 15 분 안에 해당 문제를 해결해야합니다. 그렇지 않으면 답변이 유효하지 않은 것으로 간주되어 삭제되어야하며 다른 사람이 이전 답변에 대한 후속 답변을 게시 할 수 있습니다. (이러한 경우 언제든지 새 답변을 제출할 수 있습니다.)
이러한 규정은 다소 엄격한 것처럼 보일 수 있지만 체인의 어딘가에 잘못된 답변을 피하기 위해 필요합니다.
규칙
- 사용자는 4 시간마다 하나의 답변 만 제출할 수 있습니다. (이는 사용자가 지속적으로 질문을보고 최대한 많이 답변하지 못하도록하기위한 것입니다.)
- 사용자는 두 개의 답변을 한 번에 제출할 수 없습니다. (예 : 답변 1을 제출 한 후 답변 2는 할 수 없지만 3은 할 수 있습니다.)
- 확인 된 답변을 편집하지 마십시오. (단축 방법을 찾더라도!)
- 체인에서 초기 에 실수가 발견 되면 (즉, 후속 답변이 게시 된 후) 문제가되는 답변을 삭제하고 새 제출이 실패 할 문자열 세트에서 제거됩니다. 그러나 이후에 게시 된 모든 답변 을 반영하도록 변경 해서는 안됩니다 .
- 정규 표현식이 유효한 하나의 맛을 명확하게 설명하십시오. 온라인에서 자유롭게 테스트 할 수있는 맛을 선택할 수 있습니다. StackOverflow에 대한 온라인 테스터 목록이 많이 있습니다 . 특히 Regex101 및 RegexPlanet 은 다양한 향미를 지원하므로 유용합니다. 답변에 선택한 테스터에 대한 링크를 포함하십시오. 온 전환하여
g
lobal 및m
테스터에 ultiline 수정, 한 번에 모든 문자열을 테스트 할 수 있습니다, 각 행에 하나 (그들은 개인 문자열을 필요로하지 않기 때문에 이러한 수정, 당신의 정규식 크기으로 계산되지 않습니다). - 정규식은 비워 둘 수 없습니다.
- 응답 N 에 대한 정규식은 29 + ⌈N / 5⌉ 바이트를 초과하지 않아야 합니다. 즉, 답변 1 ~ 5는 최대 30 바이트 (포함)를 사용할 수 있고, 답변 6 ~ 10은 최대 31 바이트를 사용할 수 있습니다 ... 답변 31 ~ 35는 최대 36 바이트를 사용할 수 있습니다. 다음 답변에서 사용할 수있는 문자 수를 확인하려면 대시 보드를 확인하십시오.
- 정규식은 두 테스트 세트의 문자열과 동일해서는 안됩니다.
- 관련 호스트 언어에서 사용하더라도 제출 또는 바이트 수에 구분 기호를 포함하지 마십시오. 정규식에서 수정자를 사용하는 경우 수정 자당 1 바이트를 정규식 크기에 추가하십시오. 예를 들어
/foo/i
4 바이트입니다.
채점
각 답변의 점수는 (M / (30 + N / 5)) N 으로 계산되며 , 여기서 M 은 정규식 크기 (바이트)이고 N 은 숫자입니다. 각 사용자의 점수는 모든 답변의 결과입니다. 전체 점수가 가장 낮은 사용자가 승리합니다. 가능성이 거의없는 경우, 최신 제출을 가진 사용자가 승리합니다. 해당 사용자의 최신 답변을 수락합니다.
합산 점수를 선호하는 경우 각 답변의 점수를 N * (log (M)-log (30)) 로 계산하고 모든 답변에 대해 합계를 계산할 수 있습니다 . 그것은 같은 순위표 순서를 줄 것입니다.
답에 답의 점수를 포함시킬 필요는 없으며 M 만보고하면 됩니다. 질문의 맨 아래에있는 챌린지 대시 보드는 점수를 계산하며, 매우 가까운 점수가 두 개인 경우 임의 정밀도 유형을 사용하여 결과를 다시 확인합니다.
각 답변의 점수는 1 미만이므로 새 답변을 제공하여 전체 점수를 향상시킬 수 있습니다. 그러나 각 제출물이 짧을수록 점수를 더 효율적으로 낮출 수 있습니다. 또한 지수가 높아짐에 따라 나중의 답변은 더 길지만 더 낮은 점수를 얻을 수 있습니다.
계기반
여기 에서 Optimizer의 작업을 기반으로 Stack Snippets를 사용하여 작은 대시 보드 도구를 작성했습니다 . 이것이 답변에 따른 도전 과제를 해결하는 데 도움이되기를 바랍니다.
이것은 챌린지의 현재 상태, 특히 상충되는 답변이 있거나 답변을 확인해야하는 경우 또는 다음 답변을 게시 할 수있는 경우를 표시합니다.
또한 점수가 포함 된 모든 답변 목록과 모든 사용자의 리더 보드를 생성합니다. 대시 보드가 답변에서 관련 문자열을 읽을 수 있도록 위의 챌린지 형식을 따르십시오. 그렇지 않으면 리더 보드에 포함되지 않을 수 있습니다.
버그를 발견하거나 도구의 유용성을 개선 할 수있는 방법에 대한 아이디어가 있으면 알려주십시오 ( 이상적으로는 채팅에서 ).