เขียน regex ที่ตรงกับโซลูชันของซูโดกุที่ถูกต้องและไม่ตรงกับโซลูชันของซูโดกุที่ไม่ถูกต้อง การป้อนข้อมูลที่เป็นคลี่รุ่นของซูโดกุคือไม่มีตัวคั่นบรรทัด เช่นกระดานต่อไปนี้:
7 2 5 8 9 3 4 6 1
8 4 1 6 5 7 3 9 2
3 9 6 1 4 2 7 5 8
4 7 3 5 1 6 8 2 9
1 6 8 4 2 9 5 3 7
9 5 2 3 7 8 1 4 6
2 3 4 7 6 1 9 8 5
6 8 7 9 3 5 2 1 4
5 1 9 2 8 4 6 7 3
จะได้รับเป็น:
725893461841657392396142758473516829168429537952378146234761985687935214519284673
กฎอาจเป็นความรู้ทั่วไปในตอนนี้ แต่ในกรณีที่ ... บอร์ดซูโดกุใช้ได้ถ้าหาก:
- แต่ละแถวมีตัวเลขตั้งแต่
1
ถึง9
หนึ่งครั้ง - แต่ละคอลัมน์มีตัวเลขตั้งแต่
1
ถึง9
หนึ่งครั้ง - แต่ละรายการย่อยเก้า 3x3 รายการมีตัวเลขตั้งแต่
1
ถึง9
หนึ่งครั้ง
กฎระเบียบ
คำตอบของคุณควรประกอบด้วย regex เพียงหนึ่งเดียวโดยไม่มีรหัสเพิ่มเติมใด ๆ (ยกเว้นเป็นทางเลือกรายการของตัวดัดแปลง regex ที่จำเป็นสำหรับการแก้ปัญหาของคุณ) คุณต้องไม่ใช้คุณสมบัติของรสชาติ regex ของภาษาที่อนุญาตให้คุณเรียกใช้โค้ดในภาษาโฮสติ้ง (เช่นe
ตัวดัดแปลงของ Perl )
คุณสามารถใช้รสชาติของ regex ใด ๆ ที่มีอยู่ก่อนความท้าทายนี้ แต่โปรดระบุรสชาติ
อย่าสันนิษฐานว่า regex ถูกยึดโดยปริยาย เช่นถ้าคุณกำลังใช้งูหลามสมมติว่า regex ของคุณจะใช้กับและไม่ได้มีre.search
re.match
regex ของคุณไม่จำเป็นต้องตรงกับสตริงทั้งหมด เพียงแค่ต้องจับคู่สตริงย่อยอย่างน้อยหนึ่งรายการ (ซึ่งอาจว่างเปล่า) สำหรับโซลูชันที่ถูกต้องและไม่พบการจับคู่สำหรับโซลูชันที่ไม่ถูกต้อง
คุณอาจสันนิษฐานว่าข้อมูลที่ป้อนจะเป็นสตริงที่มีค่าเป็นบวก 81 หลักเสมอ
นี่คือสนามกอล์ฟ regex ดังนั้น regex ที่สั้นที่สุดเป็นไบต์จะเป็นผู้ชนะ หากภาษาของคุณต้องการตัวคั่น (โดยปกติ/.../
) เพื่อแสดงถึงนิพจน์ทั่วไปอย่านับตัวคั่นด้วยตนเอง หากโซลูชันของคุณต้องการตัวดัดแปลงให้เพิ่มหนึ่งไบต์ต่อตัวดัดแปลง
กรณีทดสอบ
บอร์ดที่ถูกต้อง:
123456789456789123789123456231564897564897231897231564312645978645978312978312645
725893461841657392396142758473516829168429537952378146234761985687935214519284673
395412678824376591671589243156928437249735186738641925983164752412857369567293814
679543182158926473432817659567381294914265738283479561345792816896154327721638945
867539142324167859159482736275398614936241587481756923592873461743615298618924375
954217683861453729372968145516832497249675318783149256437581962695324871128796534
271459386435168927986273541518734269769821435342596178194387652657942813823615794
237541896186927345495386721743269158569178432812435679378652914924813567651794283
168279435459863271273415986821354769734692518596781342615947823387526194942138657
863459712415273869279168354526387941947615238138942576781596423354821697692734185
768593142423176859951428736184765923572389614639214587816942375295837461347651298
243561789819327456657489132374192865926845317581673294162758943735914628498236571
243156789519847326687392145361475892724918653895263471152684937436729518978531264
498236571735914628162758943581673294926845317374192865657489132819327456243561789
978531264436729518152684937895263471724918653361475892687392145519847326243156789
341572689257698143986413275862341957495726831173985426519234768734869512628157394
บอร์ดไม่ถูกต้อง:
519284673725893461841657392396142758473516829168429537952378146234761985687935214
839541267182437659367158924715692843624973518573864192298316475941285736456729381
679543182158926473432817659567381294914256738283479561345792816896154327721638945
867539142324167859159482736275398684936241517481756923592873461743615298618924375
754219683861453729372968145516832497249675318983147256437581962695324871128796534
271459386435168927986273541518734269769828435342596178194387652657942813823615794
237541896186927345378652914743269158569178432812435679495386721924813567651794283
168759432459613278273165984821594763734982516596821347615437829387246195942378651
869887283619214453457338664548525781275424668379969727517385163319223917621449519
894158578962859187461322315913849812241742157275462973384219294849882291119423759
123456789456789123564897231231564897789123456897231564312645978645978312978312645
145278369256389147364197258478512693589623471697431582712845936823956714931764825
243561789829317456657489132374192865916845327581673294162758943735924618498236571
243156789529847316687392145361475892714928653895263471152684937436719528978531264
498236571735924618162758943581673294916845327374192865657489132829317456243561789
978531264436719528152684937895263471714928653361475892687392145529847316243156789
342571689257698143986413275861342957495726831173985426519234768734869512628157394
345678192627319458892451673468793521713524986951862347179246835534187269286935714
341572689257698143986413275862341957495726831173985426519234768734869512628517394
สำหรับกรณีทดสอบเพิ่มเติมคุณสามารถใช้สคริปต์ CJam นี้ซึ่งใช้บอร์ดที่ถูกต้องเป็นอินพุตและสุ่มเพื่อให้บอร์ดใหม่ที่ถูกต้อง (รูปแบบการป้อนข้อมูลที่ไม่เกี่ยวข้องตราบใดที่มีตัวเลขเท่านั้น
ถ้า regex ของคุณเข้ากันได้กับ. NET รสคุณสามารถทดสอบออนไลน์โดยใช้ Retina โซลูชันที่ถูกต้องควรพิมพ์0
สำหรับบอร์ดที่ไม่ถูกต้องและจำนวนเต็มบวกสำหรับบอร์ดที่ถูกต้อง หากต้องการเรียกใช้กรณีทดสอบทั้งหมดในครั้งเดียวให้ใช้เทมเพลตนี้และแทรก regex ในบรรทัดที่สอง หากคุณต้องการตัวดัดแปลง regex ให้เติม a `
ไปยัง regex และวางตัวอักษรปรับปรุงมาตรฐานไว้ข้างหน้า
valid boards
อย่างไร?