โปรแกรมของคุณ:
คุณจะเขียนสองโปรแกรม (ทั้งในภาษาเดียวกัน) โปรแกรมหน่วยเก็บใช้สตริงจาก STDIN และเก็บไว้ที่ไหนสักแห่งถาวร (ดูด้านล่าง) แล้วออกโดยไม่มีข้อผิดพลาด โปรแกรมดึงข้อมูลไม่มีการป้อนข้อมูลดึงสายอักขระที่เก็บไว้และพิมพ์ลงใน STDOUT
วัตถุประสงค์ของการทดสอบความคงทน:
คุณควรจะสามารถเรียกใช้โปรแกรมจัดเก็บข้อมูลในเครื่องท้องถิ่นของคุณจากนั้นหมุนเวียนรอบเครื่องท้องถิ่นของคุณแล้วเรียกโปรแกรมเรียกคืนจากเครื่องท้องถิ่นของคุณ คุณสามารถซ่อนสตริงได้ตามต้องการ (แม้กระทั่งบนเว็บ) ตราบใดที่คุณผ่านการทดสอบการรีบูต
กรณีทดสอบ:
การจัดเก็บข้อมูลแล้วดึง:
echo foo | Store
Retrieve
foo
ร้านค้าซ้ำควรเขียนทับ (เช่นวิธี set ()):
echo foo | Store
echo bar | Store
Retrieve
bar
การเรียกคืนซ้ำแล้วซ้ำอีกเป็นวิธีที่ไม่ทำลาย (เช่นวิธี get ()):
echo foo | Store
Retrieve
foo
Retrieve
foo
ดึงข้อมูลก่อนการเรียกใช้หน่วยเก็บข้อมูลใด ๆ :
คุณไม่จำเป็นต้องกังวลเกี่ยวกับเรื่องนี้ โปรแกรมดึงข้อมูลของคุณสามารถสันนิษฐานได้ว่ามีการเรียกใช้โปรแกรมจัดเก็บข้อมูลในบางจุดในอดีต
ความยืดหยุ่นของอินพุต / เอาต์พุต
ผู้คนขอให้ฉันขยายสิ่งนี้จาก STDIN / STDOUT ที่เข้มงวดเป็นกฎ IO มาตรฐาน ฉันทำไม่ได้เพราะมันจะแนะนำช่องโหว่มากเกินไป ตัวเลือก IO มาตรฐานบางตัวมีอินพุตที่เก็บไว้ในวิธีถาวรเช่น "โปรแกรมอาจรับอินพุตจากไฟล์" ฉันต้องการที่จะมีความยืดหยุ่นมากกว่าแค่ STDIN และ STDOUT ที่เข้มงวด แต่ไม่เปิดประตูระบายน้ำ
จากเธรดกฎ IO มาตรฐานฉันเลือกสิ่งที่ไม่ทำลายความท้าทาย:
โปรแกรมอาจรับอินพุตผ่าน GUI พร้อมต์และพร้อมท์รับคำสั่งหากคุณต้องการ
โปรแกรมอาจแสดงผลโดยแสดงบนหน้าจอซึ่งรวมถึงกล่องโต้ตอบ GUI
โปรแกรมอาจส่งออกไปยัง STDERRแต่ก็ยังไม่สามารถโยนข้อผิดพลาดได้จริง
หากคุณใช้ตัวเลือกจะต้องเป็นแบบโต้ตอบกับผู้ใช้ ผู้ใช้ไม่ควรทำงานอื่นนอกเหนือจากการป้อนข้อมูลไปยังโปรแกรมของคุณการพิมพ์ลงในพรอมต์ที่โปรแกรมของคุณให้หรือพิมพ์อินพุตเป็น command-line-arg ของโปรแกรมของคุณ ผู้ใช้ไม่ควรทำสิ่งใดนอกจากการเรียกใช้โปรแกรมเรียกคืนของคุณเพื่อดูผลลัพธ์ที่แสดงบนหน้าจอหรือส่งไปยัง STDOUT หรือ STDERR
สมมติฐานที่อนุญาต:
- โปรแกรมทั้งสองของคุณจะทำงานในไดเรกทอรีเดียวกัน
- โปรแกรมของคุณมีสิทธิ์อ่าน - เขียนสำหรับไดเรกทอรีนั้น
- ไฟล์ที่คุณสร้างจะรอดชีวิตจากการรีบูต (ไม่ใช่ใน temp dir)
- ขึ้นบรรทัดใหม่หนึ่งบรรทัดที่ไม่ได้เป็นส่วนหนึ่งของสตริง ไม่มีช่องว่างต่อท้ายอื่น ๆ
นี่คือโค้ดกอล์ฟและคะแนนของคุณคือผลรวมของจำนวนไบต์จากทั้งสองโปรแกรม
Store
ไหม
echo $@>x
และcat x
ถูกต้อง?