เขียนโปรแกรมหรือฟังก์ชั่นที่รับสองอินพุต:
- ข้อความตัวอักษร
- พจนานุกรมภาษาอังกฤษตามที่ปรากฏในไฟล์ Github นี้ (มีประมาณ 60000 คำ)
และส่งออกจำนวนข้อผิดพลาดการสะกดคำในข้อความ (ดูด้านล่างสำหรับคำจำกัดความและกรณีทดสอบ)
คุณสามารถรับพจนานุกรมเป็นพารามิเตอร์ในการทำงานของคุณในฐานะไฟล์ที่กำหนดไว้ล่วงหน้าซึ่งโปรแกรมของคุณคาดหวังว่าจะค้นหาเป็นข้อมูลที่กำหนดโค้ดยากในรหัสของคุณหรือในลักษณะที่เหมาะสมอื่น ๆ
รหัสของคุณควรมีลักษณะเหมือนข้อความตัวอักษรมีข้อผิดพลาดในการสะกดน้อยที่สุด ดังนั้นคุณจะคำนวณคะแนนของรหัสของคุณโดยป้อนให้ตัวเองเป็นอินพุต
ผู้ชนะคือรหัสที่มีคะแนนต่ำสุด (คะแนนที่น้อยที่สุดคือ 0) หากมีหลายคำตอบด้วยคะแนนเดียวกันผู้ชนะจะถูกตัดสินโดยขนาดรหัส (เป็นตัวอักษร) หากคำตอบทั้งสองยังคงถูกผูกไว้ผู้ชนะคือคำตอบก่อนหน้า
หากจำเป็นคุณสามารถสมมติว่าข้อความอินพุตเป็น ASCII (ไบต์ 32 ... 126) โดยมีบรรทัดใหม่เข้ารหัสในลักษณะทั่วไป (1 ไบต์ "10" หรือ 2 ไบต์ "13 10") และไม่ว่างเปล่า อย่างไรก็ตามหากรหัสของคุณมีอักขระที่ไม่ใช่ ASCII ก็ควรสนับสนุนการป้อนข้อมูลที่ไม่ใช่ ASCII (เพื่อให้สามารถคำนวณคะแนนของตัวเอง)
อักขระแบ่งออกเป็นคลาสต่อไปนี้:
- ตัวอักษร a ... z และ A ... Z
- ช่องว่าง (กำหนดที่นี่เป็นอักขระช่องว่างหรืออักขระขึ้นบรรทัดใหม่)
- วรรคตอน
.
,
;
:
!
?
- ประโยคที่สิ้นสุด
.
!
?
- ประโยคที่สิ้นสุด
- มูลฝอย (ส่วนที่เหลือทั้งหมด)
คำที่ถูกกำหนดให้เป็นลำดับของตัวอักษรซึ่งเป็นสูงสุด (เช่นค่านำหน้าหรือตามตัวอักษร)
ประโยคที่ถูกกำหนดให้เป็นลำดับสูงสุดของตัวละครที่ไม่ได้เป็นประโยคที่สิ้นสุด
อักขระเป็นข้อผิดพลาดในการสะกดคำหากมีการละเมิดกฎการสะกดคำใด ๆ :
- ตัวอักษรต้องอยู่ในคำในพจนานุกรม (หรือในคำอื่น ๆ : แต่ละคำที่มีความยาว N ที่ไม่ปรากฏในพจนานุกรมจะนับเป็นข้อผิดพลาดในการสะกดคำ N)
- อักขระตัวแรกในประโยคโดยไม่สนใจอักขระช่องว่างเริ่มต้นใด ๆ ต้องเป็นตัวอักษรตัวพิมพ์ใหญ่
- ตัวอักษรทั้งหมดจะต้องเป็นตัวพิมพ์เล็กยกเว้นตัวอักษรที่ระบุโดยกฎก่อนหน้า
- อนุญาตให้ใช้เครื่องหมายวรรคตอนเฉพาะหลังจากตัวอักษรหรือขยะ
- อนุญาตให้ใช้อักขระขึ้นบรรทัดใหม่หลังจากอักขระสิ้นสุดประโยคเท่านั้น
- ไม่อนุญาตให้ใช้อักขระช่องว่างในตอนต้นของข้อความและหลังอักขระช่องว่าง
- ไม่ควรมีขยะ (หรือในคำอื่น ๆ : การนับจำนวนอักขระแต่ละตัวเป็นข้อผิดพลาดในการสะกดคำ)
นอกจากนี้ประโยคสุดท้ายจะต้องว่างเปล่าหรือประกอบด้วยอักขระขึ้นบรรทัดใหม่หนึ่งตัว (เช่นข้อความควรลงท้ายด้วยอักขระลงท้ายประโยคและขึ้นบรรทัดใหม่ซึ่งเป็นตัวเลือก - ลองเรียกว่ากฎ 8)
กรณีทดสอบ (ด้านล่างอักขระแต่ละตัวเป็นกฎที่ละเมิดหลังจากนั้น=>
คือคำตอบที่จำเป็น):
Here is my 1st test case!!
711 4 => 4
main(){puts("Hello World!");}
2 777 883 3 77 78 => 12
This message starts with two spaces
66 8 => 3
What ? No apostrophe's??
4 71 4 => 4
Extra whitespace is BAD!
66 661111111111 66 66333 => 21
Several
lines?
Must be used only to separate sentences.
=> 1 (first linebreak is en error: rule 5)
"Come here," he said.
73 7 => 3 (sentence starts with '"', not 'C')