ความท้าทายนี้ได้รับแรงบันดาลใจจากวิชาคณิตศาสตร์เป็นความจริง การเขียนโปรแกรมไม่ได้
สัญกรณ์คณิตศาสตร์สำหรับปัจจัยหรือความเป็นจริง!เป็นเครื่องหมายอัศเจรีย์ เครื่องหมายอัศเจรีย์ยังเป็นสัญลักษณ์ทั่วไปสำหรับnotภาษาการเขียนโปรแกรมจำนวนมาก
ท้าทาย:
ใช้สตริงที่มีตัวเลขและตัวอักษร: + !เป็นอินพุตและเอาต์พุตต่อไปนี้:
ทุกสิ่งที่อยู่ข้างหน้าเครื่องหมายอัศเจรีย์ควรได้รับการประเมินว่าเป็นนิพจน์ทางคณิตศาสตร์ดังนั้น2+2ควรเป็น4จะ
ทุกอย่างหลังจากเครื่องหมายอัศเจรีย์ควรจะผนวกเข้ากับอุปกรณ์เสริมที่อยู่ข้างหน้ามันดังนั้น: 2+2!5ควรให้45เพราะ2+2=4และ5เป็นอุปกรณ์เสริม ควรให้2+2!5+5410
ตั้งแต่!ยังหมายถึงnotอะไรที่ไม่ได้เป็นอุปกรณ์เสริมหลังจากที่ความจริงควรจะไม่ได้ถูกผนวก ดังนั้น2+2!!5ควรให้4เนื่องจาก5ไม่ใช่อุปกรณ์เสริม ตอนนี้not(not(true))==trueจึงควรให้2+2!!!5 ควรให้: เพราะแล้วตามด้วยปัจจัยและ คนแรกไม่ใช่ความจริง แต่เป็นเครื่องหมายอัศเจรีย์อีกอันหนึ่งดังนั้นจึงเป็นเรื่องจริงอีกครั้ง452+2!!5!5+54102+2=4!5!5+555+5
ชี้แจง:
- เครื่องหมายอัศเจรีย์จะไม่ติดกับ a
+กับด้านใดด้านหนึ่ง - จะไม่นำ
+ตัวเลข (มัน5ไม่ใช่+5) !คุณอาจเลือกที่จะรวมศูนย์นำถ้าว่าเป็นผลมาจากการแสดงออกในด้านหน้าของครั้งแรก ทั้ง4และ04เป็นที่ยอมรับเอาต์พุตสำหรับอินพุต:0+0!4
บทสรุปผู้บริหาร:ประเมินผลรวมแต่ละรายการ (ถือว่า!เป็นตัวคั่น) จากนั้นทิ้งหมายเลขทั้งหมดที่ปรากฏหลังจำนวนคู่!(นับจากจุดเริ่มต้นของสตริง) จากนั้นลบทั้งหมด!แล้วเอาทั้งหมด
กรณีทดสอบ:
!
<- Empty string
5
5
12!
12
!87
87
!!5
<- Empty string
5+5!2+2
104
5+5!!2+2
10
1!2!3!4!5!6!7!8!9
12468
10+10!!2+2!!3+3!4+4
208
2!!3!5
25
2!!3!5!7
25
10!!!!!!!5
105
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์ (ในแต่ละภาษา) ชนะ! คำอธิบายได้รับการสนับสนุนอย่างยิ่ง!
25(ดูกรณีทดสอบเพิ่มเติม) ที่สำคัญกว่า2!!3!5!7นั้นยังคงให้25เพราะมีจำนวน!ด้านซ้ายของคู่7(ดังนั้นคุณไม่เพียงแค่นับการวิ่งตรงหน้าหมายเลข แต่!ด้านซ้ายทั้งหมด)
Rowหรือไม่?