แรงบันดาลใจจากความคิดเห็นนี้ ...
ขอขอบคุณผู้ใช้Step Hen , Wheat-WizardและDennis ที่ช่วยฉันสร้างความแข็งแกร่งให้กับสเปคของความท้าทายนี้ก่อนโพสต์มัน!
นี่คือเธรดของ Robber! สำหรับด้ายของตำรวจไปที่นี่
ในความท้าทายนี้คุณจะได้รับมอบหมายให้ใช้งานโค้ดบางอย่างเพื่อให้ภาษาของคุณไม่เป็นไปตามเกณฑ์การเป็นภาษาการเขียนโปรแกรมอีกต่อไป ในการท้าทายนั้นหมายถึงการทำให้ภาษาไม่สามารถ ...
รับอินพุตและเอาต์พุตตัวเลข
เพิ่มตัวเลขสองตัวเข้าด้วยกัน
ทดสอบว่าจำนวนหนึ่งเป็นจำนวนเฉพาะหรือไม่
นี่เป็นความท้าทายของตำรวจและโจรที่มีความท้าทายสองประการที่แตกต่างกันโดยมีวัตถุประสงค์ที่แตกต่างกันสองประการ: ตำรวจจะพยายามเขียนโค้ดบางอย่างที่ทำให้ภาษาใช้งานไม่ได้เป็นส่วนใหญ่และโจรจะพยายามหาวิธีแก้ปัญหาที่ซ่อนอยู่ เพื่อกู้คืนภาษาของพวกเขา
ตำรวจจะเขียนโค้ดสองชุด:
ภาษาที่ทำให้ภาษาส่วนใหญ่ใช้ไม่ได้เช่นลบฟังก์ชั่นในตัวเพื่อรับอินพุต / เอาต์พุตและการดำเนินการเชิงตัวเลข รหัสนี้ไม่ได้รับอนุญาตให้ผิดพลาดหรือออก มันควรจะเป็นไปได้ที่จะเพิ่มรหัสการสิ้นสุดของข้อมูลโค้ดนี้และรหัสที่จะได้รับการประเมิน และ
ตัวอย่างของรหัสที่ใช้ตัวเลขสองตัวเป็นอินพุตเพิ่มเข้าด้วยกันและส่งออกผลรวมของพวกเขา ตัวอย่างนี้จะต้องทำงานอย่างถูกต้องแม้หลังจากเรียกใช้ข้อมูลโค้ดแรกแล้ว เมื่อรวมข้อมูลโค้ดสองรายการเข้าด้วยกันพวกเขาจะต้องสร้างโปรแกรมเต็มรูปแบบที่เพิ่มตัวเลขสองตัวหรือกำหนดฟังก์ชั่นที่เพิ่มตัวเลขสองตัว ตัวอย่างนี้อาจขึ้นอยู่กับพฤติกรรมที่คลุมเครือและหายาก
ตำรวจก็จะเลือกการใดวิธีการมาตรฐานของอินพุตและเอาต์พุต อย่างไรก็ตามพวกเขาจะต้องเปิดเผยว่ารูปแบบใด (อินพุตและเอาต์พุต) ที่ใช้ เพื่อให้คุณแคร็กคำตอบคุณต้องทำตามรูปแบบอินพุต / เอาท์พุตเดียวกันมิฉะนั้นการแตกของคุณจะไม่นับ
ตำรวจตอบเสมอจะเปิดเผย
แรกข้อมูลโค้ด (ไม่ชัดที่สอง)
ภาษา (รวมถึงรุ่นรองเนื่องจากการส่งส่วนใหญ่อาจขึ้นอยู่กับกรณีขอบแปลก ๆ )
รูปแบบ IO รวมถึงไม่ว่าจะเป็นฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ โจรต้องใช้รูปแบบเดียวกันเพื่อเป็นรอยแตกที่ถูกต้อง
กรณีขอบแปลก ๆ ที่จำเป็นสำหรับคำตอบในการทำงานของพวกเขา ยกตัวอย่างเช่นทำงานบนลินุกซ์หรือต้องเชื่อมต่ออินเทอร์เน็ต
ในฐานะโจรคุณต้องดูหนึ่งในการส่งของตำรวจและพยายามที่จะถอดรหัส คุณสามารถถอดรหัสโดยการเขียนตัวอย่างที่ถูกต้องใด ๆที่สามารถทำงานเป็นตัวอย่าง 2 (เพิ่มตัวเลขสองตัวด้วยกันหลังจากที่ภาษาส่วนใหญ่ใช้ไม่ได้) สิ่งนี้ไม่จำเป็นต้องเป็นข้อมูลโค้ดเดียวกับที่ตำรวจเขียน เมื่อคุณมีคำตอบที่แตกให้โพสต์รหัสของคุณเป็นคำตอบในกระทู้นี้และโพสต์ลิงก์ไปยังคำตอบของคุณเป็นความคิดเห็นในคำตอบของตำรวจ จากนั้นโพสต์นั้นจะถูกแก้ไขเพื่อระบุว่ามีการแตก
นี่คือตัวอย่าง สำหรับตัวอย่างแรกคุณอาจเห็นโปรแกรม python 3 ต่อไปนี้เป็นคำตอบของตำรวจ:
Python 3
print=None
รับอินพุตจาก STDIN และเอาต์พุตไปยัง STDOUT
ตัวอย่างที่สองที่ถูกต้องอาจเป็นได้
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)
สิ่งนี้ถูกต้องเพราะมันจะใช้ตัวเลขสองตัวเป็นอินพุทและเอาท์พุทผลรวมของพวกมันแม้ว่าคุณจะรวมตัวอย่างสองอันเข้าด้วยกันเช่น
print=None
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)
นี่เป็นการถอดรหัสที่ถูกต้องสำหรับคำตอบของพวกเขา
หากคำตอบของตำรวจยังไม่ได้ถูกถอดออกเป็นเวลาหนึ่งสัปดาห์พวกเขาอาจแก้ไขในตัวอย่างที่สองและระบุว่าคำตอบของพวกเขานั้นปลอดภัยแล้ว เมื่อแก้ไขแล้วให้ปลอดภัยคุณจะไม่พยายามถอดรหัสอีกต่อไป หากพวกเขาไม่แก้ไขมันอย่างปลอดภัยคุณอาจพยายามที่จะแตกมันจนกว่าพวกเขาจะทำ
ผู้ชนะของเธรดของ robber คือผู้ใช้ที่ถอดรหัสคำตอบได้มากที่สุดโดย tie-breaker เป็นเวลาที่พวกเขามาถึงรอยแตกN (ดังนั้นหากผู้ใช้สองคนที่แตกต่างกันแต่ละคนมี 5 รอยแตกตัวอย่างเช่นผู้ใช้ที่โพสต์ครั้งที่ 5 ของพวกเขาเป็นผู้ชนะ) หลังจากเวลาผ่านไปพอสมควรแล้วฉันจะยอมรับคำตอบของผู้ชนะด้วยคะแนนมากที่สุด
มีความสุข!
การชี้แจงกฎ
ข้อมูลครั้งแรกจะต้องทำงานอย่างถูกต้องโดยไม่ต้องสละป้อนข้อมูลใด ๆ มันอาจเอาท์พุทสิ่งที่คุณชอบและผลลัพธ์นี้จะถูกละเว้น หากข้อมูลโค้ดเสร็จสิ้นแล้วข้อมูลโค้ดที่สองจะทำงานอย่างถูกต้อง
ตัวอย่างที่สองจะต้องดำเนินการจริงเพื่อให้คำตอบของคุณถูกต้อง นี่หมายถึงคำตอบที่ชอบ
import sys sys.exit()
ไม่ถูกต้องเพราะมันไม่ทำลายภาษา มันหยุดทำงาน
หลังจากเป็นที่ปลอดภัยคะแนนของคุณคือการนับไบต์ทั้งเกร็ดเล็กเกร็ดน้อย
นี้ไปกลับไปกรุณาเปิดเผยกรณีขอบแปลก ๆ ที่จำเป็นสำหรับคำตอบของคุณในการทำงาน ... การส่งของคุณจะต้องมีข้อมูลเพียงพอก่อนที่จะถูกเปิดเผยที่จะทำซ้ำหลังจากที่ถูกเปิดเผย ซึ่งหมายความว่าหากคำตอบของคุณปลอดภัยแล้วคุณแก้ไขใน: นี่คือคำตอบของฉัน อ๊ะ BTW ใช้งานได้ก็ต่อเมื่อคุณใช้งานบน Solaris แล้วล้อเล่นกับคุณ! คำตอบของคุณไม่ถูกต้องและจะถูกลบและไม่ถือว่ามีสิทธิ์ได้รับรางวัล
ตัวอย่างที่สองได้รับอนุญาตให้ผิดพลาดหลังจากแสดงผลรวม ตราบใดที่เอาต์พุตยังคงถูกต้อง (ตัวอย่างเช่นหากคุณเลือกที่จะส่งออกไปยัง STDERR และจากนั้นคุณจะได้รับข้อมูลความเสียหายจำนวนมากสิ่งนี้ไม่ถูกต้อง)
ลีดเดอร์บอร์ด
นี่คือรายการของผู้ใช้ทุกคนที่มีรอยแตกอย่างน้อยหนึ่งครั้งเรียงตามคะแนนแล้วชื่อ (เรียงตามตัวอักษร) หากคุณส่งรอยแตกโปรดอัปเดตคะแนนของคุณ
#User #Score
Ilmari Karonen 8
Dennis 5
Olivier Grégoire 4
Sisyphus 3
Veedrac 3
Arnold Palmer 2
Bruce Forte 2
DJMcMayhem 2
Dom Hastings 2
ppperry 2
1bluston 1
2012rcampion 1
Ben 1
BlackCap 1
Christian Sievers 1
Cody Gray 1
HyperNeutrino 1
Joshua 1
Kaz 1
Mark 1
Mayube 1
Xnor 1
zbw 1
SecurityManager
ที่อยู่ในขอบเขต ... คุณสามารถอ่านได้จากSystem.in
จุดนี้แม้ว่าจะยังไม่ปิด