อุ่นเครื่อง: Regex, กระดาษ, กรรไกร
นี่คือความท้าทายที่ฉันต้องการโพสต์ก่อนที่จะรู้ว่ามีคำตอบสั้น ๆ อย่างไรก็ตามอาจเป็นปัญหาที่น่าสนใจในการเตรียมความพร้อมสำหรับความท้าทายที่แท้จริงด้านล่าง
เขียนสาม regexes R , PและSเพื่อให้เข้าคู่กันในวงร็อค, กระดาษ, กรรไกรแฟชั่น โดยเฉพาะอย่างยิ่งRตรงกับS , SตรงกับPและPตรงกับRแต่R ไม่ตรงกับP , S ไม่ตรงกับRและPไม่ตรงกับS นี่คือตารางที่มีประโยชน์:
Regex Matches Doesn't match
R S P
P R S
S P R
ไม่สำคัญว่าR , PและSจะทำอะไรกับอินพุตอื่นรวมถึงตัวมันเองด้วย
ที่นี่การแข่งขันก็หมายความว่าบางคน (อาจจะเป็นที่ว่างเปล่า) ย่อยของท่านจะถูกจับคู่ การแข่งขันไม่จำเป็นต้องครอบคลุมการป้อนข้อมูลทั้งหมด
ความท้าทาย: Regex, กระดาษ, กรรไกร, Lizard, Spock
สำหรับความท้าทายนี้คุณจะแก้ปัญหาข้างต้นที่ยากขึ้นโดยอ้างอิงจากตัวแปร RPS Rock, Paper, Scissors, Lizard, Spock (ตามทฤษฎีบิ๊กแบง ) ใน RPSLV มีห้าสัญลักษณ์ที่แตกต่างกันซึ่งเอาชนะกันและกันในสองรอบ:
- ร็อค→กรรไกร→จิ้งจก→กระดาษ→สป็อค→ร็อค
- Rock → Lizard → Spock →กรรไกร→กระดาษ→ Rock
คุณควรเขียนห้า regexes R , P , S , LและVซึ่งเลียนแบบโครงสร้างนี้เมื่อกำหนดให้กันเป็นอินพุต นี่คือตารางที่เกี่ยวข้อง:
Regex Matches Doesn't match
R L, S V, P
L V, P S, R
V S, R P, L
S P, L R, V
P R, V L, S
เพียงเพื่อจะชัดเจนคุณควรจะไม่ตรงกับสตริงR
, P
ฯลฯ แต่ regexes อื่น ๆ เช่นถ้า regex Rของคุณเป็น^\w$
ตัวอย่างPและVต้องจับคู่สตริง^\w$
ในขณะที่SและLไม่ควร
การจับคู่อีกครั้งหมายความว่ามีการจับคู่สตริงย่อย (อาจว่างเปล่า) อย่างน้อยหนึ่งรายการ การแข่งขันไม่จำเป็นต้องครอบคลุมการป้อนข้อมูลทั้งหมด ยกตัวอย่างเช่น\b
(คำเขตแดน) ตรงhello
(ที่จุดเริ่มต้นและในตอนท้าย) (^,^)
แต่มันไม่ตรงกับ
คุณสามารถใช้รสชาติของ regex ใดก็ได้ แต่โปรดระบุตัวเลือกในคำตอบของคุณและถ้าเป็นไปได้ให้ลิงค์ไปยังผู้ทดสอบออนไลน์สำหรับรสชาติที่เลือก คุณไม่สามารถใช้คุณสมบัติ regex ใด ๆ ที่ช่วยให้คุณสามารถเรียกใช้รหัสในภาษาโฮสต์ของ flavour (เช่นe
ตัวดัดแปลงของ flavour Perl )
ตัวคั่น (เหมือน/regex/
) จะไม่รวมอยู่ใน regex เมื่อกำหนดเป็นอินพุตให้กับอีกตัวหนึ่งและคุณไม่สามารถใช้ตัวดัดแปลงที่อยู่นอก regex รสชาติบางอย่างยังให้คุณใช้โมเดอเรเตอร์กับซินแท็กซ์แบบอินไลน์(?s)
ได้
คะแนนของคุณคือผลรวมของความยาวของห้า regexes เป็นไบต์ ต่ำกว่าดีกว่า
มันจะเปิดออกจะง่ายมากที่จะหาวิธีการทำงานเพื่อแก้ไขปัญหานี้กว่ามันอาจจะดูเหมือนในตอนแรก แต่ผมหวังว่าการหาทางออกที่ดีที่สุดคือค่อนข้างยุ่งยาก
\b
(ขอบเขตของคำ) จับคู่hello
(ที่จุดเริ่มต้นและท้าย) แต่ มันไม่ตรงกัน(^,^)
"