ในปี 1984 Michael Crichton เขียนโปรแกรมความปลอดภัยใน BASIC ที่ตีพิมพ์ในนิตยสาร Creative Computing โปรแกรมจะขอให้ผู้ใช้พิมพ์วลีที่ต้องการบันทึกช่วงเวลาระหว่างการกดแป้นจากนั้นขอให้เธอพิมพ์วลีอีกครั้ง หากการกำหนดเวลาแตกต่างกันมากเกินไปโปรแกรมจะระบุผู้ใช้ว่าเป็นผู้แอบอ้าง
การมอบหมายของคุณ: สร้างโปรแกรมของ Crichton ในภาษาที่คุณเลือก
กฎ:
วลีสำหรับการสื่อสารกับผู้ใช้ ("โปรดพิมพ์วลีสำคัญ" "โปรดพิมพ์วลีสำคัญอีกครั้ง" ฯลฯ ) นับเป็นหนึ่งไบต์โดยไม่คำนึงถึงความยาวจริง นี่ใช้สำหรับการสื่อสารของผู้ใช้เท่านั้นอย่าพยายามซ่อนรหัสโปรแกรมในสตริง
การทดสอบผ่าน / ไม่ผ่านควรขึ้นอยู่กับค่าสัมบูรณ์โดยเฉลี่ยของผลต่างเปอร์เซ็นต์จากช่วงเวลาเดิม หากสตริงไม่ตรงกันให้ส่งคืนข้อผิดพลาดหรืออนุญาตให้ผู้ใช้ลองอีกครั้งตามดุลยพินิจของคุณ
วลีที่สำคัญไม่ควรอนุญาตให้มีสตริงที่เป็นโมฆะ ในกรณีที่วลีสำคัญยาวเกินไปสำหรับประเภทข้อมูลสตริงของคุณให้ตัดหรือไม่อนุญาตและเริ่มต้นใหม่ตามดุลยพินิจของคุณ
ความไวของการทดสอบ (เกณฑ์สำหรับการทดสอบผ่าน / ไม่ผ่าน) ควรปรับได้ในซอร์สโค้ด
เดิมฉันได้ให้โบนัส 20% ของจำนวนไบต์ทั้งหมดหากซอร์สโค้ดของคุณสามารถจัดรูปแบบให้คล้ายไดโนเสาร์ได้ มีการชี้ให้เห็นว่านี่เป็นเรื่องส่วนตัวและอาจเหมาะสมกว่าสำหรับการประกวดความนิยมดังนั้นฉันจึงลบโบนัสนี้ออกไป อย่างไรก็ตามฉันยังคงสนับสนุนการจัดรูปแบบไดโนเสาร์อย่างเต็มที่และหากคุณจัดรูปแบบรหัสของคุณให้ดูเหมือนไดโนเสาร์คุณสามารถหักความคิดเห็นเกี่ยวกับความงามเครื่องสำอางค์ตัวละคร Linebreak หรือ Whitespace จากจำนวนไบต์ทั้งหมดของคุณได้
การนับจำนวนไบต์ที่สั้นที่สุดขึ้นอยู่กับการปรับการจัดรูปแบบความยาวสตริงและไดโนเสาร์
โปรดทราบว่าข้อกำหนดของฉันข้างต้นไม่ตรงกับการทำงานของรหัสของ Crichton สำเนาซึ่งอาจพบได้ทางออนไลน์ ทำตามสเป็คอย่าพยายามโคลนต้นฉบับ
"Please type the key phrase"นับเป็น 1 ไบต์หรือนับเฉพาะวลีและวลีที่อ้างถึงจะนับเป็น 3 ไบต์ ( "วลี") มันเป็นความตั้งใจหรือไม่ที่ช่วงเวลาที่ยาวนานกว่าและช่วงเวลาที่สั้นกว่าจะ "ยกเลิก" และกลับมาเป็นอีกครั้งได้หรือไม่? โปรแกรมต้องตรวจสอบว่าวลีสำคัญสองคำตรงกันหรือไม่