เจ้านายของคุณได้เรียนรู้เมื่อเร็ว ๆ นี้ของภาษาการเขียนโปรแกรมที่น่าสนใจนี้เรียกว่าภาษาอังกฤษ เขามีความคิด "ปฏิวัติ" นี้เขาต้องการเขียนโค้ดกับคุณเพื่อเพิ่มอัตราการผลิตรหัสสองเท่า! เนื่องจากเขาไม่ใช่ผู้เชี่ยวชาญด้านเทคโนโลยีเขาจึงต้องการให้คุณเขียนคอมไพเลอร์เพื่อให้เขาสามารถใช้รหัสได้เช่นกัน!
ตอนนี้คุณเป็นโปรแกรมเมอร์ที่ขี้เกียจชั่วและเห็นได้ชัดว่าจะไม่เขียนโปรแกรมเพื่อรวบรวมภาษาที่ซับซ้อนอย่างน่าขันนี้ แต่คุณจะต้องทำให้แน่ใจว่ามีข้อผิดพลาดในรหัสของเจ้านายของคุณอยู่เสมอเพื่อให้เขาไม่เคยได้รับการคอมไพล์จริงและติดแก้ไขข้อผิดพลาดทางไวยากรณ์แทนการเข้ารหัส
ความท้าทายคือการเขียนโปรแกรมที่สามารถเรียกใช้จากเทอร์มินัลและยอมรับเส้นทางของไฟล์เป็นอาร์กิวเมนต์ โปรแกรมจะต้อง:
- แก้ไขอินพุตไฟล์โดยแนะนำการพิมพ์ผิด
- แสดงว่าการรวบรวมล้มเหลวเนื่องจากพบการพิมพ์ผิดที่คุณแนะนำ
- การรันโปรแกรมบนสำเนาของไฟล์เดียวกันไม่ควรพิมพ์ผิดซ้ำสองครั้งติดต่อกัน
เพื่อแสดงความท้าทายให้เรียกใช้โปรแกรมของคุณในไฟล์นี้:
Take an array as input.
Sort the array.
Output the array.
ควรเอาท์พุทบางอย่างตามแนวของ
Error on line 1:
'Take an arqay as input.'
^
arqay is not a valid identifier.
และไฟล์ที่คุณบอกให้โปรแกรมคอมไพล์ตอนนี้ควรมีลักษณะดังนี้:
Take an arqay as input.
Sort the array.
Output the array.
นี่คือรายละเอียดเพิ่มเติมเกี่ยวกับรายละเอียดของโปรแกรม:
โปรแกรมของคุณได้รับอนุญาตให้สมมติว่าการสลับอักขระใด ๆ ในโปรแกรมที่เจ้านายของคุณป้อนสำหรับอักขระสุ่มที่แตกต่างกันจะทำให้เกิดข้อผิดพลาดทางไวยากรณ์ โปรแกรมของคุณไม่ควรใช้ตัวอักษรที่ไม่ใช่ตัวอักษรเพื่อสร้างข้อผิดพลาดในรหัสผู้บังคับบัญชาของคุณ เจ้านายของคุณจะไม่ใช้ตัวเลขหรือสัญลักษณ์และเขาจะพบว่ามีบางอย่างกำลังทำงาน โปรแกรมของคุณควรแนะนำข้อผิดพลาดกับคำในโปรแกรมของเจ้านายของคุณเท่านั้น อย่าเปลี่ยนช่องว่างในประโยคหรือเครื่องหมายวรรคตอน โปรแกรมของคุณไม่ควรแก้ไขกรณีของโปรแกรมที่เจ้านายของคุณพยายามรวบรวมความหมายข้อผิดพลาดเช่นarQayไม่ถูกต้อง ข้อผิดพลาดนี้ป้องกันชอบtakeแทนที่จะTakeเกิดขึ้นหรือแทนArray arrayโปรแกรมของคุณควรแสดงข้อผิดพลาดโดยระบุว่าข้อผิดพลาดอยู่ที่บรรทัดใด:
Error on line <insert line number here>:
จากนั้นควรพิมพ์บรรทัดที่มีข้อผิดพลาดภายใน'สัญลักษณ์ ในบรรทัดถัดไปควรวาง^สัญลักษณ์ภายใต้คำที่มีข้อผิดพลาดและในที่สุดก็ควรมีข้อความอธิบายข้อผิดพลาด (ส่วนนี้ขึ้นอยู่กับคุณคุณสามารถพูดสิ่งที่คุณต้องการตราบเท่าที่มันอธิบายถึงข้อผิดพลาด)
คุณสามารถสันนิษฐานได้ว่ามีไฟล์อินพุตอยู่และไฟล์นั้นไม่ว่างเปล่า คุณยังสามารถสมมติว่าไฟล์อินพุตไม่มีข้อผิดพลาดทางไวยากรณ์ก่อนที่คุณจะเพิ่ม
โบนัส:
-60 ไบต์หากมีข้อแนะนำรหัสของคุณไม่ได้เป็นแบบสุ่มสมบูรณ์ แต่พิมพ์ผิดตามในขณะนี้คำถาม
-60 ไบต์สำหรับข้อความแสดงข้อผิดพลาดอย่างน้อย 5 ข้อความสลับกันแบบสุ่ม
-60 ไบต์หากโปรแกรมของคุณมีโอกาส 1 ใน 100 หรือน้อยกว่าในการส่งข้อความ demotivational ไปยังเจ้านายของคุณ
แก้ไข: การนับจำนวนข้อความไม่นับรวมกับคะแนนของคุณ (ขอบคุณ Martin Büttnerสำหรับความคิดที่ดีนี้)
นี่คือโค้ดกอล์ฟการนับจำนวนไบต์ที่สั้นที่สุดชนะ โปรดอย่าตีกอล์ฟข้อความข้อผิดพลาดเจ้านายของคุณจะไม่มีความสุขถ้าเขาไม่เข้าใจข้อความผิดพลาดและจะขอให้คุณแก้ไขให้เขา