Cảnh sát và Cướp: Đảo ngược Regex Golf


76

Lưu ý : Thử thách này hiện đang đóng cửa. Bất kỳ đệ trình của cảnh sát trong tương lai sẽ không được xem xét cho câu trả lời được chấp nhận. Điều này là để đảm bảo rằng không ai có thể đăng một regex rất đơn giản trong tương lai mà vẫn không bị bẻ khóa vì không ai quan tâm đến thử thách nữa.

Thử thách của cảnh sát

Bạn phải viết một regex ngắn gọn, khó hiểu, đáp ứng các thông số sau:

  • Bạn có thể chọn bất kỳ hương vị có thể tự do kiểm tra trực tuyến. Có một danh sách tốt những người thử nghiệm trực tuyến trên StackOverflow . Đặc biệt, Regex101 sẽ rất tốt để giúp bạn bắt đầu, vì nó hỗ trợ các hương vị PCRE, ECMAScript và Python. Bạn có thể tăng giới hạn thời gian chờ bằng cách nhấp vào cờ lê ở góc trên bên phải nếu cần thiết. Vui lòng bao gồm người kiểm tra bạn chọn trong câu trả lời của bạn.

    Nếu không có người kiểm tra phù hợp có sẵn cho bạn lựa chọn, bạn cũng có thể sử dụng trình thông dịch trực tuyến như ideone và viết một đoạn script nhỏ bằng ngôn ngữ máy chủ mà mọi người có thể sử dụng để kiểm tra trình của bạn.

  • Bạn có thể sử dụng bất kỳ tính năng nào của hương vị đó, không trực tiếp gọi ngôn ngữ máy chủ (như các tính năng đánh giá mã của Perl).
  • Tương tự như vậy, bạn có thể sử dụng bất kỳ công cụ sửa đổi nào (nếu hương vị của bạn có chúng), trừ khi chúng dẫn đến việc đánh giá mã.
  • Regex của bạn phải chấp nhận ít nhất một chuỗi S và từ chối ít nhất một chuỗi T , mỗi chuỗi dài ít nhất 16 và không quá 256 ký tự, trong một khoảng thời gian hợp lý (không dài hơn đáng kể một phút). ST có thể chứa các ký tự Unicode không phải là ASCII, miễn là có cách nhập chúng vào trình kiểm tra trực tuyến. Bất kỳ cặp chuỗi như vậy sẽ là một chìa khóa để gửi của bạn.
  • Regex của bạn có thể mất nhiều thời gian tùy ý trên bất kỳ đầu vào nào khác.

Cốt lõi của thách thức là tạo ra một regex có chìa khóa khó tìm. Đó là, thật khó để biết chuỗi nào nó không khớp hoặc chuỗi nào khớp với nó (hoặc có khả năng cả hai nếu regex mất nhiều ngày để hoàn thành tất cả trừ chuỗi của khóa).

Thử thách của bọn cướp

Tất cả người dùng, bao gồm cả những người đã gửi regex (es) của riêng họ, được khuyến khích "bẻ khóa" các bài nộp khác. Một bài nộp bị bẻ khóa khi một trong các khóa của nó được đăng trong phần bình luận liên quan.

Quan trọng: Đảm bảo rằng cả hai chuỗi bạn đăng đều nằm trong khoảng từ 16 đến 256 ký tự, ngay cả khi gần như bất kỳ chuỗi nào có thể được sử dụng cho một phần của khóa.

Nếu một bài nộp tồn tại trong 72 giờ mà không bị sửa đổi hoặc bẻ khóa, tác giả có thể tiết lộ một khóa hợp lệ bằng cách chỉnh sửa nó thành một thẻ spoiler trong câu trả lời của mình. Điều này sẽ làm cho câu trả lời của anh ấy "an toàn", tức là nó không còn có thể bị bẻ khóa nữa.

Chỉ cho phép một lần bẻ khóa cho mỗi lần gửi cho mỗi người dùng. Ví dụ: nếu tôi gửi cho người dùng X: "Khóa của bạn là 0123456789abcdef/ fedcba9876543210." và tôi sai, người dùng X sẽ từ chối dự đoán của tôi là không chính xác và tôi sẽ không còn có thể gửi dự đoán bổ sung cho lần gửi đó, nhưng tôi vẫn có thể bẻ khóa các bài nộp khác (và những người khác vẫn có thể bẻ khóa bài nộp đó).

Đệ trình bẻ khóa được loại bỏ khỏi sự tranh chấp (miễn là chúng không "an toàn"). Họ không nên được chỉnh sửa hoặc xóa. Nếu một tác giả muốn gửi một regex mới, (s) anh ta nên làm như vậy trong một câu trả lời riêng.

Đừng bẻ khóa trình của bạn!

Lưu ý: Đối với các chuỗi dài trong các nhận xét không có khoảng trắng, SE chèn các ngắt dòng thủ công ở dạng hai ký tự Unicode. Vì vậy, nếu bạn đăng một khóa trong backticks dài đến mức nó kết hợp giữa các ký tự không phải khoảng trắng, bạn sẽ không thể sao chép khóa thẳng ra một trình kiểm tra regex. Trong trường hợp này, vui lòng cung cấp permalink cho người kiểm tra biểu thức chính quy có liên quan với biểu thức chính thức của cảnh sát và khóa của bạn - hầu hết người kiểm tra bao gồm tính năng này.

Chấm điểm

Điểm của cảnh sát sẽ là kích thước của biểu thức chính quy của họ theo byte (mẫu cộng với bộ sửa đổi, dấu phân cách tiềm năng không được tính), miễn là nó không bị bẻ khóa. Điểm thấp nhất của bài nộp "an toàn" sẽ giành chiến thắng.

Điểm của một tên cướp sẽ là số lần gửi mà chúng bị bẻ khóa. Trong trường hợp hòa, tổng kích thước byte của các lần gửi mà chúng bị bẻ khóa sẽ được sử dụng một bộ ngắt kết nối. Ở đây, số byte cao nhất sẽ thắng.

Như đã nêu ở trên, bất kỳ cảnh sát nào cũng có thể tham gia như một tên cướp và ngược lại.

Tôi sẽ duy trì bảng xếp hạng riêng cho hai phần của thử thách.

Bảng xếp hạng

Cập nhật lần cuối: 19/10/2014, 20:33 UTC

Cảnh sát:

Đệ trình in nghiêng vẫn chưa an toàn.

  1. nneonneo , 841 byte
  2. Wumpus Q. Wumbley , 10.602 byte
  3. Sp3000 , 52.506 byte
  4. người dùng23013 , 53.884 byte
  5. nneonneo , 656.813 byte

Cướp

  1. user23013 , Cracked: 11, Tổng kích thước: 733 + 30 + 2.447 + 71 + 109 + 121 + 97 + 60 + 141 + 200.127 + 7.563 = 211.499 byte
  2. nneonneo , Cracked: 10, Tổng kích thước: 4.842 + 12.371 + 150 + 3571 + 96 + 168 + 395 + 1043 + 458 + 17.372 = 40.466 byte
  3. Wumpus Q. Wumbley , Cracked: 6, Tổng kích thước: 22 + 24 + 158 + 32 + 145.245 + 145.475 = 290.956 byte
  4. Dennis , Cracked: 2, Tổng kích thước: 70 + 73 = 143 byte
  5. harius , Cracked: 1, Tổng kích thước: 9,998 byte
  6. g.rocket , Cracked: 1, Tổng kích thước: 721 byte
  7. stokastic , Cracked: 1, Tổng kích thước: 211 byte
  8. Sp3000 , Cracked: 1, Tổng kích thước: 133 byte
  9. TwiNight , Cracked: 1, Tổng kích thước: 39 byte

6
Tôi tự hỏi có bao nhiêu dòng mã chúng ta đã viết chung để xây dựng những câu đố này và cố gắng giải chúng ... và liệu có đáng để thu thập tất cả và dán nó lên github khi chúng ta hoàn thành hay không. Mọi người đều có thể đóng góp bất cứ thứ gì họ có (bộ mã hóa, giải mã, giải quyết cả thành công và không thành công), như hiện tại, không bị lỗi và bị hack dù có thể. Với một README nếu bạn cảm thấy thích nó. Nó sẽ giống như thủ tục hội nghị của chúng tôi.

Mặc dù không có bất kỳ câu trả lời mới nào được đăng nữa, nhưng có thể đáng để "đóng" câu hỏi tại một số điểm. Mặt khác, có thể ai đó có thể trả lời khi tiền lãi đã hết, và không bị kiểm soát trong một thời gian dài hơn.
nneonneo

@nneonneo Hừm, tôi thường không thích đóng những thử thách của mình, nhưng trong trường hợp này có thể là một ý kiến ​​hay. Tôi thậm chí nghĩ rằng 3 mục cuối đã được hưởng lợi từ việc ít chú ý hơn. Tôi sẽ đặt thời hạn cho thứ Sáu.
Martin Ender

@ MartinBüttner: Tôi nghĩ rằng nó sẽ phải là tiêu chuẩn cho những thách thức của cảnh sát và tên cướp để có thời hạn sử dụng. Những thách thức chỉ ở lại thú vị quá lâu. (Đối với hồ sơ, thử thách này có lẽ vẫn là sở thích cá nhân của tôi, nhưng tôi có thể bị thiên vị trong quan điểm đó :)
nneonneo

Câu trả lời:


19

Regex .NET, 841 byte [An toàn!]

Bây giờ tôi đã có một mục an toàn, hãy xem tôi có thể tạo regex nhỏ như thế nào!

^(?<a>){53}((0(((?<-a>)(?<A>){7}|){997}((?<-b>)(?<B>){7}|){997}((?<-c>)(?<C>){7}|){997}((?<-d>)(?<D>){7}|){997}((?<-e>)(?<E>){7}|){997}((?<-f>)(?<F>){7}|){997}((?<-g>)(?<G>){7}|){997}(?<A>){5})|1(((?<-a>)(?<A>){3}|){997}((?<-b>)(?<B>){3}|){997}((?<-c>)(?<C>){3}|){997}((?<-d>)(?<D>){3}|){997}((?<-e>)(?<E>){3}|){997}((?<-f>)(?<F>){3}|){997}((?<-g>)(?<G>){3}|){997}(?<A>)))((?<-A>){997}(?<B>)|){9}((?<-A>)(?<a>)|){997}((?<-B>){997}(?<C>)|){9}((?<-B>)(?<b>)|){997}((?<-C>){997}(?<D>)|){9}((?<-C>)(?<c>)|){997}((?<-D>){997}(?<E>)|){9}((?<-D>)(?<d>)|){997}((?<-E>){997}(?<F>)|){9}((?<-E>)(?<e>)|){997}((?<-F>){997}(?<G>)|){9}((?<-F>)(?<f>)|){997}((?<-G>){997}|){9}((?<-G>)(?<g>)|){997}){256}$(?<-a>){615}(?(a)(?!))(?<-b>){59}(?(b)(?!))(?<-c>){649}(?(c)(?!))(?<-d>){712}(?(d)(?!))(?<-e>){923}(?(e)(?!))(?<-f>){263}(?(f)(?!))(?<-g>){506}(?(g)(?!))

Chuẩn bị :

^(?<a>){53}
(
    (0(
        ((?<-a>)(?<A>){7}|){997}
        ((?<-b>)(?<B>){7}|){997}
        ((?<-c>)(?<C>){7}|){997}
        ((?<-d>)(?<D>){7}|){997}
        ((?<-e>)(?<E>){7}|){997}
        ((?<-f>)(?<F>){7}|){997}
        ((?<-g>)(?<G>){7}|){997}
        (?<A>){5})
    |1(
        ((?<-a>)(?<A>){3}|){997}
        ((?<-b>)(?<B>){3}|){997}
        ((?<-c>)(?<C>){3}|){997}
        ((?<-d>)(?<D>){3}|){997}
        ((?<-e>)(?<E>){3}|){997}
        ((?<-f>)(?<F>){3}|){997}
        ((?<-g>)(?<G>){3}|){997}
        (?<A>))
    )
    ((?<-A>){997}(?<B>)|){9}((?<-A>)(?<a>)|){997}
    ((?<-B>){997}(?<C>)|){9}((?<-B>)(?<b>)|){997}
    ((?<-C>){997}(?<D>)|){9}((?<-C>)(?<c>)|){997}
    ((?<-D>){997}(?<E>)|){9}((?<-D>)(?<d>)|){997}
    ((?<-E>){997}(?<F>)|){9}((?<-E>)(?<e>)|){997}
    ((?<-F>){997}(?<G>)|){9}((?<-F>)(?<f>)|){997}
    ((?<-G>){997}|){9}      ((?<-G>)(?<g>)|){997}
){256}$

(?<-a>){615}(?(a)(?!))
(?<-b>){59}(?(b)(?!))
(?<-c>){649}(?(c)(?!))
(?<-d>){712}(?(d)(?!))
(?<-e>){923}(?(e)(?!))
(?<-f>){263}(?(f)(?!))
(?<-g>){506}(?(g)(?!))

Đặc trưng:

  • Ngắn , 841 byte
  • Chơi golf và viết bằng tay
  • Không biết mã hóa một vấn đề NP-hard
  • Hết thời gian trên hầu hết các đầu vào không hợp lệ :)
  • Đã thử nghiệm trên http://regexhero.net/tester/ , mất ~ 5 giây cho đầu vào hợp lệ

Cảm ơn Sp3000 và user23013 đã theo dõi tôi vào .NET regex.


Sau 72 giờ, tôi tiết lộ chìa khóa để làm cho bài nộp này an toàn.

Trận đấu :

1110111111110010000110011000001011011110101111000011101011110011001000000111111111001010000111100011111000000100011110110111001101011001000101111110010111100000000010110001111011011111100000011001101110011111011010100111011101111001110111010001111011000000

Không phù hợp :Aren'tHashFunctionsFun?

Giải trình:

Biểu thức chính quy này thực hiện một hàm băm rất đơn giản và khá ngu ngốc. Hàm băm tính một số nguyên duy nhất xlà đầu ra. xbắt đầu bằng 53. Nó được điều chỉnh dựa trên mỗi ký tự gặp phải: nếu nó thấy a 0, nó sẽ được đặt x = 7x + 5và nếu thấy a 1, nó sẽ được đặt x = 3x + 1. xsau đó được giảm mod 997 7 . Kết quả cuối cùng được kiểm tra đối với hằng số được xác định trước; regex không khớp nếu giá trị băm không bằng nhau.

Bảy nhóm chụp (ag) được sử dụng để lưu trữ các chữ số cơ sở 997 x, với bảy nhóm bắt giữ (AG) khác đóng vai trò lưu trữ tạm thời. Tôi sử dụng phần mở rộng "cân bằng các nhóm chụp" của .NET regex để lưu trữ các số nguyên trong các nhóm chụp. Về mặt kỹ thuật, số nguyên được liên kết với mỗi nhóm chụp là số lượng các trận đấu không cân bằng được bắt bởi nhóm đó; "Bắt" một chuỗi trống bằng cách (?<X>)tăng số lần chụp và "cân bằng" nhóm bằng cách (?<-X>)giảm số lần chụp (điều này sẽ gây ra lỗi khớp nếu nhóm không có ảnh chụp). Cả hai có thể được lặp đi lặp lại để cộng và trừ các hằng số cố định.

Thuật toán băm này chỉ là một thuật toán tôi đã vội vàng và là thuật toán băm nhỏ nhất mà tôi có thể nghĩ ra có vẻ an toàn hợp lý khi chỉ sử dụng các phép cộng và phép nhân. Đó chắc chắn không crypto-chất lượng, và có thể sẽ là điểm yếu mà làm cho nó có thể tìm thấy một vụ va chạm trong vòng chưa đầy 997 7 đánh giá băm / 2.


Tôi đã có một ý tưởng ... Sau đó, tôi đã từ bỏ vì tôi không có dung lượng trống 500 + GB trên ổ cứng.
jimmy23013

3
Nhìn thấy nó bây giờ trong 3 lần gửi không bị theo dõi, tôi chính thức đăng ký hoàn toàn không biết gì về mục đích của công trình (?<a>){53}. Nó dường như đang bắt mô hình trống vào nhóm được đặt tên a53 lần. Vậy đặt a=""sau đó lặp lại 52 lần nữa? Nhưng tôi thực sự không biết liệu (?<điều đó có nghĩa là điều tương tự trong ý tưởng của regrec của Microsoft hay không. Tài liệu của họ thậm chí không đề cập đến nó . Nếu ngay cả một cuộc thi regrec kết thúc với các tiện ích mở rộng không có giấy tờ của Microsoft dành cho những người chưa kết hợp, thì sự tồn tại của tôi không có mục đích.

Đó là một nhóm chụp mà không chụp được gì 53 lần. .NET có một phần mở rộng được gọi là chụp nhóm cân bằng, đó là câu trả lời của họ cho kết hợp paren. Mỗi nhóm được đặt tên hoạt động như một ngăn xếp, do đó (?<a>){53}đẩy chuỗi trống 53 lần. Bạn có thể bật ngăn xếp bằng cách sử dụng (?<-a>). Hy vọng bây giờ rõ ràng tại sao cấu trúc này rất hữu ích.
nneonneo

2
@ WumpusQ.Wumbley Tôi là người unix đã tìm thấy điều này hữu ích.
jimmy23013

4
@ WumpusQ.Wumbley MSDN có toàn bộ trang về các cấu trúc nhóm . Mà có thể được tìm thấy từ các tài liệu tham khảo nhanh chóng . Đây là lần truy cập đầu tiên cho ".net regex Reference" , tương tự như thuật ngữ tìm kiếm Perl của bạn. (Tương tự cho "cú pháp", "thủ công" hoặc "đặc tả").
Martin Ender

29

Regex cơ bản, 656813 byte [an toàn!]

Các regex để kết thúc tất cả các regex. Một đêm cuối cùng trong đêm.

Có thể kiểm tra theo PCRE, Perl, Python và nhiều người khác.

Phiên bản được mã hóa bzip2'd và base64 trên Pastebin: http://pastebin.com/9kprSWBn (Pastebin không muốn phiên bản thô vì quá lớn).

Để đảm bảo bạn có được regex đúng, bạn có thể xác minh rằng hàm MD5 của nó là

c121a7604c6f819d3805231c6241c4ef

hoặc kiểm tra xem nó bắt đầu bằng

^(?:.*[^!0-9@-Za-z].*|.{,255}|.{257,}|.[U-Za-z].{34}[12569@CDGHKLOPSTWXabefijmnqruvyz].{8}[02468@BDFHJLNPRTVXZbdfhjlnprtvxz].{210}

và kết thúc bằng

.{56}[7-9@-DM-Tc-js-z].{121}[3-6A-DI-LQ-TYZabg-jo-rw-z].{28}[!0-9@-T].{48})$

Khóa vẫn là 256 byte thoải mái.

Tôi đã thử nghiệm regex này với Python, nhưng lưu ý rằng regex này không sử dụng bất kỳ tính năng đặc biệt nào của Python. Thật vậy, ngoại trừ (?:)(như một cơ chế nhóm), nó thực sự không sử dụng bất kỳ tính năng đặc biệt nào của bất kỳ công cụ regex nào: chỉ các lớp nhân vật cơ bản, sự lặp lại và neo. Vì vậy, nó có thể được kiểm tra trong một số lượng lớn các công cụ biểu thức chính quy.

Chà, thực ra, tôi vẫn có thể khắc phục khó khăn, giả sử ai đó không giải quyết ngay được những vấn đề nhỏ hơn ... nhưng tôi cá rằng mọi người sẽ gặp rắc rối với regex 1GB ...


Sau 72 giờ, bài nộp này vẫn không bị phá hủy! Vì vậy, tôi hiện đang tiết lộ chìa khóa để làm cho bài nộp an toàn. Đây là bài nộp an toàn đầu tiên, sau hơn 30 bài nộp đã bị bẻ khóa liên tiếp bởi những tên cướp dai dẳng.

Trận đấu : Massive Regex Problem Survives The Night!
Không khớp :rae4q9N4gMXG3QkjV1lvbfN!wI4unaqJtMXG9sqt2Tb!0eonbKx9yUt3xcZlUo5ZDilQO6Wfh25vixRzgWUDdiYgw7@J8LgYINiUzEsIjc1GPV1jpXqGcbS7JETMBAqGSlFC3ZOuCJroqcBeYQtOiEHRpmCM1ZPyRQg26F5Cf!5xthgWNiK!8q0mS7093XlRo7YJTgZUXHEN!tXXhER!Kenf8jRFGaWu6AoQpj!juLyMuUO5i0V5cz7knpDX0nsL

Regex giải thích:

Regex được tạo ra từ một vấn đề 3SAT "cứng" với một giải pháp ngẫu nhiên được giới thiệu có chủ ý. Vấn đề này được tạo ra bằng thuật toán từ [Jia, Moore & Strain, 2007]: "Tạo ra các công thức thỏa mãn cứng bằng cách che giấu các giải pháp một cách quyết đoán". Sáu biến boolean được đóng gói vào mỗi byte của khóa, với tổng số 1536 biến.
Bản thân regex khá đơn giản: nó biểu thị mỗi mệnh đề 7680 3SAT như một điều kiện đảo ngược (theo luật của de Morgan) và khớp với bất kỳ chuỗi nào không đáp ứng một trong các mệnh đề 3SAT. Do đó, khóa là một chuỗi không khớp với biểu thức chính quy, tức là một chuỗi thỏa mãn mọi mệnh đề.


1
Vì vậy, tôi vừa thử tải regex 60MB vào Python. Có thể dự đoán, nó không quá hạnh phúc. Phải mất vài phút để biên dịch, nhưng phần thú vị là nó gần như ngay lập tức để trả lời các truy vấn. Tôi nghi ngờ việc tải regex 1GB vào Python sẽ mất vài giờ để biên dịch ...
nneonneo

3
Hoặc không dễ dàng như vậy. Dựa trên nỗ lực đầu tiên của tôi để khắc nó xuống kích thước có thể giải quyết được, chúng tôi sẽ cần khoảng 2 ** 61 CPU để hoàn thành kịp thời gian.

12
Thử thách bắt đầu, "Bạn phải viết một bản regex ngắn gọn , khó hiểu" (nhấn mạnh thêm)
Ypnypn

5
@Ypnypn Thử thách cho đến nay thậm chí là có được bất kỳ regex không thể bẻ khóa nào trên bảng - cái này có vẻ như nó sẽ là người đầu tiên phá vỡ rào cản đó :)
Sp3000

3
@ MartinBüttner: Cảm ơn! Tôi đã làm như vậy. Bây giờ tôi phải đi ra ngoài và thử một số vấn đề về regex NP-hard khác ...
nneonneo

17

ECMAScript (10602 byte)

(Ghi chú ngôn ngữ: Tôi thấy rất nhiều bài đăng có nhãn ruby, hoặc python, hoặc bất cứ điều gì, khi chúng thực sự không sử dụng bất kỳ tính năng cụ thể nào về ngôn ngữ. Bài viết này chỉ yêu cầu (?!...)(?=...)trên đầu trang của POSIX ERE với các phản hồi. công cụ regrec của ngôn ngữ yêu thích của bạn, vì vậy đừng nản lòng khi thử thách vì tôi đã chọn sử dụng trình kiểm tra trực tuyến javascript.)

Chỉ cần một chút niềm vui, không khó tính toán như một số người khác.

^(?!(.).*\1.|.+(.).*\2)(?=(.))(?=(((?![ҁѧѦЩ]{2}).)*(?=[ҁѧѦЩ]{2}).){2}(?!.*[ЩѦҁѧ]{2}))(?=(((?![ɿqԼϚ]{2}).)*(?=[ϚqԼɿ]{2}).){2}(?!.*[ԼϚɿq]{2}))(?=((?![ϼλҡՄ]{2}).)*(?=[ҡλϼՄ]{2}).(?!.*[Մλϼҡ]{2}))(?=(((?![ʯֆɎF]{2}).)*(?=[FֆʯɎ]{2}).){2}(?!.*[FɎֆʯ]{2}))(?=(((?![AɔbУ]{2}).)*(?=[ɔbAУ]{2}).){3}(?!.*[ɔAbУ]{2}))(?=(((?![ʈͽՄɒ]{2}).)*(?=[ͽՄɒʈ]{2}).){2}(?!.*[ͽՄɒʈ]{2}))(?=(((?![ϙшѭϢ]{2}).)*(?=[Ϣϙѭш]{2}).){2}(?!.*[ѭшϙϢ]{2}))(?=(((?![ՐɏƋѠ]{2}).)*(?=[ƋՐɏѠ]{2}).){2}(?!.*[ѠƋՐɏ]{2}))(?=(((?![Жտʓo]{2}).)*(?=[Жտʓo]{2}).){2}(?!.*[Жʓտo]{2}))(?=(((?![ƆʙƸM]{2}).)*(?=[ƆʙMƸ]{2}).){2}(?!.*[ƆʙMƸ]{2}))(?=(((?![dNѤѯ]{2}).)*(?=[ѤѯNd]{2}).){2}(?!.*[ѤѯdN]{2}))(?=(((?![ҎvȵҜ]{2}).)*(?=[vҜȵҎ]{2}).){2}(?!.*[ҎvҜȵ]{2}))(?=(((?![ҹɀҀҤ]{2}).)*(?=[ɀҤҀҹ]{2}).){2}(?!.*[ҹҤҀɀ]{2}))(?=(((?![OɄfC]{2}).)*(?=[fOɄC]{2}).){3}(?!.*[ɄOfC]{2}))(?=((?![ǷϗЋԒ]{2}).)*(?=[ЋϗԒǷ]{2}).(?!.*[ԒϗЋǷ]{2}))(?=((?![էҹϞҀ]{2}).)*(?=[ҹҀէϞ]{2}).(?!.*[ϞէҹҀ]{2}))(?=(((?![QԶϧk]{2}).)*(?=[QkϧԶ]{2}).){2}(?!.*[ϧԶkQ]{2}))(?=(((?![cիYt]{2}).)*(?=[իYct]{2}).){2}(?!.*[tcYի]{2}))(?=(((?![ɐҷCɄ]{2}).)*(?=[CɄɐҷ]{2}).){3}(?!.*[CҷɐɄ]{2}))(?=(((?![ҥմѾϢ]{2}).)*(?=[ϢѾմҥ]{2}).){2}(?!.*[մϢѾҥ]{2}))(?=((?![Ϛǝjɰ]{2}).)*(?=[Ϛǝjɰ]{2}).(?!.*[jɰϚǝ]{2}))(?=((?![ϭBѾҸ]{2}).)*(?=[ѾҸϭB]{2}).(?!.*[ѾҸBϭ]{2}))(?=((?![ϼλyՎ]{2}).)*(?=[λՎyϼ]{2}).(?!.*[λՎyϼ]{2}))(?=((?![MԋƆƻ]{2}).)*(?=[ƻƆԋM]{2}).(?!.*[MƆԋƻ]{2}))(?=(((?![uԳƎȺ]{2}).)*(?=[uԳƎȺ]{2}).){3}(?!.*[ȺƎuԳ]{2}))(?=((?![ɂƐϣq]{2}).)*(?=[qϣƐɂ]{2}).(?!.*[ɂƐϣq]{2}))(?=(((?![ϫճωƺ]{2}).)*(?=[ωϫճƺ]{2}).){2}(?!.*[ճƺϫω]{2}))(?=((?![ζɏΞƋ]{2}).)*(?=[ɏƋζΞ]{2}).(?!.*[ɏƋζΞ]{2}))(?=(((?![Ӄxԏϣ]{2}).)*(?=[Ӄxԏϣ]{2}).){2}(?!.*[ԏxϣӃ]{2}))(?=(((?![ԈʄʫԻ]{2}).)*(?=[ԻʄԈʫ]{2}).){2}(?!.*[ʫԈԻʄ]{2}))(?=(((?![ɒէƣʈ]{2}).)*(?=[ʈɒէƣ]{2}).){2}(?!.*[ʈƣɒէ]{2}))(?=(((?![Ϥϟƺϫ]{2}).)*(?=[Ϥϫϟƺ]{2}).){3}(?!.*[ƺϫϤϟ]{2}))(?=((?![ɋȡþͼ]{2}).)*(?=[ȡþͼɋ]{2}).(?!.*[þͼȡɋ]{2}))(?=((?![ҡʈԄՄ]{2}).)*(?=[ʈԄՄҡ]{2}).(?!.*[ՄԄҡʈ]{2}))(?=(((?![ʌkȿՌ]{2}).)*(?=[Ռȿkʌ]{2}).){3}(?!.*[kՌȿʌ]{2}))(?=(((?![gǝժʮ]{2}).)*(?=[ǝgʮժ]{2}).){2}(?!.*[gǝʮժ]{2}))(?=((?![ɧƸȝՊ]{2}).)*(?=[ƸɧȝՊ]{2}).(?!.*[ՊȝɧƸ]{2}))(?=(((?![ɜȶʟɀ]{2}).)*(?=[ɀȶʟɜ]{2}).){3}(?!.*[ȶɀʟɜ]{2}))(?=((?![ƅѿOf]{2}).)*(?=[ѿfƅO]{2}).(?!.*[Oѿfƅ]{2}))(?=(((?![GҠƪԅ]{2}).)*(?=[ҠGԅƪ]{2}).){2}(?!.*[GԅƪҠ]{2}))(?=(((?![Һӻѩͽ]{2}).)*(?=[ӻͽҺѩ]{2}).){2}(?!.*[ͽҺѩӻ]{2}))(?=(((?![ʊLՅϪ]{2}).)*(?=[ՅʊLϪ]{2}).){3}(?!.*[LʊϪՅ]{2}))(?=(((?![ɅՈƪԅ]{2}).)*(?=[ƪԅՈɅ]{2}).){2}(?!.*[ԅՈƪɅ]{2}))(?=((?![ʇɊƈѹ]{2}).)*(?=[Ɋƈʇѹ]{2}).(?!.*[ʇƈѹɊ]{2}))(?=(((?![նЏYI]{2}).)*(?=[IYնЏ]{2}).){2}(?!.*[նЏIY]{2}))(?=((?![ͼխɷȡ]{2}).)*(?=[ͼȡɷխ]{2}).(?!.*[ɷխȡͼ]{2}))(?=((?![ҝɞҎv]{2}).)*(?=[ɞҎvҝ]{2}).(?!.*[Ҏҝvɞ]{2}))(?=(((?![eƪGω]{2}).)*(?=[Geƪω]{2}).){3}(?!.*[ƪeGω]{2}))(?=(((?![ɂɿƱq]{2}).)*(?=[Ʊqɿɂ]{2}).){2}(?!.*[Ʊqɂɿ]{2}))(?=((?![ƣЖoɒ]{2}).)*(?=[Жɒoƣ]{2}).(?!.*[ƣoɒЖ]{2}))(?=(((?![Ҵԉձϻ]{2}).)*(?=[ձԉϻҴ]{2}).){2}(?!.*[ϻԉձҴ]{2}))(?=((?![ɆɟѧE]{2}).)*(?=[EѧɆɟ]{2}).(?!.*[ѧEɆɟ]{2}))(?=((?![ѪɝȾѸ]{2}).)*(?=[ѪѸɝȾ]{2}).(?!.*[ѪѸȾɝ]{2}))(?=(((?![ßΩԂɥ]{2}).)*(?=[ɥΩßԂ]{2}).){2}(?!.*[ɥßԂΩ]{2}))(?=(((?![ӃդƐϣ]{2}).)*(?=[ƐդӃϣ]{2}).){2}(?!.*[ϣդƐӃ]{2}))(?=(((?![ѪլѸԿ]{2}).)*(?=[ԿѪѸլ]{2}).){2}(?!.*[ԿѪլѸ]{2}))(?=((?![ɉшƻϙ]{2}).)*(?=[ɉƻшϙ]{2}).(?!.*[ϙƻɉш]{2}))(?=((?![ѹփʯΨ]{2}).)*(?=[ʯփΨѹ]{2}).(?!.*[ѹʯփΨ]{2}))(?=((?![ƕϯʮҏ]{2}).)*(?=[ƕҏʮϯ]{2}).(?!.*[ҏϯʮƕ]{2}))(?=((?![ՌȿSբ]{2}).)*(?=[բՌSȿ]{2}).(?!.*[SȿբՌ]{2}))(?=(((?![ИщɌK]{2}).)*(?=[ɌщИK]{2}).){2}(?!.*[ɌИщK]{2}))(?=(((?![aҵɸւ]{2}).)*(?=[ւҵaɸ]{2}).){2}(?!.*[aւɸҵ]{2}))(?=(((?![լѸխɷ]{2}).)*(?=[ɷѸլխ]{2}).){2}(?!.*[խɷլѸ]{2}))(?=(((?![ՉLʝϥ]{2}).)*(?=[LϥʝՉ]{2}).){2}(?!.*[ՉϥʝL]{2}))(?=((?![ʬϬȝɣ]{2}).)*(?=[Ϭɣȝʬ]{2}).(?!.*[ȝɣϬʬ]{2}))(?=(((?![ɺȴҵւ]{2}).)*(?=[ȴɺҵւ]{2}).){3}(?!.*[ҵȴɺւ]{2}))(?=(((?![ΞʇɊζ]{2}).)*(?=[ζɊʇΞ]{2}).){2}(?!.*[ΞɊζʇ]{2}))(?=(((?![դփӃΨ]{2}).)*(?=[ΨփդӃ]{2}).){2}(?!.*[ΨփդӃ]{2}))(?=((?![ԳuҦc]{2}).)*(?=[uԳҦc]{2}).(?!.*[ҦucԳ]{2}))(?=(((?![ԻЭɌщ]{2}).)*(?=[ԻɌщЭ]{2}).){2}(?!.*[ɌщԻЭ]{2}))(?=((?![ЉջѮӺ]{2}).)*(?=[ӺЉѮջ]{2}).(?!.*[ѮӺЉջ]{2}))(?=(((?![ӿѤɹN]{2}).)*(?=[ӿɹѤN]{2}).){3}(?!.*[ѤNɹӿ]{2}))(?=(((?![ƕʮBg]{2}).)*(?=[Bʮgƕ]{2}).){3}(?!.*[Bʮgƕ]{2}))(?=((?![կƛȸԓ]{2}).)*(?=[ƛȸԓկ]{2}).(?!.*[կԓƛȸ]{2}))(?=(((?![ɥДȸh]{2}).)*(?=[ɥhДȸ]{2}).){2}(?!.*[ɥhȸД]{2}))(?=(((?![ʁԺեW]{2}).)*(?=[եWԺʁ]{2}).){2}(?!.*[ԺʁWե]{2}))(?=((?![ɮςϿʢ]{2}).)*(?=[ʢϿɮς]{2}).(?!.*[ɮςʢϿ]{2}))(?=(((?![ձУAƾ]{2}).)*(?=[ƾУձA]{2}).){2}(?!.*[УAձƾ]{2}))(?=(((?![ԻϠɌʄ]{2}).)*(?=[ʄɌԻϠ]{2}).){2}(?!.*[ϠɌʄԻ]{2}))(?=((?![ɜҥմȶ]{2}).)*(?=[ҥȶɜմ]{2}).(?!.*[ҥȶɜմ]{2}))(?=(((?![ƏՀթϞ]{2}).)*(?=[թՀƏϞ]{2}).){2}(?!.*[ƏՀթϞ]{2}))(?=((?![ҩɃȽϛ]{2}).)*(?=[ɃȽϛҩ]{2}).(?!.*[ҩϛɃȽ]{2}))(?=((?![ҠȺԃD]{2}).)*(?=[ȺҠԃD]{2}).(?!.*[DԃҠȺ]{2}))(?=((?![ɆʊLϥ]{2}).)*(?=[LϥʊɆ]{2}).(?!.*[ʊϥɆL]{2}))(?=(((?![ͽѩɒЖ]{2}).)*(?=[ͽɒѩЖ]{2}).){2}(?!.*[ѩɒЖͽ]{2}))(?=(((?![ςϪʢƩ]{2}).)*(?=[ƩʢςϪ]{2}).){3}(?!.*[ςƩϪʢ]{2}))(?=(((?![ҁϥѧɆ]{2}).)*(?=[ϥѧҁɆ]{2}).){2}(?!.*[ѧҁϥɆ]{2}))(?=((?![Жϗѩʓ]{2}).)*(?=[ʓϗЖѩ]{2}).(?!.*[ʓЖϗѩ]{2}))(?=(((?![ʁեɋþ]{2}).)*(?=[ʁɋեþ]{2}).){2}(?!.*[þեʁɋ]{2}))(?=((?![Mnƻɉ]{2}).)*(?=[Mɉƻn]{2}).(?!.*[ƻMnɉ]{2}))(?=(((?![HʬϬѺ]{2}).)*(?=[HѺʬϬ]{2}).){2}(?!.*[ϬѺʬH]{2}))(?=(((?![cիըҦ]{2}).)*(?=[ըҦիc]{2}).){2}(?!.*[cիҦը]{2}))(?=((?![ȸɥկΩ]{2}).)*(?=[ɥΩկȸ]{2}).(?!.*[ɥȸկΩ]{2}))(?=(((?![ʫҝԲɞ]{2}).)*(?=[ʫԲɞҝ]{2}).){2}(?!.*[ʫɞԲҝ]{2}))(?=(((?![ҺЋϗѩ]{2}).)*(?=[ѩҺϗЋ]{2}).){3}(?!.*[ҺѩЋϗ]{2}))(?=((?![ʯΨɎч]{2}).)*(?=[ʯΨɎч]{2}).(?!.*[ʯΨɎч]{2}))(?=(((?![ѮɔЉA]{2}).)*(?=[ЉɔѮA]{2}).){2}(?!.*[ѮɔAЉ]{2}))(?=(((?![ʞӶdN]{2}).)*(?=[dNʞӶ]{2}).){2}(?!.*[ӶNdʞ]{2}))(?=(((?![ԀŋҔɴ]{2}).)*(?=[ŋԀҔɴ]{2}).){3}(?!.*[ҔɴŋԀ]{2}))(?=(((?![ΠЪƏթ]{2}).)*(?=[ƏΠթЪ]{2}).){3}(?!.*[ΠթЪƏ]{2}))(?=(((?![OՌѿբ]{2}).)*(?=[ՌOբѿ]{2}).){2}(?!.*[OբՌѿ]{2}))(?=((?![ɮȾʢѪ]{2}).)*(?=[ɮȾʢѪ]{2}).(?!.*[ѪȾɮʢ]{2}))(?=((?![ЪϤՋΠ]{2}).)*(?=[ϤΠЪՋ]{2}).(?!.*[ՋΠЪϤ]{2}))(?=((?![Մͽӻϼ]{2}).)*(?=[ͽϼՄӻ]{2}).(?!.*[ϼͽՄӻ]{2}))(?=((?![ԋҳѦЩ]{2}).)*(?=[ѦԋЩҳ]{2}).(?!.*[ѦЩҳԋ]{2}))(?=((?![gҶҸB]{2}).)*(?=[BҶgҸ]{2}).(?!.*[ҸBgҶ]{2}))(?=(((?![ɢλҡѥ]{2}).)*(?=[λҡɢѥ]{2}).){2}(?!.*[ѥλɢҡ]{2}))(?=(((?![AϻЉձ]{2}).)*(?=[ϻձЉA]{2}).){2}(?!.*[ϻձЉA]{2}))(?=((?![tRիp]{2}).)*(?=[Rtpի]{2}).(?!.*[tpRի]{2}))(?=(((?![ɮȹϿÞ]{2}).)*(?=[ϿɮÞȹ]{2}).){2}(?!.*[ϿɮȹÞ]{2}))(?=((?![ϯժʮџ]{2}).)*(?=[ժџϯʮ]{2}).(?!.*[џϯʮժ]{2}))(?=(((?![HʬȠҨ]{2}).)*(?=[HҨȠʬ]{2}).){2}(?!.*[ȠҨʬH]{2}))(?=((?![ՒԉPϻ]{2}).)*(?=[ԉϻPՒ]{2}).(?!.*[PϻԉՒ]{2}))((?=Գ[նƎuc]|ƕ[Bʮȴҏ]|ϣ[ԏɂӃƐ]|Ʊ[ɿϬӄɂ]|Ѿ[ϭϢҸҥ]|ͽ[ѩӻՄɒ]|ɷ[խͼլ]|փ[դiѹΨ]|ϛ[ɅɃȽՀ]|Ԃ[ɥѭմß]|խ[ȡɐѸɷ]|P[ȠՒԉ]|ӷ[ЩEՊƆ]|Ə[ΠթƣϞ]|ч[xɎΨ]|ʄ[ԈϠԻҺ]|Љ[AѮϻջ]|ɒ[ʈƣЖͽ]|ʞ[ӶɔNЦ]|Ɛ[ϣɰqդ]|ʮ[ϯժƕg]|ɥ[ȸДԂΩ]|Ҕ[ŋՐɺɴ]|χ[Ԏѯ]|Ջ[ΠϤԾտ]|Ɏ[чʯֆ]|ҥ[մѬѾȶ]|ɞ[ҝҎԲ]|ҏ[ƕՐϯɺ]|Հ[ϛթϞw]|y[ϼԈҝՎ]|λ[ѥՎϼҡ]|Մ[ͽҡϼʈ]|ϟ[ϫϤԾ]|Ћ[ǷϠҺϗ]|ʫ[ԲԈҝԻ]|ǝ[gjɰժ]|Ԅ[ҡҹʟʈ]|ʌ[kՌэC]|ȶ[ҥЊɜʟ]|Ɍ[щИԻϠ]|ի[Rtըc]|Ո[ƪƺЪɅ]|ƺ[ՈϤϫω]|ß[ԂΩɜҤ]|I[նЏљ]|ҷ[ȡэCɐ]|Ц[ςbʞɹ]|Ǝ[ǂȺԳG]|ӄ[ƱӾѺ]|ʇ[ζiɊѹ]|ֆ[ɎF]|ɏ[ѠΞƋ]|Բ[ɞʫЭ]|Ի[ɌЭʫʄ]|ƪ[ԅωGՈ]|ȡ[խɋͼҷ]|Ϡ[ɌдʄЋ]|ɋ[эʁþȡ]|U[ɝɄՅʝ]|ɺ[ҵȴҏҔ]|Ƚ[ԅϛDҩ]|Ɋ[ƈʇΞ]|ժ[Φʮǝџ]|Ӿ[ӄɂԏ]|Ψ[Ӄчʯփ]|Ω[Ղկßɥ]|щ[KɌЭ]|ɉ[nҶшƻ]|Ժ[WԱե]|G[ƎeҠƪ]|ղ[կՂՑɃ]|Ӷ[ԷʞdѮ]|u[ȺԳQҦ]|Ѡ[ɴɏՐ]|ƛ[ԓՑѿկ]|ɜ[ɀմßȶ]|Ҵ[ԉձʡɧ]|ȿ[kSՌԃ]|ɂ[qӾϣƱ]|Պ[ӷɧƸʡ]|Щ[ѧѦӷԋ]|Ⱦ[ѪɝʢՅ]|Ƀ[ղҩwϛ]|Ҏ[vҜɞ]|ɐ[ҷɄɝխ]|ԏ[ϣxӾ]|Ҁ[ҹϞҤw]|մ[ԂҥɜϢ]|ҳ[ДԋϙѦ]|Ϛ[jɰqԼ]|w[ҀՀɃՂ]|E[ӷɟѧʡ]|У[μAbƾ]|ձ[ҴϻƾA]|ɟ[ɆμEƾ]|Ҥ[ҀßՂɀ]|v[ȵҎՎҝ]|ш[ϢϙɉҸ]|Ͽ[ɹɮςÞ]|O[fCՌѿ]|ʁ[ԶեWɋ]|ȹ[ÞԿɮ]|Ϟ[ՀէҀƏ]|ԋ[ƻҳЩƆ]|ƅ[fԓՉѿ]|ω[ƺeճƪ]|ʈ[ɒԄՄէ]|Ԉ[ʫʄӻy]|Ƌ[ζՐϯɏ]|ɰ[ǝƐΦϚ]|ȴ[ƕϭւɺ]|Δ[Չhҁԓ]|Π[ՋЪoƏ]|Ϫ[ʢƩʊՅ]|ӻ[ҺԈͽϼ]|ʝ[ՉLfU]|Ծ[ϟrՋ]|þ[ɋեͼ]|ӿ[ѤɹÞ]|բ[ՌՑSѿ]|ҡ[λՄɢԄ]|ɸ[ȻՃaҵ]|д[ϠИǷ]|ճ[ωϫл]|ɀ[ҹҤʟɜ]|л[ճeљ]|Ϥ[ϟЪƺՋ]|c[ԳYҦի]|Ռ[Oʌբȿ]|ն[ԳǂYI]|Ʌ[ԅϛՈթ]|ҝ[yɞʫv]|p[ƜRt]|ƣ[էƏɒo]|Ҷ[Ҹɉgj]|A[УձɔЉ]|Þ[ȹϿӿ]|Ƿ[дЋԒ]|k[QԶȿʌ]|ջ[ՒӺЉ]|Ɇ[ʊѧϥɟ]|ʢ[ςϪɮȾ]|ѭ[ДϢϙԂ]|ʘ[ЏƜt]|ѹ[ʇʯփƈ]|ʟ[Ԅȶɀɢ]|ϯ[ҏƋʮџ]|լ[ԿɷѸ]|Ƹ[ՊʙƆȝ]|N[ɹʞdѤ]|ς[ЦϿʢƩ]|ǂ[eƎљն]|ѧ[ɆEҁЩ]|ɴ[ѠҔԀ]|Ʉ[ɐfCU]|ҹ[ԄҀէɀ]|Ւ[ջPϻ]|ѥ[ɢλaՃ]|o[ΠտЖƣ]|g[BҶʮǝ]|Կ[լѪȹ]|Џ[ʘIY]|Y[ctЏն]|Ҡ[ȺDGԅ]|Ѧ[Щҁҳh]|Ѻ[HϬӄ]|ɹ[NЦϿӿ]|ԓ[ƛƅΔȸ]|f[OƅɄʝ]|L[ʝʊՅϥ]|ϼ[yӻλՄ]|џ[ζժiϯ]|ҩ[SɃȽՑ]|Ʃ[Ϫμbς]|դ[փƐӃΦ]|Ѯ[ӶӺЉɔ]|ƻ[ɉԋϙM]|ѩ[ҺϗͽЖ]|ʊ[μɆϪL]|Ж[ɒʓѩo]|B[ƕҸgϭ]|ԅ[ҠɅƪȽ]|ɔ[ʞѮAb]|ϗ[ЋʓԒѩ]|Ɔ[ӷMƸԋ]|љ[лǂI]|ȸ[ɥԓhկ]|q[ƐɿϚɂ]|Ҹ[шҶBѾ]|ʡ[ҴƾEՊ]|Ԏ[dχԷ]|j[ϚnǝҶ]|Ҧ[uըcϧ]|ϻ[ՒЉԉձ]|ʙ[ƸԼɣM]|ե[ʁþԺ]|Ƞ[PHҨ]|Φ[ɰդiժ]|Њ[ɢaѬȶ]|b[ɔƩЦУ]|Չ[ʝƅϥΔ]|ϧ[ԶҦWQ]|Ճ[ѥɸȵՎ]|Ҩ[ɧԉȠʬ]|ҁ[ΔѧѦϥ]|Ց[ҩƛղբ]|ɿ[qԼɣƱ]|μ[УƩɟʊ]|e[ωǂGл]|Һ[Ћʄѩӻ]|ѯ[dѤχ]|Ԓ[Ƿюϗ]|ҵ[ɸɺŋւ]|տ[Ջʓro]|ϙ[ѭƻҳш]|R[իԱp]|Ɯ[pʘ]|r[Ծюտ]|ƈ[ɊѹF]|M[ʙnƆƻ]|i[փʇΦџ]|ƾ[ձУʡɟ]|ɝ[ѸȾɐU]|ю[Ԓʓr]|Д[hҳѭɥ]|a[Њѥւɸ]|Յ[LUϪȾ]|ϭ[ѬBѾȴ]|Ѹ[Ѫɝխլ]|D[ԃȽҠS]|Ⱥ[ԃuƎҠ]|Ȼ[ŋȵɤɸ]|э[ʌԶҷɋ]|Ѥ[ѯӿN]|ԃ[ȺDȿQ]|ȵ[ҜȻՃv]|S[բȿҩD]|Ղ[ҤwΩղ]|ɢ[ѥҡʟЊ]|ɣ[Ϭɿȝʙ]|Վ[yvλՃ]|Ϭ[ɣʬƱѺ]|Ӄ[ϣxΨդ]|թ[ƏɅЪՀ]|ȝ[ʬƸɧɣ]|Ԁ[ɤɴŋ]|ѿ[ƅOƛբ]|H[ȠʬѺ]|F[ֆƈʯ]|Ѫ[ѸȾɮԿ]|է[ʈƣϞҹ]|ʯ[ѹFɎΨ]|ŋ[ȻҔԀҵ]|ɤ[ԀҜȻ]|ԉ[ҴPҨϻ]|ͼ[ȡɷþ]|t[իʘpY]|Ϣ[ѭմѾш]|Э[щԲԻ]|ɮ[ʢѪϿȹ]|ϫ[ƺճϟ]|Ѭ[Њւϭҥ]|Լ[Ϛnɿʙ]|Ξ[ζɊɏ]|Է[ԎӺӶ]|Q[ϧkԃu]|ւ[ҵaѬȴ]|Ր[ѠҏҔƋ]|ը[իԱWҦ]|ʓ[տϗюЖ]|K[щИ]|Ӻ[ԷѮջ]|x[чӃԏ]|И[KɌд]|ʬ[HҨȝϬ]|Ա[RըԺ]|ɧ[ȝҴՊҨ]|n[jɉMԼ]|C[ʌҷɄO]|W[ϧըʁԺ]|h[ДѦΔȸ]|ϥ[ՉLɆҁ]|Ъ[ΠՈϤթ]|կ[Ωղƛȸ]|ζ[џΞʇƋ]|Ҝ[ɤҎȵ]|Զ[ϧkʁэ]|d[ԎNѯӶ]).){3,}\3

Kiểm tra tại đây: http://regex101.com/r/kF2oQ3/1

(dế cưng)

Không có người nhận? Thật đáng thất vọng khi nghĩ đến việc đăng tải spoiler mà không có bằng chứng cho thấy bất cứ ai nhìn vào nó đủ lâu để hiểu loại vấn đề đó là gì.

Tôi đang viết một lời giải thích đầy đủ để đăng sau nhưng tôi nghĩ tôi sẽ hạnh phúc hơn nếu ai đó đánh bại tôi.

Khi tôi nói nó không "khó tính toán" ... đó một ví dụ của một vấn đề hoàn chỉnh NP, nhưng không phải là một ví dụ lớn .

Gợi ý: đó là một loại câu đố bằng bút chì và giấy. Nhưng tôi sẽ rất ấn tượng nếu bạn có thể giải quyết vấn đề này bằng bút chì và giấy một mình (sau khi giải mã biểu thức chính quy thành một hình thức phù hợp để in).

Thời gian spoiler

Có nhiều cấp độ của spoilers ở đây. Nếu bạn chưa giải quyết được biểu thức chính quy, bạn có thể muốn thử lại sau khi chỉ đọc khối spoiler đầu tiên. Khóa thực tế phù hợp với biểu thức chính là sau khối spoiler cuối cùng.

Regrec này mã hóa một câu đố Slitherlink .

Khi bạn tìm hiểu điều gì đang xảy ra và chuyển đổi biểu thức chính quy thành lưới Slitherlink, bạn sẽ nhanh chóng phát hiện ra rằng nó khó hơn Slitherlink trung bình. Đó là trên lưới vuông 16x16, lớn hơn so với 10x10 thông thường. Nó cũng hơi bất thường khi không có 0manh mối và sự thiếu hụt tương đối 3. 0's và 3' s là những manh mối đơn giản nhất để làm việc với, vì vậy tôi không muốn cung cấp cho bạn rất nhiều trong số họ.

câu đố slitherlink

Lớp hư hỏng thứ hai:

Khi bạn đang giải câu đố Slitherlink, một điều bất ngờ nữa sẽ xảy ra: Slitherlink này có nhiều hơn một giải pháp. Nếu bạn là người giải Slitherlink thông thường và bạn có thói quen suy luận dựa trên giả định về một giải pháp duy nhất, bạn có thể đã bị nhầm lẫn bởi điều đó. Nếu vậy, bạn là một kẻ lừa dối và đây là hình phạt của bạn! Một phần công việc của người giải câu đố là tìm ra có bao nhiêu giải pháp.

Lớp hư hỏng cuối cùng:

Vòng xoắn cuối cùng: 2 giải pháp cho Slitherlink hầu như giống hệt nhau, nhưng một giải pháp dài hơn một chút so với giải pháp kia. Bạn cần tìm cái ngắn. Nếu bạn chỉ tìm thấy một chuỗi dài và mã hóa nó thành một chuỗi để khớp với biểu thức chính quy, chuỗi đó sẽ có độ dài là 256 ký tự. Đường dẫn đi qua 256 nút, nhưng bạn phải lặp lại nút đầu tiên ở cuối để đóng vòng lặp. Và nếu bạn đã đi xa đến thế, bạn có thể đã nghĩ rằng tôi đã phạm sai lầm và quên đếm nhân vật phụ đó. Không! và / hoặc Gotcha! (và / hoặc Boosh! và / hoặc Kakow!)

Giải pháp ngắn dài 254 phân đoạn và mã hóa thành chuỗi 255 ký tự là khóa. Vì bạn có thể bắt đầu tại bất kỳ nút nào trên vòng lặp và tiến hành theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ, có 254 * 2 = 508 câu trả lời có thể.

giải pháp slitherlink

Không khớp: bananabananabanana
Khớp: ƜpRԱԺեþɋэʌkȿՌOfɄCҷɐխɷլԿѪɮȹÞӿѤNɹЦʞӶdѯχԎԷӺջՒϻЉAɔbУƾձҴԉҨʬHѺӄӾԏxчɎֆFƈɊΞζџiփΨӃϣɂƱϬɣɿqϚɰƐդΦժʮgBƕȴւҵɺҏϯƋՐѠɴҔŋԀɤȻɸaЊѬҥѾҸшɉҶjnMʙƸՊʡEɟμƩςʢϪʊLՅȾɝUʝՉϥҁѧЩӷƆԋҳϙѭϢմԂɥȸhΔԓƛѿբՑҩSDȽԅҠGeωƪՈɅϛɃwҀҤՂΩßɜȶʟɀҹԄҡλѥՃȵҜҎɞԲЭщɌИдϠʄԻʫҝyϼӻҺЋϗѩͽɒʈէϞՀթЪΠƏƣoտʓюrԾϟϤƺϫճлљIնǂƎԳuȺԃQϧԶʁWըիcYЏʘƜ
Bằng chứng: http://regex101.com/r/pJ3uM9/2


Chúc mừng bạn đã vượt qua 72 giờ! Bây giờ bạn có thể khóa câu trả lời của bạn chống lại nứt bằng cách tiết lộ chìa khóa. Cho đến khi bạn làm, câu trả lời vẫn có thể bị bẻ khóa.
Martin Ender

Tôi đã thử nhưng không thấy nó là máy bay ...
jimmy23013

14

Hương vị Perl, 158 [nứt]

Đây là nỗ lực đầu tiên của tôi:

(?(R)|^(?=[a-z]))((?!.*(?&K))(((?|([?-K])|(?'K'$)|(?'k'j'k'?)|(?'k'C[^_^]{3,33}))(?(3)\3|3)){3}(?(R)R(-.-)|(?R))(?'k'<grc>-(?!(?&k))\4(?(R)|\$\4(?5)$)))|(?R))

Kiểm tra nó trên ideone.com

(?(R)|^(?=[a-z]))ký tự đầu tiên phải là chữ cái viết thường
(?!.*(?&K)), chuỗi không thể chứa các chữ cái trong phạm vi [?-K]
(?|...|(?'k'j'k'?)|...)khớp ASCII j'k(các nhóm khác về cơ bản là các chuỗi màu đỏ)
(?(3)\3|3){3}khớp với nhóm thứ 3 hoặc '3' sau 3 cấp đệ quy, lặp lại 3 lần
(?(R)...|(?R))lặp lại toàn bộ regex một lần hoặc khớp với một vài ký tự
...(?!(?&k))...Tôi nghĩ rằng đây là [?-K]một lần nữa, nhưng tôi không thể nhớ
(?(R)|...$)sau khi đệ quy, khớp một số nhóm và kết thúc chuỗi
|(?R)nếu bất cứ điều gì không khớp, thì đó là thời gian cho đệ quy vô hạn: D


4
Trận đấu: j'k3j'kj'k3j'kj'kj'k3j'k3j'kj'k3j'kj'kj'k3R-k-<grc>-j'k<grc>-j'k$j'k-k-Không khớp: HOLYCRAPTHATWASEVIL(trận đấu có sẵn tại ideone.com/pXaGaX để chứng minh)

16
Mọi người đã cố gắng giải quyết vấn đề này và thậm chí đã đi được nửa đường, giờ đây đã sẵn sàng để gửi 2 báo cáo lỗi và 3 bản vá tài liệu cho công cụ regrec perl. (Và tất cả chúng ta vì những thứ khác nhau)

7
+1 cho khóa tuyệt vời và có biểu tượng cảm xúc trong regex của bạn[^_^] (-.-)
cần

@ WumpusQ.Wumbley Tốt lắm! Tôi nghĩ rằng những tên cướp đang chiến thắng trong số này :(
grc

3
Nhận xét trước đây của tôi chủ yếu là một trò đùa, nhưng có lẽ một số lời giải thích sẽ tốt đẹp. Việc sử dụng các nhóm bắt giữ được đặt tên bên trong (?|...)là khó khăn, nhưng nó được ghi lại. Xem đoạn văn perlrebắt đầu bằng Be careful when using the branch reset pattern in combination with named captures.Bí quyết là các nhóm có cùng số nhưng các tên khác nhau là cùng một nhóm , trong khi các nhóm có cùng tên nhưng các số khác nhaucác nhóm khác nhau .

12

Hương vị JS, 9998 byte [đã bẻ khóa]

^(?!.*(.).*\1)(?=M)((?=!7|!D|!a|!§|!¾|!Ö|!ù|!Ě|!į|!Ň|"C|"s|"t|"¡|"°|"»|"è|"ñ|"÷|"ķ|"ļ|"Œ|#W|#k|#l|#o|#q|#¶|#À|#Â|#Æ|#č|%!|%1|%O|%ÿ|%Ĕ|%Ğ|%Ī|%ĭ|&e|&q|&Õ|&æ|&ü|&đ|&Ĩ|'%|'`|'k|'¯|'É|'í|'þ|'ė|'Ğ|'ĩ|'IJ|'ļ|'ł|,%|,'|,l|,ª|,®|,¸|,¹|,ã|,õ|,Ċ|,Ġ|,Ī|,İ|,Ņ|-U|-V|-»|-Ï|-Þ|-ì|0_|0u|0°|0Ġ|0İ|0ł|1#|1-|1g|1å|1é|1ą|1Ļ|1ń|2B|2O|2¬|2ë|2ò|2õ|2Ğ|2ĩ|2į|2IJ|2ļ|3d|3²|3Ï|3Þ|3ß|3ç|3ø|3ĉ|3ķ|3ĸ|3Ŀ|4c|4£|4ß|4ã|4Ċ|4ģ|4Ĩ|4ő|4Œ|5&|5Q|5û|5Ā|5ě|5ĩ|6ú|6Ķ|6Ł|7Q|7V|7e|7²|7Á|7Þ|7à|7đ|7Ġ|7ĵ|8w|8¯|8¾|8ņ|8ő|9H|9Y|9i|:6|:s|:¬|:ð|:ü|:Ĉ|:Ċ|:Ĵ|:ĸ|:Ŀ|;X|;®|;¯|;²|;¸|;Ó|;à|;ĥ|;Œ|<-|<t|<å|<ø|<Į|<Ľ|<ō|=&|=l|=¨|=Á|=Ý|=Č|=Ĩ|=Ń|>-|>±|>¸|>Ä|>à|>ð|>ó|>Ī|@B|@F|@_|@³|@´|@Ó|@Ü|@ã|@û|@Ğ|@ğ|@Ĭ|@İ|@Ŀ|A5|AV|A_|Ax|A¹|AÅ|AĞ|AĶ|Aņ|Aō|B¼|BÂ|Bä|Bç|BĊ|Bį|Bİ|BĻ|BŅ|C1|C<|CG|Cy|C~|C¼|Cì|Cù|Cō|DT|DU|Dc|Dj|D¤|DÂ|DÑ|DĀ|Dİ|E,|E¬|E¼|E×|Eā|Eė|Eń|FZ|Ft|F»|F¿|FÈ|FØ|Fç|Fì|Fć|FĬ|Fı|FŅ|Gj|Gl|Gv|G¯|Gâ|Gï|GĖ|Gę|GĦ|Gĭ|H8|HB|HS|Hu|H¥|HÃ|HÌ|Hø|HĆ|HĒ|HĬ|Hĭ|I=|It|I©|Iæ|IĿ|Iō|J1|J3|J5|JQ|JÉ|JÔ|J×|Jă|JIJ|K-|KP|KÄ|Kî|Kā|KĐ|Kġ|KĨ|KĴ|L!|LÐ|Lá|LĚ|LĠ|M5|M¿|MÅ|Må|MĈ|MŊ|N,|N2|N5|NB|Nh|NÂ|NØ|NÜ|NĖ|Nĝ|NŃ|O;|Of|O¯|O¸|Oå|OĈ|Oď|Oē|OIJ|P7|PQ|Pp|P£|Pđ|PĴ|Pŀ|Q7|QR|Q¥|QÝ|Qî|Qī|Qĸ|Qŀ|Qő|R0|RA|RI|RN|R¥|R¼|Rö|Rû|RĬ|RĮ|RŎ|S;|SC|ST|Sd|Sy|S§|TX|Td|Tw|Tª|T¿|Tõ|U0|U:|UÊ|Uĉ|Uę|UĢ|UĦ|Uį|UĶ|Uň|V:|Vq|Vs|V¦|VÂ|Vó|Vþ|Wh|WÅ|WÉ|Wê|Wô|Wģ|Wň|X:|XI|XS|X`|Xâ|Xċ|Xė|XĠ|Xģ|Y"|YX|Yb|Yn|Yo|Y£|Y§|YÌ|YÎ|YÚ|Yá|Yă|YĜ|Yĥ|YĿ|Yʼn|Z6|Z:|Z;|Z¶|Zå|Zæ|Zċ|Zĺ|ZŊ|_,|_-|_c|_g|_à|_ĉ|_Ħ|_ł|`I|`z|`ð|`ă|`IJ|`ij|a4|a9|aF|a½|aä|añ|aď|aĝ|aĸ|b&|b7|b¸|bÝ|bë|bĺ|bņ|bŊ|c&|cP|cr|cÄ|cÑ|cÖ|cČ|cę|cĩ|cIJ|cķ|cĿ|d"|dI|d¥|d¦|dä|dģ|eK|e²|eý|eą|eČ|eĔ|eIJ|eĶ|eń|fM|fm|f¥|fÇ|fÒ|fæ|fì|fć|fě|fĝ|g!|gN|gx|gz|gÍ|gĚ|gĞ|h"|h¬|h¶|hä|hì|hï|hĆ|hņ|hŋ|hŏ|i'|i9|i¢|i¤|iÓ|iÖ|iā|iĕ|iĝ|iį|iĶ|jH|jT|j£|jµ|j·|jø|jĸ|jŐ|k0|k2|kA|k~|k¨|k½|kÙ|l&|lX|lc|ln|l£|l¥|lµ|lÃ|lå|lé|lĩ|lŌ|lŒ|m-|mW|mÐ|mĘ|mĮ|mĸ|n!|n2|nJ|nU|n¬|n½|nĆ|nĒ|nĔ|nĭ|nŇ|o5|o<|oD|oM|oÖ|oĂ|ps|pz|pº|pê|pĢ|pĥ|pIJ|qK|qa|q§|qÛ|qç|qý|qă|qĒ|qĴ|qĶ|qń|rA|re|rj|r§|r«|r¿|rÃ|rß|rò|rĔ|rĖ|rĢ|rķ|sD|sc|sÍ|sĀ|tT|tW|ta|t£|t¯|t±|tÊ|tÑ|tĚ|tļ|uV|ua|ub|uf|u¦|u´|u»|u¾|uË|uØ|uĞ|uĪ|uĹ|v:|vi|vw|v§|v½|vÄ|vÈ|vÌ|vù|vĮ|vļ|vʼn|vŎ|w!|w0|wZ|wg|wÞ|wæ|wò|wù|wĥ|wħ|wŎ|xD|x©|x®|xá|xû|xģ|xľ|xł|yC|ya|yr|y²|yÉ|yò|yĆ|yĠ|yĵ|yŒ|zM|zi|z¯|zø|zú|zć|zđ|~5|~Y|~¨|~º|~Û|~å|~ê|~ô|~ü|~ą|~ĥ|~Ī|~İ|~Ľ|~ō|¡J|¡±|¡¼|¡Ê|¡Ë|¡Ñ|¡ã|¡Ă|¡Ġ|¡Ĩ|¡ī|¡Œ|¢@|¢G|¢±|¢º|¢ç|¢Đ|¢İ|¢Ŀ|£F|£e|£Þ|£ä|£Ĵ|¤P|¤p|¤¯|¤µ|¤þ|¤ď|¤Ģ|¤ī|¥Z|¥¤|¥È|¥Ñ|¥û|¥Ď|¦T|¦Y|¦Z|¦a|¦b|¦e|¦q|¦r|¦¡|¦³|¦ĩ|¦IJ|¦ĺ|§b|§n|§w|§¿|§Ç|§Đ|¨3|¨Ã|¨Ë|¨Î|¨ë|¨÷|¨Č|¨ġ|¨Ī|¨Ĺ|¨ł|¨Œ|©I|©Z|©Ý|©ë|©ü|©ġ|©ŋ|ªP|ªo|ªr|ª¨|ª¯|ª²|ª¾|ªÇ|ªÔ|ªÙ|ªĉ|«K|«p|«£|«¨|«©|«¬|«®|«Õ|«Þ|«ß|«ö|«Đ|¬!|¬j|¬ª|¬¼|¬À|¬Ã|¬Ì|¬ú|¬ő|®#|®´|®É|®č|®đ|®ī|®ʼn|¯9|¯g|¯n|¯¹|¯È|¯Ē|¯ę|¯ġ|°N|°d|°k|°m|°s|°²|°È|°Î|°ê|°ó|°ʼn|±%|±R|±Y|±r|±æ|±Ŀ|±ń|²D|²H|²U|²×|²ã|²ä|²ç|²ą|²ħ|³`|³Ë|³ã|³ë|³ò|³ô|³ø|³Ċ|³Ĥ|³Ŀ|´~|´§|´Ê|´è|´Ķ|´Ŏ|µ:|µC|µ¢|µØ|µó|µĠ|µģ|µĤ|¶!|¶0|¶7|¶Y|¶¤|¶À|¶Ö|¶Ħ|¶ő|·p|·Á|·Ç|·ë|·î|·Ļ|·Ŋ|¸X|¸Z|¸¦|¸÷|¸ú|¸Đ|¸ĝ|¹,|¹>|¹M|¹Z|¹a|¹¢|¹Ì|¹×|¹Ø|¹þ|¹ĉ|¹Ĩ|º>|ºj|ºá|ºç|ºý|ºć|»2|»c|»°|»Ä|»ñ|»Ġ|»Ŋ|¼3|¼F|¼c|¼d|¼x|¼y|¼Ä|¼É|¼û|¼Č|¼ē|¼Ĩ|¼Ĭ|¼Ĵ|¼Ĺ|½k|½Ø|½ø|½ħ|¾2|¾:|¾L|¾¿|¾Á|¾ñ|¾ô|¾÷|¾đ|¾ĥ|¾Ń|¿D|¿«|¿ö|¿ø|¿Ĕ|¿ę|¿Ļ|¿ō|À3|ÀW|À°|ÀÆ|Àđ|ÀĘ|ÀĞ|Àģ|Àİ|Á§|Áé|Áõ|ÁĜ|Áĝ|ÁĪ|Áʼn|Â&|ÂB|ÂM|¿|Âø|Âħ|Âĺ|ÂĻ|ÂŁ|Âʼn|Ã`|Ãt|â|é|ÃĆ|ÃĖ|Ãĥ|Ãĩ|Ä_|Ä¥|ÄÌ|ÄÞ|Äð|ÄĆ|Äİ|ÄŁ|Å@|ÅY|Å«|ÅĄ|Åı|Åĸ|Æ;|ÆK|Æv|Ƶ|ƹ|ƽ|ÆÇ|ÆÛ|Æõ|Æü|ÆĆ|ÆĤ|Çd|Ǻ|ÇĔ|Çě|Çģ|ÇĶ|ÇĽ|Èd|Èz|È~|È´|Ƚ|ÈÂ|Èæ|Èõ|ÈŅ|ÉH|ÉO|ÉÌ|Éï|ÉČ|Éę|ÉĬ|Éĭ|ÉĴ|ÉŎ|Ê%|Ê6|ÊI|Êk|Êy|ʳ|ÊÁ|Êñ|Êą|ÊŃ|Ë!|ËH|Ëh|˺|Ë»|ËÆ|Ëğ|ËŌ|Ì3|Ì7|ÌG|Ìp|Ì«|Ìè|Ìï|ÌĮ|ÌŎ|ÍZ|Íd|Í©|ÍÖ|Íá|Íê|Íø|Íā|ÍŊ|Î-|Î_|ÎÊ|Îæ|Îó|Îù|ÎĀ|ÎĐ|Îġ|Îĭ|ÎŇ|Ï"|Ï5|Ï7|ÏA|ÏH|Ïl|ϱ|Ϲ|ÏÈ|ÏØ|ÏÚ|ÏÛ|ÏĻ|Ïʼn|ÐR|з|ÐÀ|ÐÓ|ÐĒ|Ðě|ÐĶ|Ðľ|Ñ©|ѵ|ÑÅ|ÑÈ|Ñʼn|ÒV|ÒÇ|Òĉ|Òħ|ÒŃ|Ó2|ÓD|ÓÎ|Óç|Ó÷|Óù|ÓĈ|Óķ|ÔE|ÔJ|Ôf|Ôy|ÔÆ|ÔÞ|Ôâ|ÔĂ|ÔĨ|Õ3|ÕG|Õh|Õ¹|ÕÁ|ÕÐ|Õÿ|Õğ|Õī|Ö7|ÖB|Öª|Ö¼|Öÿ|Öħ|Öij|×6|×>|×f|×¢|×µ|×·|×Â|×Ê|×Ñ|×ã|ØG|د|ØÄ|ØÊ|Øé|Øë|ØĊ|ØŇ|ØŐ|Øő|Ù:|Ùh|Ùx|Ù²|Ùč|Ùē|Ùę|Ùě|ÙĨ|ÙŇ|ÚE|Úq|Ú®|ÚÄ|ÚÒ|ÚÜ|Úä|Úí|Úı|Úķ|Û'|ÛW|Ûo|Ût|ÛÓ|Ûô|Ûõ|Ûû|Ûʼn|Ûŋ|Ü!|ÜJ|ÜÆ|ÜŐ|ÝR|Ýg|Ýq|Ýu|ÝÜ|Ýß|Ýð|Ýø|Ýč|ÝĶ|Ýʼn|Þº|ÞÝ|ÞĂ|Þą|Þć|ÞĠ|ÞĨ|ßu|ßÀ|ßė|à4|àS|à`|àk|à§|àé|àø|àĊ|àę|àģ|àĬ|á3|á£|á¶|áÄ|áÏ|áÑ|áâ|áü|áČ|áĽ|áņ|áŌ|â#|âY|â£|âº|âÓ|âġ|âĭ|âı|âŐ|âŒ|ã,|ã1|ã7|ã8|ãé|ãĭ|ä3|ä6|äN|ä¢|ä©|ä¬|äÏ|äĖ|äį|äŏ|åN|å¡|å¾|åØ|åë|åû|åč|åě|æ7|æT|æt|æ¸|æá|æï|æā|æij|ç2|çA|çJ|çl|ç¥|ç¬|çĝ|çĸ|èl|èq|èÓ|èÙ|èČ|èĖ|èĩ|èņ|èʼn|èő|éV|éZ|é®|é´|éí|éó|éû|éą|éě|éĭ|éŃ|ê5|êv|ê«|ê¶|êº|êÃ|êÔ|êİ|ëB|ëb|ë¤|ë¨|ëÎ|ëę|ëĞ|ì#|ì,|ì=|ì>|ìQ|ìS|ìV|ìº|ìā|ìġ|íJ|íV|í~|í¶|íò|íø|íă|íė|íĭ|î<|î=|îD|îR|îµ|îÚ|îÛ|îå|îê|îþ|îĒ|îĜ|îğ|ï%|ï,|ïa|ïu|ïÀ|ïÁ|ïá|ïĄ|ïą|ïċ|ïġ|ïĿ|ïŁ|ïŌ|ð6|ðE|ðp|ð¬|ðÞ|ðä|ðĚ|ðğ|ðļ|ñ1|ñ2|ñX|ñi|ñá|ñú|ñû|ñü|ñį|ñŊ|òB|ò«|ò¿|òÝ|òê|òď|ó5|óÄ|óÇ|óÈ|óÓ|óÕ|óĨ|óļ|ô4|ôh|ôÖ|ôî|ôþ|ôğ|ôŅ|õo|õ¢|õ¶|õÆ|õÓ|õä|õČ|õĕ|õģ|ö7|ö@|ön|ö¢|öÉ|öÒ|öÛ|öâ|öĝ|÷-|÷J|÷p|÷Ò|÷Ģ|÷ĭ|÷ı|÷ʼn|ø,|øo|ø¥|øÆ|øç|øè|øù|øĤ|øĥ|øħ|øň|ù7|ù9|ùs|ùu|ù¹|ùÍ|ùĆ|ùę|ùě|ùĹ|úG|úÅ|úÕ|úÖ|úÜ|úã|úç|úĂ|úĦ|û%|û;|ûR|ûh|ûu|ûz|û´|ûÐ|ûë|ûń|ûŊ|ü_|ü²|üê|üē|üğ|üł|üŅ|ý8|ý¨|ý©|ýÍ|ýÜ|ýĄ|ýċ|ýĩ|ýı|ýIJ|ýĸ|ýł|ýň|ýŎ|þ;|þD|þJ|þT|þr|þ·|þè|þĆ|ÿO|ÿÒ|ÿæ|ÿð|ÿć|ÿğ|ÿŇ|ĀA|ĀR|Ā_|Āv|Āá|ĀĘ|Āģ|Āİ|ā6|āM|ā¸|āä|āĮ|ĂX|ĂÁ|ĂÕ|ĂĚ|Ăķ|ĂĹ|ă"|ă°|ă¸|ăÉ|ăĆ|ăĚ|ăğ|ăĸ|ăĻ|ăŃ|ĄG|ĄJ|ĄK|Ą`|Ąc|Ąd|Ąg|Ąl|Ą³|ĄÄ|ĄÊ|ĄÌ|Ąú|ĄĽ|ą;|ąL|ąc|ąd|ąo|ąr|ą®|ą±|ąÄ|ąÅ|ąÇ|ąÍ|ą×|ąĈ|ąĎ|ąĐ|ąĩ|ąŌ|Ć´|Ƹ|Ć¼|ĆÑ|ĆØ|Ćí|ĆĊ|Ćņ|ĆŌ|ć4|ćx|ćy|ć¦|ć«|ćù|ćŃ|Ĉ&|Ĉ8|ĈE|ĈK|Ĉn|Ĉ¨|Ĉà|Ĉé|Ĉû|Ĉđ|Ĉĥ|ĈĪ|Ĉī|Ĉņ|ĉ@|ĉa|ĉÇ|ĉ×|ĉĩ|ĉň|Ċ#|Ċb|Ċt|Ċ»|ĊÁ|ĊÚ|Ċä|Ċÿ|Ċĝ|Ċĩ|Ċį|ċ'|ċD|ċ¶|ċÖ|ċê|ċþ|ċğ|ċņ|ČM|Čs|Č£|ČĨ|Čį|č±|čÖ|čè|čć|čğ|čń|čʼn|Ď`|Ď¡|Ď·|Ď¾|Ď¿|Ďą|Ďij|Ďŋ|ď"|ď5|ď8|ď=|ďD|ďs|ďØ|ďÚ|ďí|ďġ|ďĩ|ďļ|ĐF|ĐS|Đg|Đk|Đn|Đv|Đ~|ĐÖ|ĐÚ|ĐÜ|Đâ|ĐĞ|đA|đf|đ´|đ¸|đ¿|đÈ|đÖ|đà|đĽ|đŀ|đŌ|Ē%|ĒH|ĒÍ|ĒĹ|ĒĻ|ĒŁ|ĒŃ|ĒŇ|ē;|ēG|ēa|ēe|ēq|ē¶|ē»|ē÷|ēň|Ĕ"|Ĕ4|ĔÃ|Ĕý|Ĕą|ĔĆ|ĔĚ|ĔĞ|ĔĨ|ĕ"|ĕm|ĕw|ĕ¨|ĕ®|ĕÌ|ĕÑ|ĕĤ|Ė#|ĖR|Ėe|Ėu|Ė~|Ė¯|Ėĩ|ĖĬ|ėH|ė¹|ėö|ėú|ėÿ|ėĨ|Ęs|ĘÝ|Ęą|ĘČ|Ęĝ|Ęī|Ęĺ|Ęʼn|ęA|ęk|ęp|ę»|ęè|ęą|ęĐ|ęĨ|Ě'|Ě9|Ěe|Ěm|Ěo|Ě£|Ěª|Ě¾|Ěå|Ěë|Ěă|ĚĎ|ĚĜ|ĚĞ|ěP|ěx|ěê|ěî|ěö|ěĂ|ěĤ|ěĭ|ěļ|Ĝ%|ĜÜ|ĜĽ|ĝJ|ĝh|ĝ¹|ĝÃ|ĝÈ|ĝĖ|ĝĞ|ĝŇ|ĝŒ|Ğ&|Ğe|Ğs|ĞÖ|ğX|ğ²|ğ´|ğ¼|ğÙ|ğò|ğĂ|ğđ|ğĕ|ğĨ|ğĬ|ĠB|Ġc|Ġµ|ĠÈ|Ġè|Ġì|Ġđ|Ġě|ġ5|ġ<|ġH|ġm|ġº|ġÒ|ġü|ġă|ġĶ|ġŀ|Ģ;|Ģ¤|Ģ«|ĢÍ|ĢØ|Ģù|Ģă|ĢĐ|Ģđ|ģ-|ģL|ģ«|ģë|ģþ|ģċ|ģČ|ģĨ|ģĻ|Ĥf|Ĥª|Ĥñ|ĥM|ĥN|ĥU|ĥf|ĥz|ĥ»|ĥõ|ĥň|Ħ`|Ħj|Ħu|Ħ°|Ħ´|ĦÁ|ĦÈ|ĦÕ|Ħæ|ĦĤ|ħ4|ħp|ħ¡|ħ¦|ħ¶|ħß|ħç|ħĴ|ħĵ|ĨC|Ĩ°|ĨÂ|ĨÌ|Ĩç|Ĩõ|ĨĔ|Ĩŏ|ĩ8|ĩl|ĩt|ĩw|ĩċ|ĩđ|ĩĥ|ĩī|ĩŅ|Ī4|Ī9|ĪP|Īz|Ī±|ĪÅ|ĪÈ|ĪÝ|Īä|Īđ|ĪĦ|ĪĬ|ĪĽ|īb|īl|ī¥|ī¦|īÌ|īì|īČ|īĎ|īĐ|Ĭ#|Ĭ4|ĬF|Ĭ¤|Ĭê|Ĭí|Ĭû|Ĭĝ|ĬŌ|ĭ1|ĭK|ĭL|ĭz|ĭ¡|ĭ¯|ĭÌ|ĭâ|ĭĘ|ĭě|ĭĺ|ĮM|ĮR|Įd|Įx|Į¤|ĮÃ|ĮË|ĮÚ|Įå|ĮĤ|ĮĦ|Įī|į&|įD|įI|į¥|į«|įÉ|įÕ|įÛ|įĉ|įđ|įĒ|İQ|İi|ݬ|ݾ|İÕ|İ×|İĄ|İĬ|İľ|ı4|ıa|ıd|ıe|ıf|ı¡|ıĐ|ıĖ|ıIJ|IJ:|IJT|IJU|IJm|IJÛ|IJķ|IJŎ|ij0|ijb|ij¢|ij«|ijé|ijí|ijĎ|ijĘ|ijķ|Ĵ#|ĴF|ĴG|Ĵµ|Ĵ¹|ĴÈ|ĴÏ|Ĵý|Ĵþ|ĴĖ|ĵ8|ĵE|ĵK|ĵ¦|ĵ±|ĵÙ|ĵó|ĵõ|ĵĹ|Ķ6|ĶE|Ķl|Ķm|Ķ£|Ķ²|ĶÅ|Ķ÷|ĶĀ|Ķă|ĶĆ|ķv|ķ«|ķå|ķĢ|ķŌ|ĸ9|ĸH|ĸ¼|ĸè|ĸý|ĸĕ|ĸį|ŧ|Ĺ·|ĹÇ|ĹÈ|Ĺġ|Ĺĩ|ĺ#|ĺ6|ĺp|ĺr|ĺu|ĺæ|ĺí|ĺĖ|Ļ@|ĻI|Ļn|Ļ£|Ļ¶|ĻÂ|Ļú|ĻĮ|ĻŎ|ļ=|ļK|ļO|ļ_|ļ´|ļÀ|ļÄ|ļó|Ľ>|ĽC|ĽD|ĽG|ĽZ|Ľk|Ľr|Ľ¼|ĽÌ|Ľâ|ĽĮ|ĽŒ|ľf|ľÙ|ľÞ|ľĂ|ľī|ľł|ľņ|ĿÊ|Ŀď|Ŀđ|ĿĚ|Ŀĵ|ĿĻ|Ŀŏ|ŀC|ŀM|ŀ®|ŀà|ŀð|ŀõ|ŀČ|ŁE|ŁÁ|ŁÄ|Łõ|Łķ|ŁĿ|ł4|łG|łu|ł¬|łÏ|łò|łČ|łč|łĐ|łŌ|Ń6|Ń¿|ŃÅ|ŃË|ŃÚ|Ńü|Ńě|Ńņ|ń4|ń<|ńE|ńx|ń»|ńÄ|ńď|ńĺ|Ņ,|ŅP|Ņe|Ņn|Ņo|Ņ©|Ņ¯|Ņ½|ŅÛ|ŅĂ|ņî|ņð|ņô|ņĈ|ņī|ņĬ|ņı|Ň8|Ň:|ŇD|ŇT|Ň_|Ňd|Ňu|Ňª|Ňā|Ňć|ŇĈ|Ňň|ňK|ňL|ň¬|ňÇ|ňÏ|ňþ|ňĐ|ňĠ|ňŐ|ʼnQ|ʼn_|ʼnf|ʼnÉ|ʼnË|ʼnĨ|ʼnŃ|Ŋ0|ŊM|ŊW|ŊÔ|ŊĠ|ŋC|ŋH|ŋK|ŋÍ|ŋÒ|ŋØ|ŋÞ|ŋı|ŋĹ|Ō,|Ōl|Ō³|Ōò|Ōā|ŌĖ|ŌĚ|ŌĬ|ŌĮ|Ōĸ|ŌŒ|ōJ|ō¿|ōÀ|ōÝ|ōʼn|Ŏ8|Ŏ;|ŎQ|ŎV|Ŏ§|ŎÄ|ŎÏ|ŎĎ|ŎŇ|ŏ=|ŏD|ŏV|ŏ¹|ŏÈ|ŏÒ|ŏč|ŏĐ|ŏī|ŏĿ|ŏʼn|Ő2|Ő<|ŐC|ŐX|Őg|Ől|Őp|Ő®|Őİ|ő8|ő¹|őÀ|őó|őć|őĊ|őĖ|őĦ|őķ|őĸ|őŀ|ŒB|Œv|ŒÀ|ŒÒ|Œā|Œĉ|Œė|ŒĜ|ŒĦ|Œķ|Œľ).){255}Ň$

Đã thử nghiệm trên Regex101

Mỗi chuỗi phù hợp là một đường dẫn Hamilton từ Mđến Ň.
Tôi biết điều này là không đủ an toàn. Tôi cũng không biết làm thế nào để tạo ra các vấn đề khó khăn về đường dẫn Hamilton. Nó có quá nhiều giải pháp. Và như Martin Büttner đã nói, Mathematica đã làm điều đó ngay lập tức . Nhưng đây chỉ là một cách tiếp cận hoàn chỉnh NP khác ngoài COTO. Hãy cải thiện ý tưởng này và đăng câu trả lời mới.
Giải pháp tôi đã tạo ban đầu là: https://regex101.com/r/tM1vX8/2

Giải pháp tôi đã tạo:

MĈàękÙēGâġ<øÆv:ĴÏĻĮ¤ĢùĹ·îĜĽDÂŁEā6ĶĆŌĸ¼yò¿Ĕýı¡Ë!į&qKPpzđȽħ¶YÌïÁéVþèlåN2O¸úÜŐİľfćx®čńďļ=¨3d"÷ĭ¯9i'ĞsĀAÅĄ³`ðĚmĘĝŒBç¬ő¹>-ìS§nUĉňĠěĤª¾ôŅ,ĊtÊIĿĵ±RĬíăÉČĨŏĐÖij0°²ã1gÍáÑʼnŃÚÒÇģLÐĒ%ĪĦu¦añû´~ą;ĥ»créüêºjµó5ĩċğĕwŎÄ¥ĎŋØëÎæTXėH8ņībŊÔÞÝßÀWhäĖeIJÛõÓķ«ö7QŀCōJ×¢@_ł4£FZĺ#oĂÕÿŇ

3
Các trận đấu: Xem regex101.com/r/wK9hI1/1 Không khớp: good_job_user23013!
harius

14
Tôi tưởng tượng chúng tôi được chia thành 2 phe ngay bây giờ: những CPU đang cháy và hy vọng sẽ gặp may mắn, và những người cố gắng chứng minh P = NP trong một vài ngày.

1
@ WumpusQ.Wumbley Và những người trong chúng ta sử dụng Mathicala. ;)
Martin Ender

2
Vì harius không thể nhận xét để giải thích cách anh ta bẻ khóa nó, tôi sẽ nhanh chóng phác thảo cách tôi đã làm: mô hình thực sự mã hóa một đồ thị có hướng với 256 đỉnh (được biểu thị dưới dạng ký tự) và 2270 cạnh (được biểu thị là các cặp ký tự được phép được liên tiếp) và mỗi trận đấu là một đường dẫn Hamilton qua biểu đồ đó từ Mđến Ň. Toán học có một chức năng FindHamiltonianCycle. Chúng ta có thể biến điều này thành một chu kỳ đi qua Ň -> Mbằng cách thêm một cạnh mới và kết nối ŇMthông qua nó. Rất may, Mathicala tìm thấy một chu kỳ như vậy ngay lập tức. :)
Martin Ender

1
Chà, tôi là người thứ 3, nhưng dù sao tôi cũng cảm thấy muốn hoàn thành công cụ tìm đường được trồng tại nhà. Nó đã cho tôi cái này: regex101.com/r/nT2xM6/1

10

RegEx tương thích với JS - 3.571 byte [đã bẻ khóa]

Tôi ... sẽ ... có ... ít nhất ... một ... không bị trói buộc .... trình. o \ __ / o

[^,;]|^(.{,255}|.{257,})$|^(?!.*,;,,;;)|^(?!.*,;;,,;)|^(?!.*..,;;;,..,.)|^(?!.*.,.;.;.,.,,)|^(?!.*....,,....;;.;.;)|^(?!.*;.{8};,;;;..)|^(?!.*.{8};;.{6};,.,;)|^(?!.*..;....,.;;.{5};;...)|^(?!.*;,.;.{7},...;.{6};...)|^(?!.*...,.,..,,...,.{7};....)|^(?!.*.,;.;.{11};.{9};..,.)|^(?!.*.,.{6},....;.{11};,...,)|^(?!.*..;.{5};....,.{6};,.{12};.)|^(?!.*,,.,,.{8};.{11};.{10})|^(?!.*...,.{9};..,....;.{6},...;.{8})|^(?!.*.{6},.{8},.{6},.{8},..;.,....)|^(?!.*.{7};..;.{5},....;.{10};...;.{9})|^(?!.*..;.{7},.{5};;.{12},.{13},.)|^(?!.*.{5},..;...;.{5};..;.{6},.{22})|^(?!.*.{10},.{8},.{6},;.{14};.;.{6})|^(?!.*..,.;...,.{19};.;..;.{22})|^(?!.*.{6};..;.{14},,.{11};....,.{13})|^(?!.*.{8},.{12};.{19},.{6},;.{6},....)|^(?!.*.,.{11},...,.{7},.{16},.{11},.{6})|^(?!.*.{15};.{7};..;..,.{24},.{7},...)|^(?!.*...,,.{25};...;...;.{19},.{7})|^(?!.*.{26},....,....,.{15},.{6},.{6};....)|^(?!.*.{6};.,.{28};.{6},.{21},.;..)|^(?!.*.{21};..;..,.{22},.{21};,..)|^(?!.*.{5};.{22};,.{17};.{18},,.{8})|^(?!.*.{9};.{25};,.{20},.{6},.{14};.)|^(?!.*.,.{9},.{8};.{8};.{10};.,.{38})|^(?!.*.{18};.{8},.,.;.{5};.{6},.{41})|^(?!.*.{15},.{16};.{7};.{17};.{8};..,.{15})|^(?!.*.{18};.,.{25};..,..;.{13};.{24})|^(?!.*.{10};.{16},.{33};...;.{17},....,..)|^(?!.*.{13},.{46},.{9},.{11},,.,.{10})|^(?!.*.{14},.{33},.{18};....,.;.{16},....)|^(?!.*.{16};....;,.{8},.{30},.{31},.{6})|^(?!.*.{9},;.{15};.{22};.{30},.{16};...)|;.,,;;.;|,;,;,.,.|.;;,.;;;|;.;,,,.;|,...;.;.,,.;.|,.,.;.{5},,;|...;;....;;;;|;..,,,.;..;..|..;;,,..;.{7};.|;..,.,,...;...,...|...;;,.,.;.;.{6}|.;...;,....;.;...,|.;.{8};,.{6},.;.;|.{5},...,...;...;.;..;|...;....;..,..,.;..;...|...;.{5};,.{5},...,.;|;.,.{12},..;;.{7};|...;.{5},..;;.{9},..;.|.;,,..;.{13};....;..|.,;.{15},,...,.,..|.{8};.,....,...,..,.{9};|...;.;.{11},..,...;....;...|.,.,.{9};;....;..,.{10}|.{5};.,;....,.{15};..,|....;.{10};.;....,.{10},;...|....;.{8};;.{6},...;.{5};.{6}|..,;;.{16};....,;.{10}|.{18};.{9};,.,.,..;.|.{11},.{10};.;.;.{10};....,|....;.{11},.{10},..;.,.;.{8}|..,....,.;.{5},.{9},.{7};.{9}|.{7};.;.{5},.{13};.;.{7};...|.{5},.{15};;.{5},.{15},..;|.{12};...;..,.,..;.{5},.{17}|.{12},..;...;.{22},.,..,|.{10},.{11},.,.;.{11};;.{8}|.{11},.{9},.{5},...,.{14};.;....|;.{22};....,.;.{10};.{10};|.{13};...;.{13},.{6};.,.{10};.|.{11};....;.{17},.{9},.{5};,.|,.{14},.{12};.{6};...;.{14};...|..;.;.{19},.{16},.{5};.{6},...|.{27};..,;.{8};;.{8};.{7}|,.{6};.,.{20},.{13},.;.{11}|.{12};.{9},.{8};,.,.{17},.{10}|;.{22};..;.{5},..;....,.{22}|.{6},.{19};.{22};;,.{5};.{5}|;.{5},.{10};..;.;;.{39}|.{11};.{7};.;.{23};.{19};.;|,.{13};.{12},.,.{27};.{6},...|...;.;.{9};.{18};.;.{27},...|...;,.{12},..;.{28},.{15};..|....;.{8};..;...;.{17},.{19},.{14}|.{8};.{29};.{17};.{5};.{5};;...|...,..;.{14},.{8};.{12};.{18},.{10}|..;.;.{7};.{17},.{11},.{24},.{5}|;.{17},.;.{29};.{9};....;.{12}|.{5},..,.{6},.{16};;.{15},.{28}|...,.{12};..;.{10};.{31};.{14};|.{24},.{6},.{22},.,..,.{10};.{7}|.{10},.{12},.{5};.{12},.{7};.{23};.{8}|.{19};.,.{6},.{22},,.{7};.{22}|.{27};,.{14},..,.{7};.{15},.{12}|....;.{18},.{22},,..,.{27};....|...,.{11},.;.;.{9},.{46},.{11}|.{19},....,.{23},.{5},.{7};.{14},.{10}|.{19};,.{11};..,.{11};.{23};.{16}|.{11};.{34},.{14},.{9},.;.{13};|.{11};....,.{41},.{9};;.{8};.{14}|.{5};.;.,.{5};...;.,.{71}|.{6};.{13};....;....;.{20};.{24},.{16}|.{26};,.{19};....;.{11},.;.{26}|.{9},.{9},.{21},.{14};.{10};.{16};.{13}|.{10},.{5},.{9};.{13},...,.{24},.{28}|.{12},.{7};.{8};.{6};;.{36};.{23}|....;.{10},.{21};.{10};.{20},.{10},.{17}|.{19},.{7},.{17},.{9};.{13},.{22};.{10}|....,.{41};.{5},..,.{21};.{6};.{18}|.{25};....;.{28},.{12},.{19};.{8};.|.{10};....,.,.{22};.{11};.{44},.{5}

Giải quyết hầu như bất kỳ chuỗi nào ngay lập tức. Có thể kiểm tra trên bất kỳ bảng điều khiển JS nào.

+100 rep cho bất cứ ai bẻ khóa con thú này.


1
Thách thức được chấp nhận ...
Unihedron

10
Trận đấu : ThatWasActuallyFun. Không khớp : ,,;,;,,;,;;;,;,;,;;,,,,;,,,;,;;,,,,,,;;,,,,;;,;,,,;,;;;;,;;,;;,;,,;,,;,;;;,;,;,;;,,,;,;;;;,;,;;;,;,,;,,,;,,,,;,;;;;;;,,,,,;,;,;;;;;,;;;,;;,,,;;;,,;,;;,,,;,,,,,,;,;,,;;,,;;,,,;,;;,,,;,,;;,;,;,;;;;,,;,;,,;;;;;,,;,,;;,,;,,;;,,,,;,,;,,;;,;;;,,,,,;,,,,,,,,;,,,,.
nneonneo

5
XIN VUI LÒNG! ĐỪNG! THÌ, LÀ, BỊ, Ở! VÌ THẾ! NHANH CHÓNG!
TwiNight

6
anh bạn thật điên rồ, RegExp này có 122 lựa chọn thay thế, 40 trong số đó là những cái nhìn tiêu cực, WTG ++
CSᵠ

2
@nneonneo: Người giải SAT hiệu quả tệ hại. > ___ <Nhưng đạo cụ để chuyển đổi vấn đề và sử dụng các công cụ có sẵn ngoài đó. Tôi sẽ trao 100 đại diện cho một trong những câu trả lời của bạn càng sớm càng tốt, khoảng 19 giờ.
COTO

10

PCRE - 96byte UTF8, không phân cách, không cờ

[Bị đánh bại] bởi vì nneonneo là một người khôn ngoan

(?<Warning>[You] \Will (*FAIL)!|\So just (*SKIP)this one!|\And (*ACCEPT)defeat!|[^\d\D]{16,255})

Không có gì để xem ở đây, di chuyển dọc...


1
Trận đấu : So just *SKIPthis one!; Không có trận đấu:This string is not accepted. This string is not accepted. This string is not accepted. This string is not accepted. This string is not accepted. This string is not accepted. This string is not accepted. This string is still not accepted. Snow leopards FTW.
COTO

Đây không phải là cú pháp PCRE; đó là cú pháp Perl đơn giản. (Công cụ sửa đổi quay lui không hoạt động trên PCRE, AFAIK)
nneonneo

6
Trận đấu : Do just this one!. Không khớp : WellThatWasTooEasy. (Đã thử nghiệm với cả Perl 5.12 và Perl 5.18 trên máy của tôi)
nneonneo

@nneonneo đúng! PS: * ĐỘNG TỪ tồn tại trong PCRE trong ít nhất 5 năm, thực sự không đủ tài liệu.
CSᵠ

@COTO trận đấu không chính xác, NonMatch vẫn ổn.
CSᵠ

8

RegEx tương thích với JS - 733 byte [đã bẻ khóa]

Hãy thử điều này lần thứ hai với các số liệu được đảo ngược: một biểu thức thông thường ẩn nhưng một khóa tương đối nhỏ (quan trọng nhất là trong giới hạn 256 byte).

[^a-e]|^(?:.{0,33}|.{35,}|.{11}.(?!babcde).{22}|.{17}.(?!daacde).{16}|.{23}.(?!ecacbd).{10}|.{29}.(?!ab).{4}|.{31}.(?!cd)..|(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.).(?!\4\8\1\2\3\10|\6\3\11\2\9\1|\6\2\9\3\4\11|\8\10\6\5\3\1|\1\8\4\5\3\7).{22}|(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.).{6}.(?!\15\14\16\19\21\12|\17\12\22\13\16\15|\19\14\12\20\18\21|\16\22\19\14\20\12|\21\19\13\18\15\22).{16}|(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.).{12}.(?!\31\32\24\28\26\23|\33\25\30\29\27\32|\28\27\23\24\29\30|\31\33\23\29\26\32|\26\28\25\24\23\33).{10}|(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.).{18}.(?!\34\39|\37\38|\34\37|\36\42|\43\41|\35\38|\40\35|\44\42).{4}|(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.).{20}.(?!\51\45|\53\54|\47\46|\45\54|\50\51|\53\45|\52\51|\52\48|\48\55)..)$

Giải quyết hầu như bất kỳ chuỗi nào ngay lập tức. Đã thử nghiệm trên RegExr.

Mở rộng (để thuận tiện):

[^a-e] |
^(?:
    .{0,33}|
    .{35,}|
    .{11}.(?!babcde).{22}|
    .{17}.(?!daacde).{16}|
    .{23}.(?!ecacbd).{10}|
    .{29}.(?!ab).{4}|
    .{31}.(?!cd)..|
    (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.).(?!\4\8\1\2\3\10|\6\3\11\2\9\1|\6\2\9\3\4\11|\8\10\6\5\3\1|\1\8\4\5\3\7).{22}|
    (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.).{6}.(?!\15\14\16\19\21\12|\17\12\22\13\16\15|\19\14\12\20\18\21|\16\22\19\14\20\12|\21\19\13\18\15\22).{16}|
    (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.).{12}.(?!\31\32\24\28\26\23|\33\25\30\29\27\32|\28\27\23\24\29\30|\31\33\23\29\26\32|\26\28\25\24\23\33).{10}|
    (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.).{18}.(?!\34\39|\37\38|\34\37|\36\42|\43\41|\35\38|\40\35|\44\42).{4}|
    (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.).{20}.(?!\51\45|\53\54|\47\46|\45\54|\50\51|\53\45|\52\51|\52\48|\48\55)..
)$

Chúc mọi người những điều may mắn nhất. ;)


5
Trận đấu : aaaabaaacaaadaaa, Không trận đấu:cacdbbcabdeababcdedaacdeecacbdabcd
jimmy23013

@ user23013: Tôi mong đợi một vết nứt, nhưng không hoàn toàn nhanh như vậy. Bạn đã làm nó trên giấy?
COTO

1
Đúng. Chỉ có hai khả năng còn lại sau hai biểu thức dài đầu tiên. Và chỉ có một nhân vật không được biết đến sau ba, vì vậy tôi chỉ cần thử một vài lần để có được giải pháp.
jimmy23013

8

Hương vị .NET, 60 byte [đã bẻ khóa]

^((\d)(?!(|(\d\d)*\d|(\d{3})*\d\d|(\d{5})*\d{4}|\d{6})\2))+$

Đã thử nghiệm với Regex Storm .


3
Trận đấu : 1234567890012345. Không khớp : 1111222233334444.
jimmy23013

8
٠߀०০੦૦୦௦౦೦൦๐໐༠၀႐០᠐᥆᧐᭐᮰᱀᱐꘠꣐꤀꩐0Vì vậy, đây là tất cả các chữ số được xem xét trong .NET ...
jimmy23013

2
Điều đó thật điên rồ, một nửa trong số đó thậm chí không xuất hiện ngay trong trình duyệt của tôi
Sp3000

7

Hương vị Python: 211 byte [cracked]

Lưu ý: Câu trả lời này đã được đăng trước khi thay đổi quy tắc về độ dài khóa tối đa

Nghĩ rằng tôi sẽ có được quả bóng lăn với điều này:

(((((((((((((((\)\\\(58\)5\(58\(\\5\))\15\)9)\14\\919\)\)4992\)5065\14\(5)\13\\\14\\71\13\(\13\)4\\\13\\)\12\12\\28\13)\11)\10\\7217)\9\\)\8\\04)\7\)\(\8\()\6\(183)\5)\4\)65554922\\7624\)7)\3\)8\(0)\2\4\\8\\8)\1

(Đã thử nghiệm trên RegExr )


Sự bùng nổ backreference đơn giản của các nhân vật \()0123456789


Tôi có thể nói với bạn rằng chuỗi được chấp nhận là khoảng. Độ dài 7 triệu ký tự. Đối với việc thực sự đại diện cho nó bằng cách nào đó, có thể một tệp văn bản 7 MB ở đâu đó?
COTO

Vâng, đó là cách duy nhất để đi. Tôi nghĩ rằng tôi đã bắt đầu với một cái gì đó không khó để giải mã, nhưng mẹo là với việc tạo đầu ra. Nếu giới hạn phút không được áp dụng mặc dù điều này sẽ kéo dài hơn nhiều: P
Sp3000

Nhập những gì tôi tin là chuỗi duy nhất phù hợp với biểu thức chính quy của bạn tại RegExr.com đáng tin cậy làm hỏng trình duyệt Chrome của tôi. Trong Safari, nó hoạt động nhưng RegExr báo cáo 'thời gian chờ'. Bạn đã thử nghiệm thành công nó trực tuyến?
Emil

@Emil Tôi đã thử nghiệm nó thành công trong Firefox. Và tôi vẫn đang chờ để cứu nó.
jimmy23013

5
Khóa của tôi là 5281064 byte. Đã tải lên tệp tại đây (5 mb) mediafire.com/view/4jt41pzfp7855ax/match.txt
stokastic

7

RegEx tương thích với JS - 12.371 byte [đã bẻ khóa]

Sau một vài lời khích lệ của Martin và thấy rằng các cảnh sát khác đang vui vẻ gửi hơn 600 biểu thức KB, tôi quyết định thực hiện một lần nữa với điều này (và phiên bản được chỉnh sửa ở đây ).

Giải quyết hầu như bất kỳ chuỗi nào ngay lập tức. Có thể kiểm tra trên bất kỳ bảng điều khiển JS nào. Thật không may, kích thước làm cho nó không thể kiểm chứng bởi nhiều người thử nghiệm regex trực tuyến.


Ahaha Tôi sẽ cố gắng không chơi các loại hạt với kích thước regex - mặc dù thử thách này rất khó: / incrimins @ user23013
Sp3000

2
Trận đấu : this was not NP-hard. Không phù hợp :nerdnydeprdoypoypwwwdprelwsprwssddayaeeeysyaaaypowroplsaoprdaolasnoylaeaeadeosladnnosyoywyesorlrydwddadoeyponneeyaaapesenaalnneydaewndplredlerwaawlnrssapapaopnrdwnslowdoanlrernpwyyarpprwnrssdlaopsnnrnnnardpaessldalroleswnnooarlpllasapsesaorardwreylayrr
nneonneo

Tôi vừa hoàn thành nó một cách hoàn toàn (mất ~ 0,06 giây trong Python) và thu được bốn giải pháp được chấp nhận, nhưng do một lỗi trong regex của bạn, regex của bạn từ chối nhiều giải pháp khác. (Về cơ bản, bạn không kiểm tra xem mọi ký tự trong một "chuỗi con" đã cho có được sử dụng hay không và bạn không kiểm tra xem "chuỗi con" chỉ bao gồm 84 ký tự)
nneonneo

1
(Lưu ý cuối cùng: regapial.com xử lý regex này tốt; tôi đoán có lẽ nó chỉ sử dụng công cụ regex của trình duyệt).
nneonneo

1
Với 12k byte, không cần liên kết với nguồn bên ngoài. Câu trả lời SE có thể có tối đa 30k ký tự.
Martin Ender

7

Hương vị .NET, 458 byte [đã bẻ khóa]

^(?=[01]{10},[01]{10}$)(0|1((?<=^.)(?<l>){512}|(?<=^..)(?<l>){256}|(?<=^...)(?<l>){128}|(?<=^.{4})(?<l>){64}|(?<=^.{5})(?<l>){32}|(?<=^.{6})(?<l>){16}|(?<=^.{7})(?<l>){8}|(?<=^.{8})(?<l>){4}|(?<=^.{9})(?<l>){2}|(?<=^.{10})(?<l>){1})(?(l)(?<-l>(?=.*,(?:0|1(?<m>){512})(?:0|1(?<m>){256})(?:0|1(?<m>){128})(?:0|1(?<m>){64})(?:0|1(?<m>){32})(?:0|1(?<m>){16})(?:0|1(?<m>){8})(?:0|1(?<m>){4})(?:0|1(?<m>){2})(?:0|1(?<m>){1})$))|){1024})*,(?<-m>){669043}(?(m)(?!)|)

Điều này là dễ dàng. Nhưng tôi sẽ đăng một bài khó hơn sau.

Tôi nghĩ rằng tôi khá gần câu trả lời an toàn về mật mã.

Đã thử nghiệm trên RegexStorm .

Đây là cơ bản về yếu tố số nguyên. Chuỗi phù hợp phải là biểu diễn nhị phân của hai số nguyên AB. Đối với mỗi 1 từ A, nó sẽ khớp với nhóm 512, 256, ..., 1 lần l, có thể được thêm vào để nhận A. Và với mỗi lần l, nó sẽ khớp với Bcách sử dụng lookahead và Bnhóm lần mtương tự như Alần l. Vì vậy, mđược kết hợp tổng cộng nhiều A*Blần. Cuối cùng, nó loại bỏ nhóm m669043 lần và kiểm tra nếu không còn nữa m. Vì vậy, A*Bphải chính xác 669043.

Để đơn giản: 669043 = 809 * 827và giải pháp là dạng nhị phân của hai số này.

Phương pháp này không hoạt động với số lượng quá lớn để đảm bảo an toàn, vì công cụ Regex phải tăng số lượng nhiều lần. Nhưng tôi đã đăng một câu trả lời mới để làm việc với cơ sở số nguyên lớn 289. Nó có một sản phẩm dài 1536 bit.

Cũng cảm ơn Martin Büttner đã giới thiệu tính năng nhóm cân bằng của .NET Regex trong câu trả lời của anh ấy .


Ý tưởng này, wow ...
Sp3000

4
Trận đấu : 1100101001,1100111011. Không phù hợp :ThatsWhatIWantedToDo,Nice
nneonneo

1
Tôi nghĩ vấn đề duy nhất là trận đấu diễn ra dài theo cấp số nhân và số nguyên đích phải được biểu thị dưới dạng đếm lặp lại (do đó rất có thể bị giới hạn ở 32/64/128 bit, tất cả đều là yếu tố tầm thường). Tôi có một số ý tưởng về việc vượt qua những hạn chế này bằng cách nhân Karatsuba, nhưng sau đó tôi nhận được log (n) ^ 2 regexes có kích thước ...
nneonneo

1
@ Sp3000 pastebin.com/SW0YbQar Điều này hoạt động. Tôi cung không chăc tại sao. Có lẽ nhà phát triển của nó nghĩ rằng việc kết hợp các chuỗi trống lặp đi lặp lại không có ý nghĩa.
jimmy23013

1
@ Sp3000: hoàn toàn không bất ngờ; về cơ bản, bạn đang yêu cầu công cụ regex đếm đến 800000+. Điều này sẽ rất chậm (đặc biệt là khi "đếm" được thực hiện thông qua một máy ảo đánh giá biểu thức chính quy).
nneonneo

6

RegEx tương thích với JS - 2.447 byte [đã bẻ khóa]

Nỗ lực cuối cùng của tôi.

Tôi đang hy vọng rằng điều này kéo dài ít nhất một vài giờ trước khi bị nứt. Sau đó, tôi bỏ cuộc. : P

[^a-f]|^(?:.{0,51}|.{53,}|.{11}.(?!d).{40}|.{12}.(?!a).{39}|.{13}.(?!a).{38}|.{14}.(?!f).{37}|.{15}.(?!d).{36}|.{16}.(?!a).{35}|.{17}.(?!d).{34}|.{18}.(?!c).{33}|.{19}.(?!f).{32}|.{20}.(?!d).{31}|.{21}.(?!d).{30}|.{22}.(?!d).{29}|.{23}.(?!f).{28}|.{24}.(?!d).{27}|.{25}.(?!b).{26}|.{26}.(?!f).{25}|.{27}.(?!f).{24}|.{28}.(?!e).{23}|.{29}.(?!c).{22}|.{30}.(?!c).{21}|.{31}.(?!b).{20}|.{32}.(?!d).{19}|.{33}.(?!e).{18}|.{34}.(?!c).{17}|.{35}.(?!a).{16}|.{36}.(?!a).{15}|.{37}.(?!e).{14}|.{38}.(?!b).{13}|.{39}.(?!f).{12}|.{40}.(?!d).{11}|.{41}.(?!f).{10}|.{42}.(?!c).{9}|.{43}.(?!f).{8}|.{44}.(?!e).{7}|.{45}.(?!c).{6}|.{46}.(?!b).{5}|.{47}.(?!b).{4}|.{48}.(?!f).{3}|.{49}.(?!a).{2}|.{50}.(?!d).{1}|....(.)(.)(.).....(?!\1|\2|\3).{40}|.(.).(.)..(.).....{1}.(?!\4|\5|\6).{39}|...(.)(.).....(.).{2}.(?!\7|\8|\9).{38}|......(.)(.).(.)..{3}.(?!\10|\11|\12).{37}|....(.)(.)(.).....{4}.(?!\13|\14|\15).{36}|..(.)(.)(.).......{5}.(?!\16|\17|\18).{35}|(.).(.)......(.)..{6}.(?!\19|\20|\21).{34}|..(.).....(.).(.).{7}.(?!\22|\23|\24).{33}|(.)..(.)(.).......{8}.(?!\25|\26|\27).{32}|...(.).....(.)(.).{9}.(?!\28|\29|\30).{31}|.(.)(.).....(.)...{10}.(?!\31|\32|\33).{30}|.(.)...(.)..(.)...{11}.(?!\34|\35|\36).{29}|(.)(.).....(.)....{12}.(?!\37|\38|\39).{28}|...(.).(.).(.)....{13}.(?!\40|\41|\42).{27}|..(.)(.)..(.).....{14}.(?!\43|\44|\45).{26}|(.).(.)....(.)....{15}.(?!\46|\47|\48).{25}|(.)..(.)...(.)....{16}.(?!\49|\50|\51).{24}|(.)(.)(.).........{17}.(?!\52|\53|\54).{23}|.(.)..(.)(.)......{18}.(?!\55|\56|\57).{22}|(.)...(.)..(.)....{19}.(?!\58|\59|\60).{21}|.......(.)(.)(.)..{20}.(?!\61|\62|\63).{20}|.(.).....(.).(.)..{21}.(?!\64|\65|\66).{19}|..(.)..(.)...(.)..{22}.(?!\67|\68|\69).{18}|..(.).(.).....(.).{23}.(?!\70|\71|\72).{17}|...(.).(.)..(.)...{24}.(?!\73|\74|\75).{16}|.(.)(.)(.)........{25}.(?!\76|\77|\78).{15}|(.).(.).....(.)...{26}.(?!\79|\80|\81).{14}|.....(.)..(.).(.).{27}.(?!\82|\83|\84).{13}|(.).(.).(.).......{28}.(?!\85|\86|\87).{12}|..(.)...(.)..(.)..{29}.(?!\88|\89|\90).{11}|(.)....(.)..(.)...{30}.(?!\91|\92|\93).{10}|....(.).(.).(.)...{31}.(?!\94|\95|\96).{9}|...(.)..(.)(.)....{32}.(?!\97|\98|\99).{8}|..(.)..(.)..(.)...{33}.(?!\100|\101|\102).{7}|..(.).(.)(.)......{34}.(?!\103|\104|\105).{6}|..(.)(.)..(.).....{35}.(?!\106|\107|\108).{5}|.(.).....(.)(.)...{36}.(?!\109|\110|\111).{4}|..(.)....(.)(.)...{37}.(?!\112|\113|\114).{3}|...(.)..(.)...(.).{38}.(?!\115|\116|\117).{2}|....(.)(.)....(.).{39}.(?!\118|\119|\120).{1})$

Giống như tất cả các đệ trình trước đó, nó giải quyết ngay lập tức. Không giống như các lần gửi trước, quá dài cho RegExr.

Mở rộng:

[^a-f]|
^(?:
    .{0,51}|
    .{53,}|
    .{11}.(?!d).{40}|
    .{12}.(?!a).{39}|
    .{13}.(?!a).{38}|
    .{14}.(?!f).{37}|
    .{15}.(?!d).{36}|
    .{16}.(?!a).{35}|
    .{17}.(?!d).{34}|
    .{18}.(?!c).{33}|
    .{19}.(?!f).{32}|
    .{20}.(?!d).{31}|
    .{21}.(?!d).{30}|
    .{22}.(?!d).{29}|
    .{23}.(?!f).{28}|
    .{24}.(?!d).{27}|
    .{25}.(?!b).{26}|
    .{26}.(?!f).{25}|
    .{27}.(?!f).{24}|
    .{28}.(?!e).{23}|
    .{29}.(?!c).{22}|
    .{30}.(?!c).{21}|
    .{31}.(?!b).{20}|
    .{32}.(?!d).{19}|
    .{33}.(?!e).{18}|
    .{34}.(?!c).{17}|
    .{35}.(?!a).{16}|
    .{36}.(?!a).{15}|
    .{37}.(?!e).{14}|
    .{38}.(?!b).{13}|
    .{39}.(?!f).{12}|
    .{40}.(?!d).{11}|
    .{41}.(?!f).{10}|
    .{42}.(?!c).{9}|
    .{43}.(?!f).{8}|
    .{44}.(?!e).{7}|
    .{45}.(?!c).{6}|
    .{46}.(?!b).{5}|
    .{47}.(?!b).{4}|
    .{48}.(?!f).{3}|
    .{49}.(?!a).{2}|
    .{50}.(?!d).{1}|
    ....(.)(.)(.).....(?!\1|\2|\3).{40}|
    .(.).(.)..(.).....{1}.(?!\4|\5|\6).{39}|
    ...(.)(.).....(.).{2}.(?!\7|\8|\9).{38}|
    ......(.)(.).(.)..{3}.(?!\10|\11|\12).{37}|
    ....(.)(.)(.).....{4}.(?!\13|\14|\15).{36}|
    ..(.)(.)(.).......{5}.(?!\16|\17|\18).{35}|
    (.).(.)......(.)..{6}.(?!\19|\20|\21).{34}|
    ..(.).....(.).(.).{7}.(?!\22|\23|\24).{33}|
    (.)..(.)(.).......{8}.(?!\25|\26|\27).{32}|
    ...(.).....(.)(.).{9}.(?!\28|\29|\30).{31}|
    .(.)(.).....(.)...{10}.(?!\31|\32|\33).{30}|
    .(.)...(.)..(.)...{11}.(?!\34|\35|\36).{29}|
    (.)(.).....(.)....{12}.(?!\37|\38|\39).{28}|
    ...(.).(.).(.)....{13}.(?!\40|\41|\42).{27}|
    ..(.)(.)..(.).....{14}.(?!\43|\44|\45).{26}|
    (.).(.)....(.)....{15}.(?!\46|\47|\48).{25}|
    (.)..(.)...(.)....{16}.(?!\49|\50|\51).{24}|
    (.)(.)(.).........{17}.(?!\52|\53|\54).{23}|
    .(.)..(.)(.)......{18}.(?!\55|\56|\57).{22}|
    (.)...(.)..(.)....{19}.(?!\58|\59|\60).{21}|
    .......(.)(.)(.)..{20}.(?!\61|\62|\63).{20}|
    .(.).....(.).(.)..{21}.(?!\64|\65|\66).{19}|
    ..(.)..(.)...(.)..{22}.(?!\67|\68|\69).{18}|
    ..(.).(.).....(.).{23}.(?!\70|\71|\72).{17}|
    ...(.).(.)..(.)...{24}.(?!\73|\74|\75).{16}|
    .(.)(.)(.)........{25}.(?!\76|\77|\78).{15}|
    (.).(.).....(.)...{26}.(?!\79|\80|\81).{14}|
    .....(.)..(.).(.).{27}.(?!\82|\83|\84).{13}|
    (.).(.).(.).......{28}.(?!\85|\86|\87).{12}|
    ..(.)...(.)..(.)..{29}.(?!\88|\89|\90).{11}|
    (.)....(.)..(.)...{30}.(?!\91|\92|\93).{10}|
    ....(.).(.).(.)...{31}.(?!\94|\95|\96).{9}|
    ...(.)..(.)(.)....{32}.(?!\97|\98|\99).{8}|
    ..(.)..(.)..(.)...{33}.(?!\100|\101|\102).{7}|
    ..(.).(.)(.)......{34}.(?!\103|\104|\105).{6}|
    ..(.)(.)..(.).....{35}.(?!\106|\107|\108).{5}|
    .(.).....(.)(.)...{36}.(?!\109|\110|\111).{4}|
    ..(.)....(.)(.)...{37}.(?!\112|\113|\114).{3}|
    ...(.)..(.)...(.).{38}.(?!\115|\116|\117).{2}|
    ....(.)(.)....(.).{39}.(?!\118|\119|\120).{1}
)$

2
Trận đấu : aaaabaaacaaadaaa. Không khớp : fdeacdbfbdcadaafdadcfdddfdbffeccbdecaaebfdfcfecbbfad.
jimmy23013

Thay thế (.)bằng ký tự phù hợp và sắp xếp theo ký tự đó, và nó sẽ trở nên rõ ràng.
jimmy23013

1
Lưu ý rằng đây là NP-đầy đủ, nhưng không an toàn về mặt mật mã. Và có quá nhiều hạn chế và quá ít biến số để gây khó khăn.
jimmy23013

1
@ user23013: Chơi tốt, thưa ông. ;) Và thực sự tôi tin rằng điều này có thể làm giảm SAT, đó là ý định của tôi. Chỉ cần không đủ bit trong đó để làm cho nó khó khăn, như bạn nói.
COTO

5

Hương vị Python (721 byte) [đã bẻ khóa]

Đã đến lúc "Phân tích vấn đề v2":

^(((?(8)S)(((?(9)I|\\)(?(3)\]|Z)((?(7)l|R)(((((((?(4)p)((?(7)x)(?(1)B|Z)(?(11)\()(?(9)X)(?(8)P|T)(?(6)a|E)((?(5)E)(((?(8)3|\[)((?(3)\(|1)((?(1)M|L)(?(3)v|b)(?(2)t|l)(?(1)q)(?(1)K|H)(?(2)\)|R)(?(3)O|K)(?(5)l|l)(((?(2)\[|3)((?(2)N)((?(2)\\)((?(1)E|\])(?(1)\[)([(?(1)Q)])(?(24)\[)(?(24)q))(?(24)g))(?(22)s|U)(?(22)H)(?(23)c|U))(?(24)Q)(?(24)Q)(?(24)H)(?(23)K|\[))(?(22)e|y))(?(24)\\)(?(21)P|4)(?(19)T)(?(24)\))))(?(24)M)(?(17)\()(?(24)2))(?(19)7)(?(21)t|X)(?(22)v))(?(24)\[)(?(19)A|L)(?(16)E|1))(?(19)1|c)(?(14)K|\\)(?(19)4|5)(?(24)\\)(?(20)r)))(?(24)B)(?(24)w)(?(24)5))(?(24)\())(?(24)\\))(?(24)T))(?(9)\[))(?(15)z|w))(?(24)K)\7F(?(24)m)(?(24)R))(?(24)\[))(?(24)h))(?(14)x|t)(?(3)R|M)(?(24)\])(?(24)w))(?(21)z|6)(?(16)r)()$

Đã thử nghiệm trên Regex101 .


Regex này thực sự là "giấu một cái cây trong rừng". Phần lớn của (?(id)yes-pattern|no-pattern)biểu thức chính quy bao gồm các biểu thức, phù hợp với mẫu thích hợp tùy thuộc vào việc một nhóm có id được chỉ định có tồn tại hay không. Hầu hết các biểu thức này không đóng góp cho khóa, nhưng một số thì làm. Tuy nhiên, ẩn giấu một cách tinh tế trong regex [(?(1):Q)]thực sự là một bộ ký tự\7đòi hỏi bạn phải theo dõi các nhóm bằng cách nào đó. Cả hai thứ này sẽ hiển thị trên bất kỳ trình soạn thảo nào với phần tô sáng, nhưng có nghĩa là vấp phải bất cứ ai không thận trọng.


Man, đây sẽ là một số công việc.
stokastic

4
\ZRZTE[1LblHRKl3]?sHcKePT(7tvAE1K4r[zZTE[1LblHRKl3]?sHcKePT(7tvAE1K4rFxRzrDiêm. akhông khớp
g.rocket

Ngoài ra, tập hợp tất cả các kết quả khớp có thể là (nhận xét trước đó của tôi) với cả hai ?thay thế bằng bất kỳ ký tự nào trong(?(1)Q)
g.rocket

(trên Regex101, nó cho bạn biết chính xác những gì nó đã cố khớp khi trận đấu thất bại. Điều này làm cho việc tìm kiếm các công cụ khớp phù hợp dễ dàng hơn (ít nhất là để phát hiện lỗi chính tả trong giải pháp của tôi)).
g.rocket

Tôi đã gần gũi, tôi chỉ thiếu vắng ?'s
stokastic

5

Hương vị Python (4842 byte) [đã bẻ khóa]

Cảm ơn @COTO vì những ý tưởng và lời khuyên

Tôi thích ý tưởng 3-SAT của @ COTO đến nỗi tôi nghĩ tôi sẽ cố gắng tạo ra regex của riêng mình dựa trên ý tưởng đó. Mặc dù vậy, tôi không quen thuộc với các lý thuyết về 3-SAT, vì vậy tôi sẽ cầu nguyện với các vị thần RNG và hy vọng tôi có đủ các hạn chế.

Tôi đã cố gắng giữ cho regex dưới 5000 ký tự được công bằng - rõ ràng các regex dài hơn sẽ không thể bị bẻ khóa, nhưng chúng cũng sẽ không vui khi bẻ khóa.

[^01]|^(.{0,81}|.{83,}|....0.{10}1.{22}0.{43}|....0.{14}0.{35}0.{26}|....0.{16}0.{5}1.{54}|....0.{17}1.{34}0.{24}|....1.{11}0.{41}1.{23}|....1.{12}1.{27}1.{36}|....1.{22}1.{38}1.{15}|....1.{30}0.{35}1.{10}|....1.{46}0.1.{28}|....1.{6}1.{65}0....|...0....1.1.{71}|...0.{18}0.{23}0.{35}|...1.{11}1.{33}1.{32}|..0...0.{53}1.{21}|..0.{30}1.{17}0.{30}|..1.{41}0.{10}0.{26}|.0.{13}0.{39}1.{26}|.0.{18}0.{49}0.{11}|.0.{27}1.{36}0.{15}|.0.{31}11.{47}|.00.{37}1.{41}|.1.{32}0.{31}1.{15}|.1.{38}0.{25}0.{15}|.1.{7}0.{38}0.{33}|.{10}0.{14}0.{15}0.{40}|.{10}0.{15}1.{15}1.{39}|.{10}0.{27}1.{11}1.{31}|.{10}0.{39}0.{7}0.{23}|.{10}0.{42}10.{27}|.{10}0.{9}0.{38}0.{22}|.{10}1.{45}1.{16}0.{8}|.{10}1.{47}0.{15}0.{7}|.{10}1.{59}0.{5}1.{5}|.{11}0.{11}0.{54}0...|.{11}0.{29}1.{35}0....|.{11}1.{32}0.{25}1.{11}|.{11}1.{48}1.{6}1.{14}|.{11}11.{50}1.{18}|.{12}0.{27}1.{18}0.{22}|.{12}0.{45}1.{7}1.{15}|.{12}1.{15}0.{42}1.{10}|.{13}0.{40}1...0.{23}|.{13}1.{20}1.{5}1.{41}|.{13}1.{22}0.{31}0.{13}|.{13}1.{24}1.{39}1...|.{13}1.{58}0.{8}0|.{14}0.{22}0....1.{39}|.{14}0.{23}0.{23}1.{19}|.{14}0.{53}10.{12}|.{14}1.{19}1.{11}0.{35}|.{14}1.{19}1.{21}1.{25}|.{14}1.{23}0.{14}0.{28}|.{14}1.{24}1.{12}1.{29}|.{14}1.{35}0.{22}0.{8}|.{14}1.{48}0.{15}1..|.{14}1.{58}0....1...|.{14}1.{65}11|.{14}1.{6}1.0.{58}|.{15}0...01.{61}|.{15}0.{12}0.{30}0.{22}|.{15}0.{15}0.{34}0.{15}|.{15}0.{30}1.{25}0.{9}|.{15}0.{31}0.{32}1.|.{15}0.{36}0.{25}1...|.{15}1.{14}1.{21}1.{29}|.{15}1.{16}1.{16}1.{32}|.{15}1.{20}0.{32}1.{12}|.{16}0.{35}1.{24}0....|.{16}0.{36}1.{15}1.{12}|.{16}1.{13}1.{22}0.{28}|.{16}1.{16}1.{14}0.{33}|.{16}1.{48}1.0.{14}|.{17}1.{29}1.{31}0..|.{17}1.{47}1.{8}0.{7}|.{17}1.{9}0.{20}0.{33}|.{18}0..0.{59}1|.{18}0.{33}1.{6}0.{22}|.{18}0.{36}1.{24}1.|.{18}0.{39}0.{17}1.{5}|.{18}1..0.{35}0.{24}|.{18}1.{16}0.{7}1.{38}|.{19}0.{17}0.{8}1.{35}|.{19}1.{42}00.{18}|.{20}0.{25}1.{31}1...|.{20}0.{43}1.{12}0....|.{20}0.{8}1.{40}0.{11}|.{20}00.{56}1...|.{20}1.{38}0.{7}1.{14}|.{21}0.{39}1.{16}0...|.{22}1....0.{44}1.{9}|.{22}1..1.{20}1.{35}|.{23}0.{39}1.{8}0.{9}|.{23}0.{8}1.{41}1.{7}|.{23}1.{18}1.{25}0.{13}|.{23}1.{20}0.{6}0.{30}|.{24}0.{17}1.{16}0.{22}|.{24}0.{21}1.{13}0.{21}|.{24}1...1.{49}0...|.{24}1.{5}0.{37}0.{13}|.{24}1.{8}1.{37}0.{10}|.{25}0.{36}0....0.{14}|.{25}1....0.{29}0.{21}|.{25}1....1.{10}1.{40}|.{25}1.{13}1.{13}0.{28}|.{25}1.{40}0.{7}0.{7}|.{26}0.{13}1.{21}0.{19}|.{26}0.{13}1.{25}1.{15}|.{27}0.{20}1.{11}0.{21}|.{27}0.{36}0.{6}0.{10}|.{27}1....1.0.{47}|.{27}1...0.{13}1.{36}|.{27}1.{10}0.{26}0.{16}|.{27}1.{30}1.{15}0.{7}|.{28}0.{14}1.{37}0|.{28}0.{21}1.0.{29}|.{28}0.{26}0.{16}0.{9}|.{28}1.{18}1.{23}1.{10}|.{29}0.{17}0.0.{32}|.{29}1.{24}0.{19}1.{7}|.{29}1.{46}1....0|.{30}1.{18}1.{9}0.{22}|.{30}1.{28}0....1.{17}|.{32}0.{25}1.{6}1.{16}|.{33}0.{22}1.{12}0.{12}|.{33}0.{6}0.{11}0.{29}|.{33}1.{5}1.{31}0.{10}|.{34}0.{13}0.{8}0.{24}|.{34}1...1.{35}0.{7}|.{34}1..1.{29}1.{14}|.{34}1.{38}01.{7}|.{34}1.{5}0.{40}1|.{34}1.{6}1.{38}1.|.{34}1.{7}0.{31}0.{7}|.{34}11...1.{42}|.{35}0.{19}0..0.{23}|.{35}1.{12}1.{24}0.{8}|.{36}0.{6}1.{17}1.{20}|.{36}0.{7}1.{17}1.{19}|.{36}0.{8}0.{13}1.{22}|.{36}1.{14}0.{9}1.{20}|.{37}0.{26}1.{16}0|.{37}1.{27}0.{10}0.{5}|.{38}1.{21}1.{7}1.{13}|.{39}0..0.{20}0.{18}|.{39}0.{15}0.{19}1.{6}|.{40}0....0.{28}1.{7}|.{40}0.{15}1.0.{23}|.{40}0.{5}1.{16}0.{18}|.{40}0.{8}1.{29}1..|.{40}00.0.{38}|.{41}0.0.{20}0.{17}|.{41}00.{32}0.{6}|.{41}1.{16}1.{21}1.|.{41}1.{8}1.{18}0.{12}|.{42}1.{31}1.{6}1|.{42}11.{27}0.{10}|.{43}0.{34}10..|.{44}1.0.{10}1.{24}|.{45}0.{9}0.{5}0.{20}|.{45}1.{12}0.{22}1|.{45}1.{17}1....0.{13}|.{45}1.{9}0...0.{22}|.{46}0.{11}1.{19}1...|.{46}1.{24}0.{5}0....|.{47}11.{8}1.{24}|.{48}0.{12}1....0.{15}|.{48}0.{15}0.{13}1...|.{48}1...0.{13}0.{15}|.{48}1.{11}0..0.{18}|.{48}11.{21}0.{10}|.{49}1.{7}1.{14}0.{9}|.{51}1.{12}1.{5}1.{11}|.{54}0.{13}0.{6}1.{6}|.{54}1.{11}1.1.{13}|.{56}0.{16}0..1.{5}|.{56}1.{11}0.{6}0.{6}|.{58}1....1.{6}0.{11}|.{5}0.{17}0.{42}0.{15}|.{5}0.{23}1.{26}1.{25}|.{5}0.{34}1.{22}0.{18}|.{5}0.{6}1.{13}1.{55}|.{5}1.{12}0.{31}1.{31}|.{5}1.{16}0.{39}1.{19}|.{5}1.{16}1.1.{57}|.{5}1.{24}1.{15}1.{35}|.{5}1.{24}1.{47}1...|.{66}0.0.{5}1.{7}|.{6}0....1.{24}0.{45}|.{6}0.{19}0.{7}1.{47}|.{6}0.{23}0.{14}0.{36}|.{6}0.{25}1.{41}0.{7}|.{6}0.{46}1.{22}0.{5}|.{6}0.{52}11.{21}|.{6}1.{35}10.{38}|.{7}0.{20}0.{16}0.{36}|.{7}0.{34}1.{20}1.{18}|.{7}0.{6}0.{36}0.{30}|.{7}0.{7}0.{15}0.{50}|.{7}0.{8}1.{42}1.{22}|.{7}1.{5}1.{56}1.{11}|.{7}1.{67}0..1...|.{8}0.{10}0.{38}0.{23}|.{8}0.{41}11.{30}|.{8}0.{9}1.{37}1.{25}|.{8}1.{50}1.{14}1.{7}|.{9}0..1.{55}0.{13}|.{9}0.{21}1.{42}0.{7}|.{9}0.{59}00.{11}|.{9}0.{9}0....1.{57}|.{9}00.{41}1.{29}|.{9}1....0.{20}0.{46}|.{9}1...0.{41}1.{26}|.{9}1.{30}0.{16}1.{24}|.{9}1.{30}0.{37}1...|.{9}1.{30}1.{14}1.{26}|.{9}1.{40}01.{30}|0.{17}1.{34}0.{28}|0.{23}1.{43}1.{13}|0.{30}1.{26}1.{23}|1.{13}00.{66}|1.{28}0.{42}1.{9}|1.{36}0.{35}1.{8}|1.{42}1.{32}1.{5}|1.{49}0.{16}0.{14}|1.{52}0.{7}0.{20}|)$

Và đây là một dạng dễ đọc hơn một chút:

[^01]|
^(
  .{0,81}|
  .{83,}|
  ....0.{10}1.{22}0.{43}|
  ....0.{14}0.{35}0.{26}|
  ....0.{16}0.{5}1.{54}|
  ....0.{17}1.{34}0.{24}|
  ....1.{11}0.{41}1.{23}|
  ....1.{12}1.{27}1.{36}|
  ....1.{22}1.{38}1.{15}|
  ....1.{30}0.{35}1.{10}|
  ....1.{46}0.1.{28}|
  ....1.{6}1.{65}0....|
  ...0....1.1.{71}|
  ...0.{18}0.{23}0.{35}|
  ...1.{11}1.{33}1.{32}|
  ..0...0.{53}1.{21}|
  ..0.{30}1.{17}0.{30}|
  ..1.{41}0.{10}0.{26}|
  .0.{13}0.{39}1.{26}|
  .0.{18}0.{49}0.{11}|
  .0.{27}1.{36}0.{15}|
  .0.{31}11.{47}|
  .00.{37}1.{41}|
  .1.{32}0.{31}1.{15}|
  .1.{38}0.{25}0.{15}|
  .1.{7}0.{38}0.{33}|
  .{10}0.{14}0.{15}0.{40}|
  .{10}0.{15}1.{15}1.{39}|
  .{10}0.{27}1.{11}1.{31}|
  .{10}0.{39}0.{7}0.{23}|
  .{10}0.{42}10.{27}|
  .{10}0.{9}0.{38}0.{22}|
  .{10}1.{45}1.{16}0.{8}|
  .{10}1.{47}0.{15}0.{7}|
  .{10}1.{59}0.{5}1.{5}|
  .{11}0.{11}0.{54}0...|
  .{11}0.{29}1.{35}0....|
  .{11}1.{32}0.{25}1.{11}|
  .{11}1.{48}1.{6}1.{14}|
  .{11}11.{50}1.{18}|
  .{12}0.{27}1.{18}0.{22}|
  .{12}0.{45}1.{7}1.{15}|
  .{12}1.{15}0.{42}1.{10}|
  .{13}0.{40}1...0.{23}|
  .{13}1.{20}1.{5}1.{41}|
  .{13}1.{22}0.{31}0.{13}|
  .{13}1.{24}1.{39}1...|
  .{13}1.{58}0.{8}0|
  .{14}0.{22}0....1.{39}|
  .{14}0.{23}0.{23}1.{19}|
  .{14}0.{53}10.{12}|
  .{14}1.{19}1.{11}0.{35}|
  .{14}1.{19}1.{21}1.{25}|
  .{14}1.{23}0.{14}0.{28}|
  .{14}1.{24}1.{12}1.{29}|
  .{14}1.{35}0.{22}0.{8}|
  .{14}1.{48}0.{15}1..|
  .{14}1.{58}0....1...|
  .{14}1.{65}11|
  .{14}1.{6}1.0.{58}|
  .{15}0...01.{61}|
  .{15}0.{12}0.{30}0.{22}|
  .{15}0.{15}0.{34}0.{15}|
  .{15}0.{30}1.{25}0.{9}|
  .{15}0.{31}0.{32}1.|
  .{15}0.{36}0.{25}1...|
  .{15}1.{14}1.{21}1.{29}|
  .{15}1.{16}1.{16}1.{32}|
  .{15}1.{20}0.{32}1.{12}|
  .{16}0.{35}1.{24}0....|
  .{16}0.{36}1.{15}1.{12}|
  .{16}1.{13}1.{22}0.{28}|
  .{16}1.{16}1.{14}0.{33}|
  .{16}1.{48}1.0.{14}|
  .{17}1.{29}1.{31}0..|
  .{17}1.{47}1.{8}0.{7}|
  .{17}1.{9}0.{20}0.{33}|
  .{18}0..0.{59}1|
  .{18}0.{33}1.{6}0.{22}|
  .{18}0.{36}1.{24}1.|
  .{18}0.{39}0.{17}1.{5}|
  .{18}1..0.{35}0.{24}|
  .{18}1.{16}0.{7}1.{38}|
  .{19}0.{17}0.{8}1.{35}|
  .{19}1.{42}00.{18}|
  .{20}0.{25}1.{31}1...|
  .{20}0.{43}1.{12}0....|
  .{20}0.{8}1.{40}0.{11}|
  .{20}00.{56}1...|
  .{20}1.{38}0.{7}1.{14}|
  .{21}0.{39}1.{16}0...|
  .{22}1....0.{44}1.{9}|
  .{22}1..1.{20}1.{35}|
  .{23}0.{39}1.{8}0.{9}|
  .{23}0.{8}1.{41}1.{7}|
  .{23}1.{18}1.{25}0.{13}|
  .{23}1.{20}0.{6}0.{30}|
  .{24}0.{17}1.{16}0.{22}|
  .{24}0.{21}1.{13}0.{21}|
  .{24}1...1.{49}0...|
  .{24}1.{5}0.{37}0.{13}|
  .{24}1.{8}1.{37}0.{10}|
  .{25}0.{36}0....0.{14}|
  .{25}1....0.{29}0.{21}|
  .{25}1....1.{10}1.{40}|
  .{25}1.{13}1.{13}0.{28}|
  .{25}1.{40}0.{7}0.{7}|
  .{26}0.{13}1.{21}0.{19}|
  .{26}0.{13}1.{25}1.{15}|
  .{27}0.{20}1.{11}0.{21}|
  .{27}0.{36}0.{6}0.{10}|
  .{27}1....1.0.{47}|
  .{27}1...0.{13}1.{36}|
  .{27}1.{10}0.{26}0.{16}|
  .{27}1.{30}1.{15}0.{7}|
  .{28}0.{14}1.{37}0|
  .{28}0.{21}1.0.{29}|
  .{28}0.{26}0.{16}0.{9}|
  .{28}1.{18}1.{23}1.{10}|
  .{29}0.{17}0.0.{32}|
  .{29}1.{24}0.{19}1.{7}|
  .{29}1.{46}1....0|
  .{30}1.{18}1.{9}0.{22}|
  .{30}1.{28}0....1.{17}|
  .{32}0.{25}1.{6}1.{16}|
  .{33}0.{22}1.{12}0.{12}|
  .{33}0.{6}0.{11}0.{29}|
  .{33}1.{5}1.{31}0.{10}|
  .{34}0.{13}0.{8}0.{24}|
  .{34}1...1.{35}0.{7}|
  .{34}1..1.{29}1.{14}|
  .{34}1.{38}01.{7}|
  .{34}1.{5}0.{40}1|
  .{34}1.{6}1.{38}1.|
  .{34}1.{7}0.{31}0.{7}|
  .{34}11...1.{42}|
  .{35}0.{19}0..0.{23}|
  .{35}1.{12}1.{24}0.{8}|
  .{36}0.{6}1.{17}1.{20}|
  .{36}0.{7}1.{17}1.{19}|
  .{36}0.{8}0.{13}1.{22}|
  .{36}1.{14}0.{9}1.{20}|
  .{37}0.{26}1.{16}0|
  .{37}1.{27}0.{10}0.{5}|
  .{38}1.{21}1.{7}1.{13}|
  .{39}0..0.{20}0.{18}|
  .{39}0.{15}0.{19}1.{6}|
  .{40}0....0.{28}1.{7}|
  .{40}0.{15}1.0.{23}|
  .{40}0.{5}1.{16}0.{18}|
  .{40}0.{8}1.{29}1..|
  .{40}00.0.{38}|
  .{41}0.0.{20}0.{17}|
  .{41}00.{32}0.{6}|
  .{41}1.{16}1.{21}1.|
  .{41}1.{8}1.{18}0.{12}|
  .{42}1.{31}1.{6}1|
  .{42}11.{27}0.{10}|
  .{43}0.{34}10..|
  .{44}1.0.{10}1.{24}|
  .{45}0.{9}0.{5}0.{20}|
  .{45}1.{12}0.{22}1|
  .{45}1.{17}1....0.{13}|
  .{45}1.{9}0...0.{22}|
  .{46}0.{11}1.{19}1...|
  .{46}1.{24}0.{5}0....|
  .{47}11.{8}1.{24}|
  .{48}0.{12}1....0.{15}|
  .{48}0.{15}0.{13}1...|
  .{48}1...0.{13}0.{15}|
  .{48}1.{11}0..0.{18}|
  .{48}11.{21}0.{10}|
  .{49}1.{7}1.{14}0.{9}|
  .{51}1.{12}1.{5}1.{11}|
  .{54}0.{13}0.{6}1.{6}|
  .{54}1.{11}1.1.{13}|
  .{56}0.{16}0..1.{5}|
  .{56}1.{11}0.{6}0.{6}|
  .{58}1....1.{6}0.{11}|
  .{5}0.{17}0.{42}0.{15}|
  .{5}0.{23}1.{26}1.{25}|
  .{5}0.{34}1.{22}0.{18}|
  .{5}0.{6}1.{13}1.{55}|
  .{5}1.{12}0.{31}1.{31}|
  .{5}1.{16}0.{39}1.{19}|
  .{5}1.{16}1.1.{57}|
  .{5}1.{24}1.{15}1.{35}|
  .{5}1.{24}1.{47}1...|
  .{66}0.0.{5}1.{7}|
  .{6}0....1.{24}0.{45}|
  .{6}0.{19}0.{7}1.{47}|
  .{6}0.{23}0.{14}0.{36}|
  .{6}0.{25}1.{41}0.{7}|
  .{6}0.{46}1.{22}0.{5}|
  .{6}0.{52}11.{21}|
  .{6}1.{35}10.{38}|
  .{7}0.{20}0.{16}0.{36}|
  .{7}0.{34}1.{20}1.{18}|
  .{7}0.{6}0.{36}0.{30}|
  .{7}0.{7}0.{15}0.{50}|
  .{7}0.{8}1.{42}1.{22}|
  .{7}1.{5}1.{56}1.{11}|
  .{7}1.{67}0..1...|
  .{8}0.{10}0.{38}0.{23}|
  .{8}0.{41}11.{30}|
  .{8}0.{9}1.{37}1.{25}|
  .{8}1.{50}1.{14}1.{7}|
  .{9}0..1.{55}0.{13}|
  .{9}0.{21}1.{42}0.{7}|
  .{9}0.{59}00.{11}|
  .{9}0.{9}0....1.{57}|
  .{9}00.{41}1.{29}|
  .{9}1....0.{20}0.{46}|
  .{9}1...0.{41}1.{26}|
  .{9}1.{30}0.{16}1.{24}|
  .{9}1.{30}0.{37}1...|
  .{9}1.{30}1.{14}1.{26}|
  .{9}1.{40}01.{30}|
  0.{17}1.{34}0.{28}|
  0.{23}1.{43}1.{13}|
  0.{30}1.{26}1.{23}|
  1.{13}00.{66}|
  1.{28}0.{42}1.{9}|
  1.{36}0.{35}1.{8}|
  1.{42}1.{32}1.{5}|
  1.{49}0.{16}0.{14}|
  1.{52}0.{7}0.{20}|
)$

Đã thử nghiệm trên Regex101 .


Regex đang tìm kiếm một chuỗi Sgồm 82 ký tự gồm 0 và 1. Nó thực hiện một số lượng lớn kiểm tra biểu mẫu (sau khi áp dụng de Morgan) S[index1] != digit1HOẶC S[index2] != digit2HOẶC S[index3] != digit3, tạo nên các mệnh đề 3-SAT. Kích thước regex là tuyến tính theo số lượng manh mối và logarit trong số lượng ký tự trong khóa (do .{n}ký hiệu). Thật không may, mặc dù vậy, để đảm bảo số lượng manh mối phải tăng theo kích cỡ của khóa, và trong khi chắc chắn có thể tạo ra một khóa không thể bẻ khóa theo cách này, cuối cùng nó sẽ là một regex khá dài.


1
Trận đấu : x. Không phù hợp:0011001101000000000111010001101101011000010011011010000000010001011111000100010000
nneonneo

Trận đấu : aaaabaaacaaadaaa. Không khớp: 011100110010001010111101001010010011110010011010110101010001101100101111111111+ 0000. Chỉ vài giây chậm hơn ...
jimmy23013

Wow thật nhanh - các bạn có vũ phu không?
Sp3000

1
@ Sp3000 Tôi đã làm nó gần như thủ công ... Đáng ngạc nhiên là phương pháp thống kê đã làm việc.
jimmy23013

2
@ Sp3000: Tôi sẽ đánh bại nó nhưng điều đó không vui chút nào. Thay vào đó tôi đã chuyển đổi chuỗi của bạn thành 3SAT và bẻ khóa nó bằng minisat. Mất 0,3 giây (thời gian chuyển đổi, ~ 10 phút)
nneonneo

5

Hương vị Perl, 133 [nứt]

Được rồi, cái này sẽ khó hơn để vũ phu:

^([^,]{2,}),([^,]{2,}),([^,]{2,}),(?=.\2+,)(?=.\3+,)\1+,(?=.\1+,)(?=.\3+,)\2+,(?=.\1+,)(?=.\2+,)\3+,(?=.{16,20}$)(\1{3}|\2{3}|\3{3})$

Và một phiên bản dài hơn, không phải là một phần của thách thức:

^([^,]{3,}),([^,]{3,}),([^,]{3,}),([^,]{3,}),([^,]{3,}),([^,]{3,}),(?=.\2+,)(?=.\3+,)(?=.\4+,)(?=.\5+,)(?=.\6+,)\1+,(?=.\1+,)(?=.\3+,)(?=.\4+,)(?=.\5+,)(?=.\6+,)\2+,(?=.\1+,)(?=.\2+,)(?=.\4+,)(?=.\5+,)(?=.\6+,)\3+,(?=.\1+,)(?=.\2+,)(?=.\3+,)(?=.\5+,)(?=.\6+,)\4+,(?=.\1+,)(?=.\2+,)(?=.\3+,)(?=.\4+,)(?=.\6+,)\5+,(?=.\1+$)(?=.\2+$)(?=.\3+$)(?=.\4+$)(?=.\5+$)\6+$

Có thể được thử nghiệm trên Regex101 (hương vị pcre).


Ý tưởng đằng sau mô hình này là chúng ta có thể mã hóa một hệ thống đơn giản các phương trình đồng dạng trong một biểu thức chính bằng cách sử dụng các bảng tra cứu. Ví dụ, regex ^(?=(..)*$)(...)*$khớp với bất kỳ chuỗi nào có độ dài là bội số chung của 23 , nghĩa là bội số của 6 . Điều này có thể được xem như phương trình 2x 0 mod 3 . Chúng ta có thể tham số hóa phương trình bằng cách sử dụng các nhóm bắt giữ: regex ^(.*),(.*),(?=\1*$)\2*$khớp với các chuỗi trong đó số lượng ký tự sau dấu phẩy cuối cùng là bội số chung của độ dài của các lần gửi thứ nhất và thứ hai. Điều này có thể được xem như là phương trình tham số ax mod 0 mod b , trong đó ab là độ dài của hai hàm con.

Regex ở trên bắt đầu bằng cách lấy ba "tham số" có độ dài ít nhất hai và được theo sau bởi ba "hệ phương trình" của từ (?=.\1+,)(?=.\2+,)\3+,đó tương ứng với {ax + 1 ≡ 0 mod c, bởi + 1 ≡ 0 mod c, ax = by} , trong đó a , bc là độ dài của các chuỗi con tương ứng. Hệ phương trình này có nghiệm khi và chỉ khi ab đồng phương với c . Vì chúng ta có ba hệ thống như vậy, một hệ thống cho mỗi chuỗi con, độ dài của các chuỗi con phải là cặp song song.

Phần cuối cùng của regex là ở đó để đảm bảo rằng một trong các chuỗi con có độ dài 6 . Điều này buộc hai người khác phảiDài 57 ký tự, vì mọi giá trị nhỏ hơn sẽ không tương ứng và mọi giá trị lớn hơn sẽ dẫn đến khóa dài hơn 256 ký tự. Các giải pháp nhỏ nhất cho các phương trình sau đó mang lại các chuỗi con có độ dài 85 , 3691 , dẫn đến một chuỗi có độ dài 254 --- chừng nào chúng ta có thể có được.

Regex dài hơn sử dụng cùng một nguyên tắc, chỉ với 6 tham số độ dài ít nhất ba và không có hạn chế bổ sung. Tập hợp cặp đôi nhỏ nhất gồm sáu số nguyên lớn hơn 2{3, 4, 5, 7, 11, 13} , tạo ra các chuỗi con có độ dài tối thiểu 40041, 15016, 24025, 34321, 43681 và 23101. Do đó, chuỗi ngắn nhất phù hợp với biểu thức chính dài hơn là a{3},a{4},a{5},a{7},a{11},a{13},a{40041},a{15016},a{24025},a{34321},a{43681},a{23101} (theo thứ tự tham số.) Đó là 180.239 ký tự!


Đó {16,20}.
Sp3000

2
Trận đấu : aaaaa,aaaaaa,aaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaa, Không khớp:aaaaaaaaaaaaaaaa
Sp3000

Tôi nghĩ rằng SE tiếp tục thêm as vì một số lý do - nên có 5,6,7,85,36,91,18 as giữa các dấu phẩy: /
Sp3000

@ Sp3000 Chọn một thẻ, bất kỳ thẻ nào;) Vâng, bạn đã bẻ khóa nó. Có vẻ như một số 'a trong nhận xét của bạn không phải là ASCII, nhưng các con số là đúng.
Ell

@Ell aTất cả đều là ASCII, nhưng có hai ký tự Unicode không in được cho mỗi lần ngắt dòng thủ công SE.
Martin Ender

5

Hương vị .NET, 141 byte [đã bẻ khóa]

(?=(?<![][])(?(c)(?!))((?<c>[[])|(?<-c>[]])){15,}(?(c)(?!))(?![][]))^.*$(?<=(?<![][])(?(c)(?!))((?<c>[[])|(?<-c>[]])){15,}(?(c)(?!))(?![][]))

Một số khác cho bọn cướp! Tôi chắc chắn điều này sẽ bị bẻ khóa, nhưng tôi hy vọng người bẻ khóa nó sẽ học được điều gì đó thú vị về hương vị .NET trong quá trình này.

Đã thử nghiệm trên RegexStormRegexHero .

Tôi cho rằng điều này sẽ rất thú vị bởi vì nó dựa trên sự tương tác của cả ba tính năng biểu thức chính mà bạn chỉ có thể tìm thấy trong .NET: giao diện có độ dài thay đổi, nhóm cân bằng và khớp từ phải sang trái.

Trước khi chúng ta bắt đầu vào các đặc trưng của .NET, hãy làm rõ một điều đơn giản về các lớp ký tự. Các lớp nhân vật không thể để trống, vì vậy nếu một bắt đầu bằng một ], đó thực sự là một phần của lớp mà không cần phải thoát. Tương tự như vậy, một [lớp nhân vật có thể được coi là một thành viên của lớp một cách rõ ràng mà không cần trốn thoát. Vì vậy, []]chỉ giống nhau khi khớp một đơn \], và [[]giống nhau \[và quan trọng hơn [][]là một lớp ký tự chứa cả hai dấu ngoặc.

Bây giờ hãy xem cấu trúc của regex:(?=somePattern)^.*$(?<=somePattern). Vì vậy, trận đấu thực sự là bất cứ điều gì ( ^.*$nhưng) nhưng chúng tôi áp dụng một mẫu hai lần, neo nó vào đầu một lần và kết thúc một lần.

Hãy xem mẫu đó: (?<![][])đảm bảo rằng không có dấu ngoặc trước mẫu. (?![][])(ở cuối) đảm bảo rằng không có dấu ngoặc sau mẫu. Điều này được thực hiện ở cuối chuỗi hoặc liền kề với bất kỳ ký tự nào khác.
Điều này (?(c)(?!)), lúc đầu thực sự là dư thừa, bởi vì nó chỉ đảm bảo rằng nhóm bắt giữ có tên ckhông khớp với bất cứ điều gì. Chúng ta cần điều này ở cuối, vì vậy ít nhất nó là tốt đẹp và đối xứng. Bây giờ phần chính của mẫu là đây : ((?<c>[[])|(?<-c>[]])){15,}(?(c)(?!)). Các nhóm này được gọi là các nhóm cân bằng và những gì họ làm ở đây khớp với một chuỗi ít nhất 15cân vuông vuông. Có rất nhiều điều để nói về việc cân bằng các nhóm - quá nhiều cho bài đăng này, nhưng tôi có thể giới thiệu cho bạn một cuộc thảo luận khá toàn diện mà tôi đã đăng trên StackOverflow cách đây một thời gian.

Được rồi, do đó, cái nhìn là để đảm bảo rằng mẫu bắt đầu với các dấu ngoặc vuông cân bằng đó - và không có dấu ngoặc vuông nào bên cạnh đó.

Bây giờ cái nhìn ở cuối chứa chính xác cùng một mẫu. Vì vậy, điều này không nên dư thừa? Không phải một cái gì đó như [][][][][][][][]hoàn thành cả hai cái nhìn và làm cho mô hình phù hợp?

Không. Bởi vì đây là nơi mà nó trở nên khó khăn. Mặc dù không có giấy tờ, các giao diện .NET được khớp từ phải sang trái. Đây là lý do tại sao .NET là hương vị duy nhất hỗ trợ giao diện có chiều dài thay đổi. Thông thường bạn không nhận thấy điều này bởi vì thứ tự khớp là không liên quan. Nhưng trong trường hợp cụ thể này, điều đó có nghĩa là dấu ngoặc vuông mở bây giờ phải ở bên phải dấu ngoặc vuông đóng. Vì vậy, lookbehind thực sự kiểm tra các dấu ngoặc vuông chống khớp, như trong ][][][hoặc ]]][[[. Đó là lý do tại sao tôi cũng cần kiểm tra (?(c)(?!))ở đầu mẫu, bởi vì bây giờ là kết thúc của trận đấu.

Vì vậy, chúng tôi muốn 15 (hoặc 16) dấu ngoặc khớp ở đầu chuỗi và 15 (hoặc 16) dấu ngoặc chống khớp ở cuối chuỗi. Nhưng hai cái đó không thể được kết nối do(?![][])nhìn. Vậy, chúng ta làm gì? Chúng tôi lấy một chuỗi phù hợp và một chuỗi chống khớp và nối chúng với một ký tự tùy ý, ví dụ [][][][][[[[]]]]!][][][][]]]][[[[.

Tôi đoán điều đó để lại một câu hỏi ... làm thế nào trên trái đất tôi đã tìm ra rằng những người trông giống nhau từ phải sang trái? Chà, tôi đã thử một số phép thuật regex phức tạp một lần và không thể hiểu tại sao cái nhìn của tôi không hoạt động. Vì vậy, tôi đã hỏi trang web hỏi đáp thân thiện bên cạnh . Bây giờ tôi thực sự hài lòng về tính năng này, bởi vì nó làm cho các nhóm cân bằng trở nên mạnh mẽ hơn nếu bạn biết sử dụng chúng đúng cách. :)


1
Trận đấu : [][][][][][][][]a][][][][][][][][. Không phù hợp:That's interesting...
jimmy23013

@ user23013 Yup! Nó thật nhanh. Bạn đã quen thuộc với những điều kỳ quặc của .NET chưa? :)
Martin Ender

Ước gì tôi đã tìm ra cái nhìn ngớ ngẩn 5 phút trước đó
TwiNight

Không. Nhưng tôi đã biết các bộ định lượng không được phép trong giao diện trong PCRE. Tôi nghĩ rằng thực sự nhìn về phía sau là tốt hơn nhiều.
jimmy23013

@ MartinBüttner Vì vậy, để xác nhận, lookbehinds thực sự khớp từ sau ra trước?
TwiNight

5

Hương vị Python (200127 byte) [đã bẻ khóa]

Để chúng ta có thể (hy vọng) nhìn thấy thứ gì đó kéo dài một ngày, đã đến lúc mang ra những khẩu súng lớn :)

Vấn đề với con đường 3-SAT và Hamilton là sự phức tạp nằm ở kích thước chính. Lần này tôi đã chọn một cái gì đó phụ thuộc vào regex, thay vì khóa.

Đây là: regex . Bạn cũng có thể thấy tập tin này hữu ích. (Đừng lo lắng, lần này tôi không giấu bất cứ điều gì kỳ lạ;))

Tôi đã sử dụng RegexPlanet để kiểm tra cái này - thật khó để tìm ra thứ gì đó không hết thời gian: /. Để kiểm tra xem có khớp không, xem chuỗi của bạn có xuất hiện không findall().

Chúc may mắn!


Regex chỉ là "tìm một chuỗi có độ dài 64 xuất hiện như một chuỗi con chung trong một bộ gồm 20 chuỗi có độ dài 5000". Có quá nhiều giải pháp, có lẽ.


5
Trận đấu : d,mE~JZ0,_:3kBdLdgBSzJ!@MLrrAgKsf@Pl35N9bxsIf@ReVU>:YDg`d1MjL@_-. Không phù hợp:{ line|fold -w1 >filea; while line >filec; do fold -w1 <filec >fileb; diff -d --old-line-format= --new-line-format= --unchanged-line-format=%L filea fileb >filec;mv filec filea;done;cat filea;} <file1|tr -d $'\n'|head -c64;echo
jimmy23013

Ahaha Tôi bị đánh - Tôi đoán các chuỗi quá dài và có quá nhiều giải pháp
Sp3000

@ user23013 Nghe có vẻ nhiều, nhưng thực ra nó không quá tệ, khi thấy rằng có 5437589409196755010929519821645784067024309122301926366910354757626905801389085035074667925844349168139762829668080
Martin Ender

À, tôi sai rồi. Không chỉ có 718406958841 giải pháp. Và kịch bản của tôi có một lỗi nên nó bỏ qua mẫu cuối cùng. Nhưng chuỗi con chung của 19 mẫu đầu tiên đã xảy ra cũng là một mẫu của mẫu cuối cùng
jimmy23013

@ MartinBüttner Ý tôi là tôi không biết chính xác có bao nhiêu giải pháp và con số đó là sai. Chuỗi con chung dài nhất của chúng có 718406958841 (giá trị đã sửa: 97082021465) chiều dài 64. Nhưng có những CS khác không phải là con của LCS.
jimmy23013

5

Python, 145485 byte [đã bẻ khóa]

Cảm ơn Wumpus đã dạy tôi tầm quan trọng của việc kiểm tra các chỉ số của chúng tôi :)

Thỏa thuận tương tự như giải pháp cuối cùng, chỉ hy vọng không bị phá vỡ lần này. Regex thô: http://pastebin.com/MReS2R1k

EDIT: Nó không bị hỏng, nhưng dường như nó vẫn quá dễ dàng. Ít nhất nó đã không được giải quyết "ngay lập tức";)


4
Không khớp: 1040060321170122554027333022674205250442151362365165773421664173556667110413375720720711725045122733213710556062114131057357354554245723416516004761215632214223735570625116160162051407026445600345370604702671021412723536217011007021752560474402200436670402Trận đấu:minisat2hoursCPU

Ayup. Bạn đã cho tôi. Đó là khá nhanh chóng. Có lẽ tôi phải vượt qua regex 1GB của mình sau tất cả ...
nneonneo

5

Mẫu Java / triển khai Oracle (75 ký tự / 150 byte UTF-16) [đã bẻ khóa]

(Tên mã: Cà phê xấu 101)

Đây là Patternđối tượng, với CANON_EQcờ, được sử dụng với matches()(neo ngụ ý):

Pattern.compile("(\\Q\u1EBF\\\\E)?+[\\w&&[\\p{L1}]\\p{Z}]+|\\1[\uD835\uDC00-\uD835\uDC33]{1927027271663633,2254527117918231}", Pattern.CANON_EQ)

Kiểm tra chìa khóa của bạn ở đây trên ideone

Có đảm bảo là một chìa khóa. Đọc spoiler nếu bạn muốn một số xác nhận.

Như bạn có thể thấy, nó không phải là một regex bình thường. Tuy nhiên, nó chạy mà không có Exceptiontrên phiên bản Java 1.6.0u37 và Java phiên bản 1.7.0u11 của Oracle và nó cũng nên chạy cho phiên bản mới nhất tại thời điểm viết.

Điều này sử dụng 4 lỗi : CANON_EQ, giữ lại văn bản của lần thử thất bại, lớp ký tự bị mất và tràn bộ lượng hóa.


4
Phù hợp : "(?:e\u0302\u0301\\|\u00ea\u0301\\|\u1ebf\\|\u00ea\\\u0301|e\u0302\\\u0301|\u00ea\\\u0301|\u00ea\u0301\\|\u1ebf\\|e\\\u0302\u0301)\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00"(mẫu trích dẫn). Không khớp : JavaRegexSoBuggy. ideone cho trận đấu: ideone.com/DEesdk
nneonneo

Lỗi được tìm thấy: (1) CANON_EQmở rộng các ký tự được sắp xếp sẵn thành các thay thế bên trong, phá vỡ bên trong vui nhộn \Q\E; (2) độ dài lặp lại được cắt ngắn thành 32 bit; (3) có một số điều kỳ lạ xảy ra với trình so khớp lớp nhân vật khiến nó bỏ qua sự thay thế (không hiểu chính xác lỗi này là gì).
nneonneo

@nneonneo: Giải thích của bạn là chính xác. Nhưng bạn đã quên \1lỗi backref . Và vâng, có một lỗi trong lớp nhân vật. Làm thế nào bạn tìm ra tất cả điều này trong vòng chưa đầy 2 giờ?
n̴̖̋h̷͉a̷̭̿h̸̡̅ẗ̵̨d̷̰ĥ̷̳

Tôi bắt đầu làm việc với nó 20 phút trước. Bạn đã làm cho nó khá rõ ràng phần nào của vấn đề nhấn mạnh lỗi nào (vì mỗi lỗi cơ bản nằm trong nhóm riêng của nó), vì vậy tôi đã tìm ra cách thỏa mãn từng phần một cách độc lập, sau đó kết hợp chúng. Tôi đã may mắn vì tôi đã không thực sự tìm ra những gì lớp nhân vật đang làm. (Tôi cũng đã rất may mắn khi Java phát ra mẫu nội bộ "mở rộng" khi bạn gặp lỗi cú pháp :)
nneonneo

Cũng thế! Tôi không tin rằng việc lưu giữ văn bản bị bắt nhất thiết phải là một lỗi. Đó dường như là cách các bộ lượng hóa sở hữu hoạt động. (Đây cũng là một tài sản khá hữu ích cho một số bản hack regex nhất định ... hm ...)
nneonneo

5

Hương vị .NET, 17.372 byte [đã bẻ khóa]

Đây vẫn là một phiên bản dễ dàng. Nó cần tối ưu hóa nhiều hơn để làm việc với các chuỗi dài hơn.

Regex ở đây: http://pastebin.com/YPE4zyBB

Ungolfed: http://pastebin.com/PLJp0KhF

Đã thử nghiệm trên RegexStormblog nàyRegExLib (với tất cả các tùy chọn không được chọn).

Giải pháp cho regex này là hệ số của 5122188685368916735780446744735347888756487271329 = 2147852126374329492975359 * 2384795779221263457172831, với kết quả được mã hóa đầu tiên trong cơ sở.

Mỗi chữ số trước tiên được chia thành hai số cơ sở 17 để làm cho các phép tính nhanh hơn. Đây cũng là cách sản phẩm được mã hóa trong regex.

Mỗi cặp chữ số trong hai số sau đó được nhân vào nhóm chụp a0để a38. Mỗi người trong số họ là một chữ số của sản phẩm. Vị trí hiện tại được theo dõi bởi pq. Và mang được xử lý sau khi nhân, trong khi so sánh sản phẩm.

Nó nằm trong cơ sở 289 vì nó được thiết kế để chấp nhận hai số 1024 bit, mỗi số có 128 chữ số 256 và tôi không nghĩ đến việc xóa dấu phẩy nên chuỗi đầy đủ với cơ sở 256 sẽ là 256 ký tự.

Phiên bản 1536 bit ở đây . Nó chấp nhận hai số 768 bit. Các số trong phiên bản dễ dàng này chỉ có 81 bit.


2
Trận đấu : Ľê¯6Aĝ4aþĀ,lŃŝĿBİŢŞĩï(thoát \u013d\xea\xaf6A\u011d4a\xfe\u0100,l\u0143\u015d\u013fB\u0130\u0162\u015e\u0129\xef:). Không phù hợp :VeryNiceMultiplier
nneonneo

4

Hương vị ECMAScript, 30 byte [đã bẻ khóa]

^((?![\t- ]|[^\s])(.)(?!\2))+$

Đây là một cái khá đơn giản cho những tên cướp bẻ khóa. Về mặt khái niệm nó không quá khó, nhưng có thể cần một ít nghiên cứu (hoặc viết kịch bản). Tôi không có ý định liệt kê bản thân trong bảng xếp hạng, nhưng nếu ai đó bẻ khóa nó trong vòng 72 giờ, điều này sẽ được tính vào điểm số của tên cướp của họ.

Đã thử nghiệm trên Regex101RegExr bằng Chrome.

Vâng, đó là nhanh chóng!

Regex được cho là khớp với bất kỳ chuỗi nào bao gồm các ký tự khoảng trắng không phải ASCII riêng biệt . Tuy nhiên, tôi đã quên một cái .*trước đó \2, vì vậy nó thực sự khớp với bất kỳ chuỗi khoảng trắng không phải ASCII nào, không chứa hai ký tự giống nhau liên tiếp. Có 18 ký tự như vậy trong phạm vi Unicode cho đến điểm mã 0xFFFF. Trận đấu được đăng bởi user23013 là một chuỗi như vậy, bao gồm 16 ký tự.


1
Trận đấu (cơ sở64) : wqDigZ/CoOKBn8Kg4oGfwqDigZ/CoOKBn8Kg4oGfwqDigZ/CoOKBnw==, Không trận đấu:aaaabaaacaaadaaa
jimmy23013

Nó không khác biệt mà chỉ xen kẽ, chỉ có hai ký tự riêng biệt.
jimmy23013

@ user23013 Chết tiệt, tôi quên mất một .*cái nhìn. Nắm bắt tốt. Nên đã kiểm tra kỹ hơn.
Martin Ender

4

Hương vị Ruby , 24 byte [crack]

^(?!.*(.+)\1)([\[\\\]]){256}$

Vui lòng bao gồm một liên kết đến một người kiểm tra nơi khóa dự định của bạn đang hoạt động (như rubular.com ). (Ngoài ra, obfuscation / chơi golf mũi pro: nếu bạn sử dụng PCRE thay vào đó, các lớp nhân vật có thể được viết như sau []\\[];))
Martin Ender

Liên kết được thêm vào. Tôi nghi ngờ Wumpus đã bẻ khóa nó, có thể chứng minh điều đó bằng permalink cho rubular.com
histocrat

2
Không khớp : soylentgreenispeople. Trận đấu có sẵn tại rubular.com/r/TCqjcaGsU1 không được đăng ở đây vì cách hệ thống bình luận xử lý các từ dài.

@ WumpusQ.Wumbley Tuyệt vời! Nếu bạn bao gồm sự không phù hợp vào cùng một nhận xét, chúng tôi có thể dọn sạch tất cả mớ hỗn độn phía trên này.
Martin Ender

4

PHP, 168 byte [bị bẻ khóa bởi nneonneo ]

^((?![!?$]*[^!?$]))?(?:[^!]\2?+(?=(!*)(\\\3?+.(?!\3)))){4}(?(1)|Ha! No one will ever get this one...)|(?!(?1))\Q\1?!($!?)?\E\1?!($!?)?(?<!.{12})\Q(?=(?1))\E(?=(?1))!\?$

Đây là một bản demo regex .

PS Trò chơi này khó.


2
Trận đấu : \1?!($!?)?!(?=(?1))!?. Không phù hợp :IncrementalRegexTestingWorks
nneonneo

@nneonneo À, bạn giỏi quá;)
Unihedron

4

PCRE (1043 byte) [đã bẻ khóa]

Sau khi các biểu thức được tạo ngẫu nhiên đã làm tôi thất bại (các ý tưởng rất hay, nhưng tôi không thể tạo ra các trường hợp vấn đề đầy đủ), tôi đã quyết định tự tay làm thủ công này. Tôi gọi nó là "Toàn bộ nhiều quy tắc để thỏa mãn".

^(?=^([^)(]*\(((?>[^)(]+)|(?1))*\)[^)(]*)*$)(?=^([^][]*\[((?>[^][]+)|(?3))*\][^][]*)*$)(?=^([^}{]*\{((?>[^}{]+)|(?5))*\}[^}{]*)*$)(?!^\(.*)(?!.*\(.{250}\).*)(?=.*\[.{250}\].*)(?=.*\{.{250}\}.*)(?=.*\[.\(\).\{\}.\].*)(?=.*\}...\[...\[...\]...\]...\{.*)(?=.*\(\(..\(\(.{68}\(\(\)\).{43}\)\)\)\).*)(?=.*\{..\{..\{.{65}\{\}\{\}.{33}\{\}.{107}\}\}.\}.*)(?=.*\[\{\{\[\(\{.*)(?=.*\[\[..\[.{6}\[.{6}\]\]...\]\].{6}\[..\]..\[\].*)(?=.*\]\]\}\}\}.\)\)\)\).{96}\]\}\}\]\]\]\}\]\]\].\)\]\].*)(?=.*\]..\).{6}\(.{7}\{.{5}\[...\[.{5}\{\[.*)(?=.*\[.{87}\{.{45}}{.{38}}.{27}\].*)(?=.*\(\{.{32}\(.{20}\{.{47}\].{43}\{\{.{25}\}\}.{18}\].{5}\}....\}.{5}\).*)(?=.*\{.{12}\(.{5}\(...\(...\{\[.\{\[\[.*)(?=.*\{\(.{21}\).{8}\}.{14}\[.{7}\]..\{.{5}\{\}....\}.*)(?=.*\(.\{.{49}\{.{16}\}.{25}\}.{66}\).*)(?!.*\(\{\(\(.*)(?!.*\(\)\[\].*)(?=(.*?\].*?\)){15,}.*)(?=(.*\[.*\(.*\{){5,9}.*)(?=.*\({3}.{105}\[{3}.{105}[^}{].*)(?=.*\(..\).{5}\(\)....\}\}\].\{\{\[.{22}\[.{35}\}\}\].*)(?!.*\(\(.{178}\])(?=(.*\[..\]){8,10}.*)(?!(.*\([^\(\)]{5}\(){4,}.*).{63}(.{6}).{130}\11.{51}$

Và mở rộng:

^
(?=^([^)(]*\(((?>[^)(]+)|(?1))*\)[^)(]*)*$)
(?=^([^][]*\[((?>[^][]+)|(?3))*\][^][]*)*$)
(?=^([^}{]*\{((?>[^}{]+)|(?5))*\}[^}{]*)*$)
(?!^\(.*)
(?!.*\(.{250}\).*)
(?=.*\[.{250}\].*)
(?=.*\{.{250}\}.*)
(?=.*\[.\(\).\{\}.\].*)
(?=.*\}...\[...\[...\]...\]...\{.*)
(?=.*\(\(..\(\(.{68}\(\(\)\).{43}\)\)\)\).*)
(?=.*\{..\{..\{.{65}\{\}\{\}.{33}\{\}.{107}\}\}.\}.*)
(?=.*\[\{\{\[\(\{.*)
(?=.*\[\[..\[.{6}\[.{6}\]\]...\]\].{6}\[..\]..\[\].*)
(?=.*\]\]\}\}\}.\)\)\)\).{96}\]\}\}\]\]\]\}\]\]\].\)\]\].*)
(?=.*\]..\).{6}\(.{7}\{.{5}\[...\[.{5}\{\[.*)
(?=.*\[.{87}\{.{45}}{.{38}}.{27}\].*)
(?=.*\(\{.{32}\(.{20}\{.{47}\].{43}\{\{.{25}\}\}.{18}\].{5}\}....\}.{5}\).*)
(?=.*\{.{12}\(.{5}\(...\(...\{\[.\{\[\[.*)
(?=.*\{\(.{21}\).{8}\}.{14}\[.{7}\]..\{.{5}\{\}....\}.*)
(?=.*\(.\{.{49}\{.{16}\}.{25}\}.{66}\).*)
(?!.*\(\{\(\(.*)
(?!.*\(\)\[\].*)
(?=(.*?\].*?\)){15,}.*)
(?=(.*\[.*\(.*\{){5,9}.*)
(?=.*\({3}.{105}\[{3}.{105}[^}{].*)
(?=.*\(..\).{5}\(\)....\}\}\].\{\{\[.{22}\[.{35}\}\}\].*)
(?!.*\(\(.{178}\])
(?=(.*\[..\]){8,10}.*)
(?!(.*\([^\(\)]{5}\(){4,}.*)
.{63}(.{6}).{130}\11.{51}
$

Đã thử nghiệm trên Regex101 - tùy thuộc vào máy tính của bạn, bạn có thể cần tăng thời gian thực hiện tối đa.


Regex này mã hóa một loạt các quy tắc chỉ cần được thỏa mãn. Bất kỳ giải pháp nào cũng được, đó chỉ là tìm một.

  • Ba quy tắc cốt lõi đầu tiên yêu cầu rằng, riêng biệt, tất cả các ([{dấu ngoặc cần phải được cân bằng trong khóa.
  • Hầu hết các biểu thức yêu cầu một "hình dạng" nhất định cần phải có hoặc không nằm trong khóa. Ví dụ, hàng thứ 8 yêu cầu một cái gì đó có dạng [.(.).].
  • Các quy tắc như (?=(.*\[.*\(.*\{){5,9}.*), ví dụ, yêu cầu sự [({xen kẽ xảy ra ít nhất 5 lần. Lưu ý rằng dòng này nói riêng bị lỗi ở nhiều cấp độ, không chủ ý.
  • Backreference \11yêu cầu một chuỗi con sáu ký tự xuất hiện hai lần ở các vị trí cụ thể.


2
Trận đấu : [((({.[.[](){{}{].{.(({){(.[]()....}}].{{[[....).[..]()(}..[..]([....(([{((({).](){.{}{}{}....}[[()[}}][{{[({[[[.]]}()]].{}.]{[..]{.[]]}}}())))(())[(.].{[.{[[..[()].()}{{.[...[}{.]..)]...{.])))).}}..([......{.....[.]}[...}.{[.}...}})}.))).]}}]]]}]]].)]]..}. Không khớp : WhatANastySetOfRulesYouHave.
nneonneo

Tôi tăng thời gian thực hiện lên 50 giây. Nhân tiện, nếu bạn chỉ sử dụng các bộ lượng tử không tham lam thích hợp (?=(.*\[.*\(.*\{){5,9}.*), thì bạn sẽ không cần tăng thời gian thực hiện tối đa (cùng kết quả) - các trận đấu sẽ diễn ra ngay lập tức.
nneonneo

@nneonneo Ahaha vâng, tôi nhận ra rằng sau khi tôi đăng. Bạn có thể đăng, nói, một liên kết pastebin cho khóa của bạn mặc dù? Nhận xét SE dường như sẽ hoạt động trở lại
Sp3000

@nneonneo Ngoài ra nếu bạn có quá nhiều dấu chấm trong giải pháp của mình, rõ ràng tôi không có đủ quy tắc: P
Sp3000

2
Đây là một liên kết regex101 với giải pháp của tôi hiển thị: regex101.com/r/gP2aX7/1
nneonneo

4

Hương vị .NET (7563 byte) [đã bẻ khóa]

Lấy cảm hứng từ ý tưởng của @ user23013

^(?:(?=1(?<1>){5632})|(?=0)).(?:(?=1(?<1>){79361})|(?=0)).(?:(?=1(?<1>){188421})|(?=0)).(?:(?=1(?<1>){164870})|(?=0)).(?:(?=1(?<1>){63496})|(?=0)).(?:(?=1(?<1>){116233})|(?=0)).(?:(?=1(?<1>){112138})|(?=0)).(?:(?=1(?<1>){47447})|(?=0)).(?:(?=1(?<1>){85005})|(?=0)).(?:(?=1(?<1>){17936})|(?=0)).(?:(?=1(?<1>){108053})|(?=0)).(?:(?=1(?<1>){88599})|(?=0)).(?:(?=1(?<1>){91672})|(?=0)).(?:(?=1(?<1>){178716})|(?=0)).(?:(?=1(?<1>){199710})|(?=0)).(?:(?=1(?<1>){166661})|(?=0)).(?:(?=1(?<1>){190496})|(?=0)).(?:(?=1(?<1>){184494})|(?=0)).(?:(?=1(?<1>){199203})|(?=0)).(?:(?=1(?<1>){116778})|(?=0)).(?:(?=1(?<1>){78891})|(?=0)).(?:(?=1(?<1>){192556})|(?=0)).(?:(?=1(?<1>){24995})|(?=0)).(?:(?=1(?<1>){1071})|(?=0)).(?:(?=1(?<1>){192561})|(?=0)).(?:(?=1(?<1>){108082})|(?=0)).(?:(?=1(?<1>){1593})|(?=0)).(?:(?=1(?<1>){26967})|(?=0)).(?:(?=1(?<1>){197983})|(?=0)).(?:(?=1(?<1>){97034})|(?=0)).(?:(?=1(?<1>){86965})|(?=0)).(?:(?=1(?<1>){60480})|(?=0)).(?:(?=1(?<1>){149571})|(?=0)).(?:(?=1(?<1>){100932})|(?=0)).(?:(?=1(?<1>){40519})|(?=0)).(?:(?=1(?<1>){173492})|(?=0)).(?:(?=1(?<1>){80972})|(?=0)).(?:(?=1(?<1>){115790})|(?=0)).(?:(?=1(?<1>){29265})|(?=0)).(?:(?=1(?<1>){91730})|(?=0)).(?:(?=1(?<1>){173140})|(?=0)).(?:(?=1(?<1>){52821})|(?=0)).(?:(?=1(?<1>){176726})|(?=0)).(?:(?=1(?<1>){170211})|(?=0)).(?:(?=1(?<1>){150105})|(?=0)).(?:(?=1(?<1>){23131})|(?=0)).(?:(?=1(?<1>){81503})|(?=0)).(?:(?=1(?<1>){77412})|(?=0)).(?:(?=1(?<1>){106086})|(?=0)).(?:(?=1(?<1>){4284})|(?=0)).(?:(?=1(?<1>){142610})|(?=0)).(?:(?=1(?<1>){167534})|(?=0)).(?:(?=1(?<1>){190577})|(?=0)).(?:(?=1(?<1>){147731})|(?=0)).(?:(?=1(?<1>){133748})|(?=0)).(?:(?=1(?<1>){194750})|(?=0)).(?:(?=1(?<1>){49257})|(?=0)).(?:(?=1(?<1>){49274})|(?=0)).(?:(?=1(?<1>){120767})|(?=0)).(?:(?=1(?<1>){172668})|(?=0)).(?:(?=1(?<1>){24703})|(?=0)).(?:(?=1(?<1>){108160})|(?=0)).(?:(?=1(?<1>){60546})|(?=0)).(?:(?=1(?<1>){56963})|(?=0)).(?:(?=1(?<1>){30340})|(?=0)).(?:(?=1(?<1>){95368})|(?=0)).(?:(?=1(?<1>){59530})|(?=0)).(?:(?=1(?<1>){53388})|(?=0)).(?:(?=1(?<1>){14477})|(?=0)).(?:(?=1(?<1>){28302})|(?=0)).(?:(?=1(?<1>){182927})|(?=0)).(?:(?=1(?<1>){59024})|(?=0)).(?:(?=1(?<1>){146200})|(?=0)).(?:(?=1(?<1>){153746})|(?=0)).(?:(?=1(?<1>){39571})|(?=0)).(?:(?=1(?<1>){134293})|(?=0)).(?:(?=1(?<1>){158362})|(?=0)).(?:(?=1(?<1>){170139})|(?=0)).(?:(?=1(?<1>){182940})|(?=0)).(?:(?=1(?<1>){7327})|(?=0)).(?:(?=1(?<1>){143525})|(?=0)).(?:(?=1(?<1>){119464})|(?=0)).(?:(?=1(?<1>){82090})|(?=0)).(?:(?=1(?<1>){170667})|(?=0)).(?:(?=1(?<1>){49522})|(?=0)).(?:(?=1(?<1>){69806})|(?=0)).(?:(?=1(?<1>){15535})|(?=0)).(?:(?=1(?<1>){16049})|(?=0)).(?:(?=1(?<1>){163358})|(?=0)).(?:(?=1(?<1>){181876})|(?=0)).(?:(?=1(?<1>){58044})|(?=0)).(?:(?=1(?<1>){16062})|(?=0)).(?:(?=1(?<1>){39616})|(?=0)).(?:(?=1(?<1>){31425})|(?=0)).(?:(?=1(?<1>){94404})|(?=0)).(?:(?=1(?<1>){86848})|(?=0)).(?:(?=1(?<1>){16589})|(?=0)).(?:(?=1(?<1>){195280})|(?=0)).(?:(?=1(?<1>){199377})|(?=0)).(?:(?=1(?<1>){43731})|(?=0)).(?:(?=1(?<1>){67534})|(?=0)).(?:(?=1(?<1>){106198})|(?=0)).(?:(?=1(?<1>){54999})|(?=0)).(?:(?=1(?<1>){52952})|(?=0)).(?:(?=1(?<1>){125828})|(?=0)).(?:(?=1(?<1>){169691})|(?=0)).(?:(?=1(?<1>){184542})|(?=0)).(?:(?=1(?<1>){177888})|(?=0)).(?:(?=1(?<1>){43233})|(?=0)).(?:(?=1(?<1>){127203})|(?=0)).(?:(?=1(?<1>){116518})|(?=0)).(?:(?=1(?<1>){117990})|(?=0)).(?:(?=1(?<1>){67815})|(?=0)).(?:(?=1(?<1>){62202})|(?=0)).(?:(?=1(?<1>){165611})|(?=0)).(?:(?=1(?<1>){197356})|(?=0)).(?:(?=1(?<1>){29933})|(?=0)).(?:(?=1(?<1>){90862})|(?=0)).(?:(?=1(?<1>){90863})|(?=0)).(?:(?=1(?<1>){149232})|(?=0)).(?:(?=1(?<1>){61681})|(?=0)).(?:(?=1(?<1>){137970})|(?=0)).(?:(?=1(?<1>){90357})|(?=0)).(?:(?=1(?<1>){47351})|(?=0)).(?:(?=1(?<1>){172509})|(?=0)).(?:(?=1(?<1>){78293})|(?=0)).(?:(?=1(?<1>){66303})|(?=0)).(?:(?=1(?<1>){66262})|(?=0)).(?:(?=1(?<1>){158471})|(?=0)).(?:(?=1(?<1>){5676})|(?=0)).(?:(?=1(?<1>){127242})|(?=0)).(?:(?=1(?<1>){51979})|(?=0)).(?:(?=1(?<1>){162060})|(?=0)).(?:(?=1(?<1>){27405})|(?=0)).(?:(?=1(?<1>){153874})|(?=0)).(?:(?=1(?<1>){150291})|(?=0)).(?:(?=1(?<1>){1814})|(?=0)).(?:(?=1(?<1>){193815})|(?=0)).(?:(?=1(?<1>){82200})|(?=0)).(?:(?=1(?<1>){59161})|(?=0)).(?:(?=1(?<1>){78620})|(?=0)).(?:(?=1(?<1>){123678})|(?=0)).(?:(?=1(?<1>){147232})|(?=0)).(?:(?=1(?<1>){71457})|(?=0)).(?:(?=1(?<1>){118562})|(?=0)).(?:(?=1(?<1>){129830})|(?=0)).(?:(?=1(?<1>){161841})|(?=0)).(?:(?=1(?<1>){60295})|(?=0)).(?:(?=1(?<1>){165426})|(?=0)).(?:(?=1(?<1>){107485})|(?=0)).(?:(?=1(?<1>){171828})|(?=0)).(?:(?=1(?<1>){166200})|(?=0)).(?:(?=1(?<1>){35124})|(?=0)).(?:(?=1(?<1>){160573})|(?=0)).(?:(?=1(?<1>){7486})|(?=0)).(?:(?=1(?<1>){169279})|(?=0)).(?:(?=1(?<1>){151360})|(?=0)).(?:(?=1(?<1>){6978})|(?=0)).(?:(?=1(?<1>){136003})|(?=0)).(?:(?=1(?<1>){56133})|(?=0)).(?:(?=1(?<1>){8520})|(?=0)).(?:(?=1(?<1>){87436})|(?=0)).(?:(?=1(?<1>){57162})|(?=0)).(?:(?=1(?<1>){197965})|(?=0)).(?:(?=1(?<1>){145230})|(?=0)).(?:(?=1(?<1>){95459})|(?=0)).(?:(?=1(?<1>){180564})|(?=0)).(?:(?=1(?<1>){157850})|(?=0)).(?:(?=1(?<1>){109399})|(?=0)).(?:(?=1(?<1>){191832})|(?=0)).(?:(?=1(?<1>){110223})|(?=0)).(?:(?=1(?<1>){75102})|(?=0)).(?:(?=1(?<1>){140639})|(?=0)).(?:(?=1(?<1>){49504})|(?=0)).(?:(?=1(?<1>){197987})|(?=0)).(?:(?=1(?<1>){52744})|(?=0)).(?:(?=1(?<1>){96615})|(?=0)).(?:(?=1(?<1>){13672})|(?=0)).(?:(?=1(?<1>){73068})|(?=0)).(?:(?=1(?<1>){104814})|(?=0)).(?:(?=1(?<1>){66929})|(?=0)).(?:(?=1(?<1>){23410})|(?=0)).(?:(?=1(?<1>){122686})|(?=0)).(?:(?=1(?<1>){44918})|(?=0)).(?:(?=1(?<1>){101752})|(?=0)).(?:(?=1(?<1>){3961})|(?=0)).(?:(?=1(?<1>){31807})|(?=0)).(?:(?=1(?<1>){54933})|(?=0)).(?:(?=1(?<1>){140096})|(?=0)).(?:(?=1(?<1>){49026})|(?=0)).(?:(?=1(?<1>){5507})|(?=0)).(?:(?=1(?<1>){96132})|(?=0)).(?:(?=1(?<1>){167303})|(?=0)).(?:(?=1(?<1>){57877})|(?=0)).(?:(?=1(?<1>){88461})|(?=0)).(?:(?=1(?<1>){111853})|(?=0)).(?:(?=1(?<1>){126531})|(?=0)).(?:(?=1(?<1>){110998})|(?=0)).(?:(?=1(?<1>){7575})|(?=0)).(?:(?=1(?<1>){7064})|(?=0)).(?:(?=1(?<1>){59289})|(?=0)).(?:(?=1(?<1>){122203})|(?=0)).(?:(?=1(?<1>){175005})|(?=0)).(?:(?=1(?<1>){28025})|(?=0)).(?:(?=1(?<1>){49057})|(?=0)).(?:(?=1(?<1>){6373})|(?=0)).(?:(?=1(?<1>){50084})|(?=0)).(?:(?=1(?<1>){70565})|(?=0)).(?:(?=1(?<1>){75178})|(?=0)).(?:(?=1(?<1>){142763})|(?=0)).(?:(?=1(?<1>){56237})|(?=0)).(?:(?=1(?<1>){32176})|(?=0)).(?:(?=1(?<1>){113073})|(?=0)).(?:(?=1(?<1>){149939})|(?=0)).(?:(?=1(?<1>){16308})|(?=0)).(?:(?=1(?<1>){12725})|(?=0)).(?:(?=1(?<1>){75190})|(?=0)).(?:(?=1(?<1>){54711})|(?=0)).(?:(?=1(?<1>){180664})|(?=0)).(?:(?=1(?<1>){68540})|(?=0)).(?:(?=1(?<1>){93117})|(?=0)).(?:(?=1(?<1>){161781})|(?=0)).(?:(?=1(?<1>){15808})|(?=0)).(?:(?=1(?<1>){130814})|(?=0)).(?:(?=1(?<1>){162379})|(?=0)).(?:(?=1(?<1>){80836})|(?=0)).(?:(?=1(?<1>){149943})|(?=0)).(?:(?=1(?<1>){16841})|(?=0)).(?:(?=1(?<1>){149452})|(?=0)).(?:(?=1(?<1>){182733})|(?=0)).(?:(?=1(?<1>){56270})|(?=0)).(?:(?=1(?<1>){163792})|(?=0)).(?:(?=1(?<1>){34770})|(?=0)).(?:(?=1(?<1>){101843})|(?=0)).(?:(?=1(?<1>){199124})|(?=0)).(?:(?=1(?<1>){129493})|(?=0)).(?:(?=1(?<1>){43990})|(?=0)).(?:(?=1(?<1>){113112})|(?=0)).(?:(?=1(?<1>){71129})|(?=0)).(?:(?=1(?<1>){61402})|(?=0)).(?:(?=1(?<1>){145852})|(?=0)).(?:(?=1(?<1>){98781})|(?=0)).(?:(?=1(?<1>){141790})|(?=0)).(?:(?=1(?<1>){163235})|(?=0)).(?:(?=1(?<1>){110566})|(?=0)).(?:(?=1(?<1>){117737})|(?=0)).(?:(?=1(?<1>){67050})|(?=0)).(?:(?=1(?<1>){68075})|(?=0)).(?:(?=1(?<1>){124047})|(?=0)).(?:(?=1(?<1>){181587})|(?=0)).(?:(?=1(?<1>){125429})|(?=0)).(?:(?=1(?<1>){112118})|(?=0)).(?:(?=1(?<1>){196088})|(?=0)).(?:(?=1(?<1>){25082})|(?=0)).(?:(?=1(?<1>){178684})|(?=0)).(?:(?=1(?<1>){13822})|(?=0)).(?<-1>){10094986}(?(1)(?!))$

Chúng tôi không thể có đủ vấn đề NP-đầy đủ! Đây là phiên bản mở rộng:

^
(?:(?=1(?<1>){5632})|(?=0)).
(?:(?=1(?<1>){79361})|(?=0)).
(?:(?=1(?<1>){188421})|(?=0)).
(?:(?=1(?<1>){164870})|(?=0)).
(?:(?=1(?<1>){63496})|(?=0)).
(?:(?=1(?<1>){116233})|(?=0)).
(?:(?=1(?<1>){112138})|(?=0)).
(?:(?=1(?<1>){47447})|(?=0)).
(?:(?=1(?<1>){85005})|(?=0)).
(?:(?=1(?<1>){17936})|(?=0)).
(?:(?=1(?<1>){108053})|(?=0)).
(?:(?=1(?<1>){88599})|(?=0)).
(?:(?=1(?<1>){91672})|(?=0)).
(?:(?=1(?<1>){178716})|(?=0)).
(?:(?=1(?<1>){199710})|(?=0)).
(?:(?=1(?<1>){166661})|(?=0)).
(?:(?=1(?<1>){190496})|(?=0)).
(?:(?=1(?<1>){184494})|(?=0)).
(?:(?=1(?<1>){199203})|(?=0)).
(?:(?=1(?<1>){116778})|(?=0)).
(?:(?=1(?<1>){78891})|(?=0)).
(?:(?=1(?<1>){192556})|(?=0)).
(?:(?=1(?<1>){24995})|(?=0)).
(?:(?=1(?<1>){1071})|(?=0)).
(?:(?=1(?<1>){192561})|(?=0)).
(?:(?=1(?<1>){108082})|(?=0)).
(?:(?=1(?<1>){1593})|(?=0)).
(?:(?=1(?<1>){26967})|(?=0)).
(?:(?=1(?<1>){197983})|(?=0)).
(?:(?=1(?<1>){97034})|(?=0)).
(?:(?=1(?<1>){86965})|(?=0)).
(?:(?=1(?<1>){60480})|(?=0)).
(?:(?=1(?<1>){149571})|(?=0)).
(?:(?=1(?<1>){100932})|(?=0)).
(?:(?=1(?<1>){40519})|(?=0)).
(?:(?=1(?<1>){173492})|(?=0)).
(?:(?=1(?<1>){80972})|(?=0)).
(?:(?=1(?<1>){115790})|(?=0)).
(?:(?=1(?<1>){29265})|(?=0)).
(?:(?=1(?<1>){91730})|(?=0)).
(?:(?=1(?<1>){173140})|(?=0)).
(?:(?=1(?<1>){52821})|(?=0)).
(?:(?=1(?<1>){176726})|(?=0)).
(?:(?=1(?<1>){170211})|(?=0)).
(?:(?=1(?<1>){150105})|(?=0)).
(?:(?=1(?<1>){23131})|(?=0)).
(?:(?=1(?<1>){81503})|(?=0)).
(?:(?=1(?<1>){77412})|(?=0)).
(?:(?=1(?<1>){106086})|(?=0)).
(?:(?=1(?<1>){4284})|(?=0)).
(?:(?=1(?<1>){142610})|(?=0)).
(?:(?=1(?<1>){167534})|(?=0)).
(?:(?=1(?<1>){190577})|(?=0)).
(?:(?=1(?<1>){147731})|(?=0)).
(?:(?=1(?<1>){133748})|(?=0)).
(?:(?=1(?<1>){194750})|(?=0)).
(?:(?=1(?<1>){49257})|(?=0)).
(?:(?=1(?<1>){49274})|(?=0)).
(?:(?=1(?<1>){120767})|(?=0)).
(?:(?=1(?<1>){172668})|(?=0)).
(?:(?=1(?<1>){24703})|(?=0)).
(?:(?=1(?<1>){108160})|(?=0)).
(?:(?=1(?<1>){60546})|(?=0)).
(?:(?=1(?<1>){56963})|(?=0)).
(?:(?=1(?<1>){30340})|(?=0)).
(?:(?=1(?<1>){95368})|(?=0)).
(?:(?=1(?<1>){59530})|(?=0)).
(?:(?=1(?<1>){53388})|(?=0)).
(?:(?=1(?<1>){14477})|(?=0)).
(?:(?=1(?<1>){28302})|(?=0)).
(?:(?=1(?<1>){182927})|(?=0)).
(?:(?=1(?<1>){59024})|(?=0)).
(?:(?=1(?<1>){146200})|(?=0)).
(?:(?=1(?<1>){153746})|(?=0)).
(?:(?=1(?<1>){39571})|(?=0)).
(?:(?=1(?<1>){134293})|(?=0)).
(?:(?=1(?<1>){158362})|(?=0)).
(?:(?=1(?<1>){170139})|(?=0)).
(?:(?=1(?<1>){182940})|(?=0)).
(?:(?=1(?<1>){7327})|(?=0)).
(?:(?=1(?<1>){143525})|(?=0)).
(?:(?=1(?<1>){119464})|(?=0)).
(?:(?=1(?<1>){82090})|(?=0)).
(?:(?=1(?<1>){170667})|(?=0)).
(?:(?=1(?<1>){49522})|(?=0)).
(?:(?=1(?<1>){69806})|(?=0)).
(?:(?=1(?<1>){15535})|(?=0)).
(?:(?=1(?<1>){16049})|(?=0)).
(?:(?=1(?<1>){163358})|(?=0)).
(?:(?=1(?<1>){181876})|(?=0)).
(?:(?=1(?<1>){58044})|(?=0)).
(?:(?=1(?<1>){16062})|(?=0)).
(?:(?=1(?<1>){39616})|(?=0)).
(?:(?=1(?<1>){31425})|(?=0)).
(?:(?=1(?<1>){94404})|(?=0)).
(?:(?=1(?<1>){86848})|(?=0)).
(?:(?=1(?<1>){16589})|(?=0)).
(?:(?=1(?<1>){195280})|(?=0)).
(?:(?=1(?<1>){199377})|(?=0)).
(?:(?=1(?<1>){43731})|(?=0)).
(?:(?=1(?<1>){67534})|(?=0)).
(?:(?=1(?<1>){106198})|(?=0)).
(?:(?=1(?<1>){54999})|(?=0)).
(?:(?=1(?<1>){52952})|(?=0)).
(?:(?=1(?<1>){125828})|(?=0)).
(?:(?=1(?<1>){169691})|(?=0)).
(?:(?=1(?<1>){184542})|(?=0)).
(?:(?=1(?<1>){177888})|(?=0)).
(?:(?=1(?<1>){43233})|(?=0)).
(?:(?=1(?<1>){127203})|(?=0)).
(?:(?=1(?<1>){116518})|(?=0)).
(?:(?=1(?<1>){117990})|(?=0)).
(?:(?=1(?<1>){67815})|(?=0)).
(?:(?=1(?<1>){62202})|(?=0)).
(?:(?=1(?<1>){165611})|(?=0)).
(?:(?=1(?<1>){197356})|(?=0)).
(?:(?=1(?<1>){29933})|(?=0)).
(?:(?=1(?<1>){90862})|(?=0)).
(?:(?=1(?<1>){90863})|(?=0)).
(?:(?=1(?<1>){149232})|(?=0)).
(?:(?=1(?<1>){61681})|(?=0)).
(?:(?=1(?<1>){137970})|(?=0)).
(?:(?=1(?<1>){90357})|(?=0)).
(?:(?=1(?<1>){47351})|(?=0)).
(?:(?=1(?<1>){172509})|(?=0)).
(?:(?=1(?<1>){78293})|(?=0)).
(?:(?=1(?<1>){66303})|(?=0)).
(?:(?=1(?<1>){66262})|(?=0)).
(?:(?=1(?<1>){158471})|(?=0)).
(?:(?=1(?<1>){5676})|(?=0)).
(?:(?=1(?<1>){127242})|(?=0)).
(?:(?=1(?<1>){51979})|(?=0)).
(?:(?=1(?<1>){162060})|(?=0)).
(?:(?=1(?<1>){27405})|(?=0)).
(?:(?=1(?<1>){153874})|(?=0)).
(?:(?=1(?<1>){150291})|(?=0)).
(?:(?=1(?<1>){1814})|(?=0)).
(?:(?=1(?<1>){193815})|(?=0)).
(?:(?=1(?<1>){82200})|(?=0)).
(?:(?=1(?<1>){59161})|(?=0)).
(?:(?=1(?<1>){78620})|(?=0)).
(?:(?=1(?<1>){123678})|(?=0)).
(?:(?=1(?<1>){147232})|(?=0)).
(?:(?=1(?<1>){71457})|(?=0)).
(?:(?=1(?<1>){118562})|(?=0)).
(?:(?=1(?<1>){129830})|(?=0)).
(?:(?=1(?<1>){161841})|(?=0)).
(?:(?=1(?<1>){60295})|(?=0)).
(?:(?=1(?<1>){165426})|(?=0)).
(?:(?=1(?<1>){107485})|(?=0)).
(?:(?=1(?<1>){171828})|(?=0)).
(?:(?=1(?<1>){166200})|(?=0)).
(?:(?=1(?<1>){35124})|(?=0)).
(?:(?=1(?<1>){160573})|(?=0)).
(?:(?=1(?<1>){7486})|(?=0)).
(?:(?=1(?<1>){169279})|(?=0)).
(?:(?=1(?<1>){151360})|(?=0)).
(?:(?=1(?<1>){6978})|(?=0)).
(?:(?=1(?<1>){136003})|(?=0)).
(?:(?=1(?<1>){56133})|(?=0)).
(?:(?=1(?<1>){8520})|(?=0)).
(?:(?=1(?<1>){87436})|(?=0)).
(?:(?=1(?<1>){57162})|(?=0)).
(?:(?=1(?<1>){197965})|(?=0)).
(?:(?=1(?<1>){145230})|(?=0)).
(?:(?=1(?<1>){95459})|(?=0)).
(?:(?=1(?<1>){180564})|(?=0)).
(?:(?=1(?<1>){157850})|(?=0)).
(?:(?=1(?<1>){109399})|(?=0)).
(?:(?=1(?<1>){191832})|(?=0)).
(?:(?=1(?<1>){110223})|(?=0)).
(?:(?=1(?<1>){75102})|(?=0)).
(?:(?=1(?<1>){140639})|(?=0)).
(?:(?=1(?<1>){49504})|(?=0)).
(?:(?=1(?<1>){197987})|(?=0)).
(?:(?=1(?<1>){52744})|(?=0)).
(?:(?=1(?<1>){96615})|(?=0)).
(?:(?=1(?<1>){13672})|(?=0)).
(?:(?=1(?<1>){73068})|(?=0)).
(?:(?=1(?<1>){104814})|(?=0)).
(?:(?=1(?<1>){66929})|(?=0)).
(?:(?=1(?<1>){23410})|(?=0)).
(?:(?=1(?<1>){122686})|(?=0)).
(?:(?=1(?<1>){44918})|(?=0)).
(?:(?=1(?<1>){101752})|(?=0)).
(?:(?=1(?<1>){3961})|(?=0)).
(?:(?=1(?<1>){31807})|(?=0)).
(?:(?=1(?<1>){54933})|(?=0)).
(?:(?=1(?<1>){140096})|(?=0)).
(?:(?=1(?<1>){49026})|(?=0)).
(?:(?=1(?<1>){5507})|(?=0)).
(?:(?=1(?<1>){96132})|(?=0)).
(?:(?=1(?<1>){167303})|(?=0)).
(?:(?=1(?<1>){57877})|(?=0)).
(?:(?=1(?<1>){88461})|(?=0)).
(?:(?=1(?<1>){111853})|(?=0)).
(?:(?=1(?<1>){126531})|(?=0)).
(?:(?=1(?<1>){110998})|(?=0)).
(?:(?=1(?<1>){7575})|(?=0)).
(?:(?=1(?<1>){7064})|(?=0)).
(?:(?=1(?<1>){59289})|(?=0)).
(?:(?=1(?<1>){122203})|(?=0)).
(?:(?=1(?<1>){175005})|(?=0)).
(?:(?=1(?<1>){28025})|(?=0)).
(?:(?=1(?<1>){49057})|(?=0)).
(?:(?=1(?<1>){6373})|(?=0)).
(?:(?=1(?<1>){50084})|(?=0)).
(?:(?=1(?<1>){70565})|(?=0)).
(?:(?=1(?<1>){75178})|(?=0)).
(?:(?=1(?<1>){142763})|(?=0)).
(?:(?=1(?<1>){56237})|(?=0)).
(?:(?=1(?<1>){32176})|(?=0)).
(?:(?=1(?<1>){113073})|(?=0)).
(?:(?=1(?<1>){149939})|(?=0)).
(?:(?=1(?<1>){16308})|(?=0)).
(?:(?=1(?<1>){12725})|(?=0)).
(?:(?=1(?<1>){75190})|(?=0)).
(?:(?=1(?<1>){54711})|(?=0)).
(?:(?=1(?<1>){180664})|(?=0)).
(?:(?=1(?<1>){68540})|(?=0)).
(?:(?=1(?<1>){93117})|(?=0)).
(?:(?=1(?<1>){161781})|(?=0)).
(?:(?=1(?<1>){15808})|(?=0)).
(?:(?=1(?<1>){130814})|(?=0)).
(?:(?=1(?<1>){162379})|(?=0)).
(?:(?=1(?<1>){80836})|(?=0)).
(?:(?=1(?<1>){149943})|(?=0)).
(?:(?=1(?<1>){16841})|(?=0)).
(?:(?=1(?<1>){149452})|(?=0)).
(?:(?=1(?<1>){182733})|(?=0)).
(?:(?=1(?<1>){56270})|(?=0)).
(?:(?=1(?<1>){163792})|(?=0)).
(?:(?=1(?<1>){34770})|(?=0)).
(?:(?=1(?<1>){101843})|(?=0)).
(?:(?=1(?<1>){199124})|(?=0)).
(?:(?=1(?<1>){129493})|(?=0)).
(?:(?=1(?<1>){43990})|(?=0)).
(?:(?=1(?<1>){113112})|(?=0)).
(?:(?=1(?<1>){71129})|(?=0)).
(?:(?=1(?<1>){61402})|(?=0)).
(?:(?=1(?<1>){145852})|(?=0)).
(?:(?=1(?<1>){98781})|(?=0)).
(?:(?=1(?<1>){141790})|(?=0)).
(?:(?=1(?<1>){163235})|(?=0)).
(?:(?=1(?<1>){110566})|(?=0)).
(?:(?=1(?<1>){117737})|(?=0)).
(?:(?=1(?<1>){67050})|(?=0)).
(?:(?=1(?<1>){68075})|(?=0)).
(?:(?=1(?<1>){124047})|(?=0)).
(?:(?=1(?<1>){181587})|(?=0)).
(?:(?=1(?<1>){125429})|(?=0)).
(?:(?=1(?<1>){112118})|(?=0)).
(?:(?=1(?<1>){196088})|(?=0)).
(?:(?=1(?<1>){25082})|(?=0)).
(?:(?=1(?<1>){178684})|(?=0)).
(?:(?=1(?<1>){13822})|(?=0)).
(?<-1>){10094986}
(?(1)(?!))
$

Mỗi (?:(?=1(?<1>){n})|(?=0)).hàng đẩy ncác chuỗi trống thành nhóm 1nếu tìm thấy chữ số 1 và không làm gì nếu 0tìm thấy a. (?<-1>){10094986}(?(1)(?!))sau đó kiểm tra xem tổng số chuỗi trống trong nhóm 1 vào cuối là 10094986. Do đó, mục tiêu của chúng tôi là tìm một tập hợp con số sao cho tổng của chúng là 10094986. Đây chính xác là vấn đề tổng của tập hợp con, đây là trường hợp đặc biệt của vấn đề về chiếc ba lô và hoàn thành NP.

Đã thử nghiệm trên Regex Hero (Regex Storm lần này cho lần này).


2
Khớp: 01111111111111111111111011001111111111011111111111111111111101111111111 11111111111111111111011111111000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000 (loại bỏ những khoảng trắng đó). Không khớp : KnapsackAlgorithm . Không dễ để cài đặt Silverlight trên máy Ubuntu của tôi. Nhưng điều này đã làm việc trên một số thử nghiệm khác.
jimmy23013

@ user23013 Ah oops, tôi quên rằng Silverlight cần thiết. Nhưng thành thật mà nói, tôi không may mắn hoặc có rất nhiều giải pháp, bởi vì đó là một chuỗi 0 dài ngu ngốc ở cuối đó. Sau đó, một lần nữa tôi sẽ cần vượt qua rào cản int 32 bit trước, tôi nghĩ rằng tôi có một ý tưởng ...
Sp3000

Tôi đã có hơn 700 bit nguyên trong câu trả lời mới nhất của mình!
jimmy23013

@ user23013 Và bạn đang nói với chúng tôi về yếu tố đó? Có nghĩa là như vậy! : P
Sp3000

2
Số nguyên cho hệ số là 1536 bit.
jimmy23013

4

Hương vị .NET (52506 byte)

Tổng hợp, phiên bản cao cấp.

Regex tại đây , phiên bản mở rộng tại đây , đã thử nghiệm trên RegExLibRegex Hero


Khớp: 1000010001000000001101011000001101110101001010011101000101010011011101000001010101001000010010000111011101100101001101001111000111010101100000101000101010110001010101001100100001110010001101010101100010110011000000110110000000011111101000001000011111100010

Không khớp: Huzzah for NP-complete regexes

Regex này là một vấn đề tổng hợp tập hợp con khổng lồ và sử dụng 16 nhóm để lưu trữ dữ liệu. Mỗi 1trong chuỗi đại diện cho 16 số 10 bit, cùng nhau đại diện cho một số nguyên 160 bit. Một vài dòng cuối cùng của biểu thức chính quy mang các giá trị trong các nhóm sao cho các nhóm 2-16 tăng lên 1023 (ví dụ: 1 * 1023 + 1024 trở thành 2 * 1023 + 1), vì nếu không, chúng tôi chỉ giải quyết được 16 tập hợp con nhỏ đồng thời tổng các vấn đề trái ngược với một vấn đề lớn.


Chúc mừng bạn đã vượt qua 72 giờ! Bây giờ bạn có thể khóa câu trả lời của bạn chống lại nứt bằng cách tiết lộ chìa khóa. Cho đến khi bạn làm, câu trả lời vẫn có thể bị bẻ khóa.
Martin Ender

4

Hương vị .NET, 53.884 byte [an toàn]

Được tạo bởi GnuPG! Và được trích xuất bởi pgpdump. Đó là 1536 bit vì các phiên bản dài hơn không thành công trên trình kiểm tra trực tuyến.

Regex ở đây: http://pastebin.com/PkJnj9ME

Đã thử nghiệm trên RegExLib (không có tùy chọn nào được chọn). Tôi hy vọng tôi đã không gây ra quá nhiều rắc rối cho họ.

Bạn có thể muốn crack phiên bản dễ dàng đầu tiên. Nó giống như cái này, ngoại trừ việc có một phím ngắn hơn nhiều.

Bạn có thể cũng muốn số này:

1877387013349538768090205114842510626651131723107399383794998450806739516994144298310401108806926034240658300213548103711527384569076779151468208082508190882390076337427064709559437854062111632001332811449146722382069400055588711790985185172254011431483115758796920145490044311800185920322455262251745973830227470485279892907738203417793535991544580378895041359393212505410554875960037474608732567216291143821804979045946285675144158233812053215704503132829164251

Chìa khóa

Trận đấu:

Ëòčĵċsïݲ¤ėGâĥÓŧÿÃiTüū&0EĚĵŒR@bĵ¤¿Ĉ=ķüÙļÞďYaŃīŲĢŪÕďųïyĘŊŢĝĪĘŠćĢmtŠîĽþĽłŶāĨĩģTő!ĺw=aŧïųţĨíœą¸Ëč!,ĵţ¨ŌąŜ7ć<ůū¹"VCæ>õêqKËĖ¡ôÕÂúëdčÜÇĺřGĝ¢ÈòTdĩŤŭi§aćŎŭųä«´3ĚΦîŇĬÒÕ¥ńü½å±ì³Jõ«D>ìYũʼn5öķ@ŪĠďàÂIĭųė!

Không phù hợp:

1111111111111111

Các số nguyên tố:

1332079940234179614521970444786413763737753518438170921866494487346327879385305027126769158207767221820861337268140670862294914465261588406119592761408774455338383491427898155074772832852850476306153369461364785463871635843192956321
1409365126404871907363160248446313781336249368768980464167188493095028723639124224991540391841197901143131758645183823514744033123070116823118973220350307542767897614254042472660258176592286316247065295064507580468562028846326382331

Giải thích là trong phiên bản dễ dàng .

Kịch bản trình tạo (trong CJam)

'~),'!i>"+.()?*\\[]{|}^$/,^-:#"-
'ǝ,'¡i>173c-+289<:T;

95:F;
95:G;

"
^
(?=["T",]{"FG+)`"}$)
(?=.{"F`"},)
(?!.*,.*,)
(?:
    (?(X)
        (?<-X>)
        (?(L)(?<-L>)(?<l>)|){16}
    |
        (?:
            "
            [T289,]z
            {[~17md["(?<l>){"\'}]["(?<L>){"@'}]]}%'|*
            "
        )
        (?<X>)
    )
    (?=.*,
        (?:
            (?(Y)
                (?<-Y>)
                (?(R)(?<-R>)(?<r>)|){16}
            |
                (?:
                    "
                    [T289,]z
                    {[~17md["(?<r>){"\'}]["(?<R>){"@'}]]}%'|*
                    "
                )
                (?<Y>)
            )

            (?(l)
                (?<-l>)(?<x>)
                (?(r)(?<-r>)(?<y>)(?<v>)|){16}
                (?(y)(?<-y>)(?<r>)|){16}
            |){16}
            (?(x)(?<-x>)(?<l>)|){16}

            (?(p)(?<-p>)(?<s>)(?<z>)|){"F2*(`"}
            (?(z)(?<-z>)(?<p>)|){"F2*(`"}
            (?(q)(?<-q>)(?<s>)(?<z>)|){"G2*(`"}
            (?(z)(?<-z>)(?<q>)|){"G2*(`"}
            "
            "
            (?(s)
                (?<-s>)
            "FG+(2**
            "
                (?(v)(?<-v>)(?<a"FG+(2*`">)|){256}
            "
            ["
            |
                (?(v)(?<-v>)(?<a"">)|){256}
            )
            "]aFG+(2*,W%m*{~\~@`\}/
            "
            (?(r)(?<-r>)|){16}
            (?<q>)
        ){"G2*`"}
        (?<-q>){"G2*`"}
    )
    (?(l)(?<-l>)|){16}
    (?<p>)
){"F2*`"},

"
[
l~17bW%_,FG+2*\- 0a*+
FG+2*,
]z
{
~:A`:B;:C;
"
(?<-a"B">){"C`"}
(?(a"B")(?<-a"B">){17}(?<a"A)`">)|){4100}
(?(a"B")(?!)|)"
}/

]:+N9c+-

Đầu vào phải là số trên.

Sau khi bạn hoàn thành, giải pháp có thể được tạo bởi chương trình này:

'~),'!i>"+.()?*\\[]{|}^$/,^-:#"-
'ǝ,'¡i>173c-+289<:T;

95:F;
95:G;

{
r~289bW%_,FG:F;\- 0a*+
{T=}%
}2*',\

Đầu vào phải là hai số nguyên.


Quá tệ. RegExLib ngừng hoạt động. Tôi nghĩ mọi người nên sử dụng Silverlight hoặc thử nghiệm cục bộ. Nhưng tôi không thể kiểm tra chúng.
jimmy23013

IIRc, RegexHero là một trình kiểm tra .NET trong trình duyệt, sử dụng Silverlight.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

Một ý tưởng khác về số nguyên lớn là tính các số nguyên tố mod sản phẩm gần 200. Nó sẽ nhanh hơn. Nhưng mã sẽ dài hơn nhiều và tôi sẽ không làm điều đó trong các câu trả lời nhân tử nguyên.
jimmy23013

Chúc mừng bạn đã vượt qua 72 giờ! Bây giờ bạn có thể khóa câu trả lời của bạn chống lại nứt bằng cách tiết lộ chìa khóa. Cho đến khi bạn làm, câu trả lời vẫn có thể bị bẻ khóa.
Martin Ender

4

PHP, 395 byte [bị bẻ khóa bởi nneonneo ]

^( *)( *)( *)(['.-])((?!\4)(?4)+?)((?!\4|\5)(?4)++)\1\3whale
(?=.(.))\6.\7\4(?!\4|\6)([_\/])\3(?!(?11))\8\2(?=\2)\3\1_((?=\4+.).\5(?!\6)\5)(?!.?')\7\4
(?=.\7)\6.([,`])\3{2}(?=.((?!\8)[_\/])\11)\Q(_\E.\4{2}(?!\.)\5((?!\10)(?10)(?!\4+|\5|\6))\1\3{3}(\\)
(\3{3})\13\2{2}\1{1}\3+(?<=\S {10})\4\1\3\|
\1(?=\12)(?12)(?!`,)\10\4(\11{2})\4\14\10\15\9\8
\14{2}(?=\6)['-]\4(?<!-)\11\8\11\4\6\11\15\.-|(?!)

Một trò chơi ghép hình tốt hơn mục cuối cùng của tôi.

Lưu ý: Khóa khớp là multiline, với mỗi dòng được phân tách bằng ký tự dòng mới \n. Xây dựng lại một số nghệ thuật ASCII!

Đây là một bản demo regex .


3
Khớp : 202e272d207768616c650a2d3a3a2e2f202f205f2e27273a2e0a2d3a2c2020285f5f2e2e27602020205c0a2020205c202020202020202020202e207c0a602c2e5f5f2e2020202c5f5f2e27272f0a2020202020202d2e5f2f5f2e2d5f5f5f2e2d(mã hóa hex). Không khớp : IDon'tThinkIGotTheRightPicture. Không gian làm việc bằng chứng: regex101.com/r/gF9pU0/1
nneonneo

1
@nneonneo Wow! Bạn đã giải quyết nó: D Nhưng hình ảnh bên phải là đây: regex101.com/r/oM9rC4/1
Unihedron

1
Vâng, tôi hình dung tôi không có đủ không gian (nhưng regex không kiểm tra quá mạnh). Và, có vẻ như tôi đã thay thế .-'khi bắt đầu .'-. Nhìn chung, cái trước hợp lý hơn nhiều đối với nghệ thuật ASCII;)
nneonneo

3

Hương vị Perl, 97 [nứt]

Tôi e rằng việc này sẽ quá dễ dàng do giới hạn độ dài khóa.

^([^,]+),(?!\1)([^,]+),(?!\1|\2,)([^,]+),(?!\1|(?:\2|\3),)([^,]+),(?=.\2+$)(?=.\3+$)(?=.\4+$)\1+$

Nếu bạn nghĩ rằng bạn đã tìm ra ý tưởng đằng sau nó, hãy thử phiên bản dài hơn (không phải là một phần của thử thách):

^((?:[^,]{3})+),(?!\1)([^,]+),(?!\1|\2,)([^,]+),(?!\1|(?:\2|\3),)([^,]+),(?!\1|(?:\2|\3|\4),)([^,]+),(?!\1|(?:\2|\3|\4|\5),)([^,]+),(?!\1|(?:\2|\3|\4|\5|\6),)([^,]+),(?!\1|(?:\2|\3|\4|\5|\6|\7),)([^,]+),(?=.\2+$)(?=.\3+$)(?=.\4+$)(?=.\5+$)(?=.\6+$)(?=.\7+$)(?=.\8+$)\1+$

1
Trận đấu : aaaaaaa,a,aa,aaa,aaaaaaa. Không khớp : aaaabaaacaaadaaa.
jimmy23013

Phiên bản dài hơn: Khớp: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,a,aa,(xóa các ký tự này) aaaa,aaaaaaa,aaaaaaaa,aaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaa,(xóa các ký tự này) aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. Không phù hợp:aaaabaaacaaadaaa
jimmy23013

@ user23013: Phiên bản ngắn là chính xác! Ý tôi là các nhóm chụp dài ít nhất hai ký tự, điều này sẽ khiến khóa dài hơn một chút, nhưng tôi quên thay đổi: P Mặc dù vậy, phiên bản dài hơn không chính xác.
Ell

Trang web này đã thêm một số ký tự đặc biệt vô hình khi tôi đăng chúng. Tôi nghĩ rằng nó đã được sửa chữa. (Không có (remove these characters).)
jimmy23013

@ user23013 Vâng, đó là một trận đấu. Tôi thực sự không có kế hoạch cho nó dễ dàng như vậy: P
Ell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.