รวบรวมภาษาอังกฤษสำหรับเจ้านายของคุณ


16

เจ้านายของคุณได้เรียนรู้เมื่อเร็ว ๆ นี้ของภาษาการเขียนโปรแกรมที่น่าสนใจนี้เรียกว่าภาษาอังกฤษ เขามีความคิด "ปฏิวัติ" นี้เขาต้องการเขียนโค้ดกับคุณเพื่อเพิ่มอัตราการผลิตรหัสสองเท่า! เนื่องจากเขาไม่ใช่ผู้เชี่ยวชาญด้านเทคโนโลยีเขาจึงต้องการให้คุณเขียนคอมไพเลอร์เพื่อให้เขาสามารถใช้รหัสได้เช่นกัน!

ตอนนี้คุณเป็นโปรแกรมเมอร์ที่ขี้เกียจชั่วและเห็นได้ชัดว่าจะไม่เขียนโปรแกรมเพื่อรวบรวมภาษาที่ซับซ้อนอย่างน่าขันนี้ แต่คุณจะต้องทำให้แน่ใจว่ามีข้อผิดพลาดในรหัสของเจ้านายของคุณอยู่เสมอเพื่อให้เขาไม่เคยได้รับการคอมไพล์จริงและติดแก้ไขข้อผิดพลาดทางไวยากรณ์แทนการเข้ารหัส

ความท้าทายคือการเขียนโปรแกรมที่สามารถเรียกใช้จากเทอร์มินัลและยอมรับเส้นทางของไฟล์เป็นอาร์กิวเมนต์ โปรแกรมจะต้อง:

  1. แก้ไขอินพุตไฟล์โดยแนะนำการพิมพ์ผิด
  2. แสดงว่าการรวบรวมล้มเหลวเนื่องจากพบการพิมพ์ผิดที่คุณแนะนำ
  3. การรันโปรแกรมบนสำเนาของไฟล์เดียวกันไม่ควรพิมพ์ผิดซ้ำสองครั้งติดต่อกัน

เพื่อแสดงความท้าทายให้เรียกใช้โปรแกรมของคุณในไฟล์นี้:

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สำหรับความคิดที่ดีนี้)

นี่คือโค้ดกอล์ฟการนับจำนวนไบต์ที่สั้นที่สุดชนะ โปรดอย่าตีกอล์ฟข้อความข้อผิดพลาดเจ้านายของคุณจะไม่มีความสุขถ้าเขาไม่เข้าใจข้อความผิดพลาดและจะขอให้คุณแก้ไขให้เขา


ฉันต้องจัดการกับบรรทัดที่ไม่มีตัวอักษรหรือไม่?
1urous

คุณสามารถสร้างตัวพิมพ์ที่เป็นตัวอักษรและคุณสามารถสมมติว่าไฟล์อินพุตเป็นไฟล์ที่ไม่ว่างเปล่าที่มีอยู่
rodolphito

7
ฉันไม่ได้เป็นแฟนของการทิ้งข้อความแสดงข้อผิดพลาดถึงเรา แม้ว่าเรา "ไม่ตีกอล์ฟข้อความแสดงข้อผิดพลาด" พวกเขายังสามารถสร้างความแตกต่างของจำนวนหนึ่งไบต์อาจถึงสองโหลถ้าเราไปหาโบนัสที่สอง สามารถทำได้ค่อนข้างมาก ฉันคิดว่าสำหรับการแข่งขันกอล์ฟที่เป็นธรรมคุณควรระบุข้อความแสดงข้อผิดพลาด 5 ข้อและข้อความแสดงความผิดพลาดหรือให้เราลบความยาวของสตริงออกจากจำนวนไบต์
Martin Ender

ขอบคุณสำหรับเคล็ดลับฉันคิดว่ามีข้อความที่กำหนดไว้ล่วงหน้า แต่ฉันต้องการให้อิสระกับสิ่งนั้นมากขึ้น การย่อไบต์ข้อความนับจากคะแนนเป็นความคิดที่ดี
rodolphito

คำตอบ:


3

TI-BASIC, 77 - 34 (ข้อความผิดพลาด) = 43

ในกรณีที่เขาต้องการทำในเครื่องคิดเลข TI-83/84 ของเขา;)

เป็นมาตรฐานสำหรับฟังก์ชั่นสตริงไฟล์ควรอยู่ในAnsเพื่อให้สามารถส่งคืนและแสดงผล

Ans->Str1:If 1=inString(Ans,"A
Then:"B
Else:"A
End:Disp "ERROR ON LINE 1","'"+Ans+sub(Str1,2,-1+length(Str1))+"'"," ^ INVALID

โปรดทราบว่าโทเค็นจำนวนมากเป็นหนึ่งไบต์


ฉันจะเรียกใช้รหัสนี้ที่ไหน
rodolphito

เครื่องคิดเลข TI-83/84 หรือเครื่องจำลอง 1 เครื่อง
Timtech

inString, Ans, sub, Else, Then, End, Disp , Str1... ไม่ได้เหล่านั้นทั้งหมด 1 ไบต์สำหรับเครื่องคิดเลขหรือไม่
Ismael Miguel

4
อะไร????????????????? มันเหมือนกับว่า 8 บิตไม่ใช่ 1 ไบต์ !!!!!!!!! ถ้าฉันแสดงรหัสในแอสเซมบลีโดยใช้รูปแบบไบนารีพวกเขาจะนับไบต์เป็น 1 แมโคร 5+ ไบต์หรือไม่ นั่นมันโง่จริงๆ! (ขออภัยคำพูดที่แรง แต่มันโง่จริงๆ!) สิ่งนี้ไม่ได้แสดงถึงรหัสของคุณ ผมหมายถึงไม่ได้เป็นเช่นเดียวกับไบต์ที่แสดงโดยAns Ansสิ่งหนึ่งคือA*n*sสิ่งที่ก่อให้เกิดผลลัพธ์ใด ๆ ที่เครื่องคิดเลขต้องการอีกอันหนึ่งจะส่งกลับค่าของนิพจน์ทางคณิตศาสตร์ครั้งสุดท้าย เมื่อคำนึงถึงเรื่องนี้ฉันคิดว่าการไม่ยอมรับจำนวนจริงทำให้นี่เป็นการแสดงที่ผิดของรหัส
Ismael Miguel

5
ดูเหมือนจะไม่แก้ไขไฟล์แบบสุ่มดูเหมือนว่าจะแสดงการเปลี่ยนแปลงในบรรทัดที่ 1 เสมอและเปลี่ยนอักษรตัวแรกเป็น B ถ้าเป็น A หรือ A ถ้าไม่ใช่
rodolphito
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.