ระบบที่สำคัญคือช่วยในการจำอุปกรณ์สำหรับการแปลงตัวเลขเป็นคำพูดเพื่อให้พวกเขาสามารถจดจำได้ง่ายขึ้น
มันขึ้นอยู่กับวิธีที่คำพูดออกเสียง แต่เพื่อให้สิ่งต่าง ๆ ง่ายขึ้นสำหรับความท้าทายเราจะกังวลเฉพาะกับวิธีการสะกดคำ ซึ่งหมายความว่าจะมีการแปลงที่ไม่ถูกต้อง แต่ก็ไม่เป็นไร
ในการแปลงตัวเลขเป็นคำโดยใช้ระบบหลักที่ง่ายของเรา:
- แทนที่แต่ละ
0ด้วยหรือsz(บางคนอาจเป็นsและบางคนอาจเป็นzเหมือนกันไปด้านล่าง)- แทนที่แต่ละ
1กับtหรือหรือdth- แทนที่แต่ละกับ
2n- แทนที่แต่ละกับ
3m- แทนที่แต่ละกับ
4r- แทนที่แต่ละกับ
5l- แทนที่แต่ละ
6กับjหรือหรือshch- แทนที่แต่ละ
7กับkหรือcหรือหรือgq- แทนที่แต่ละ
8ด้วยหรือfv- แทนที่แต่ละ
9ด้วยหรือpb- เพิ่มตัวอักษร
aehiouwxyใดก็ได้ในปริมาณใด ๆ ที่จะทำให้คำภาษาอังกฤษที่จริงถ้าเป็นไปได้
ยกเว้นอย่างเดียวคือว่าhอาจจะไม่ถูกแทรกหลังหรือscตัวเลขอาจเป็นสตริงใด ๆ ของตัวเลข 0-9 (ไม่มีทศนิยมหรือเครื่องหมายจุลภาคหรือเครื่องหมาย)
คำสามารถประกอบด้วยตัวอักษรตัวพิมพ์เล็ก az เท่านั้น
ตัวอย่าง
จำนวน32ต้องถูกแปลงเป็น?m?n?, ซึ่ง?แทนสตริงใด ๆ ที่ จำกัด ที่ทำจากตัวอักษรaehiouwxy(สตริงจากmonoid อิสระถ้าคุณต้องการ) : มีหลายวิธีนี้อาจจะทำให้เป็นคำภาษาอังกฤษที่แท้จริงmane, moon, yeomanฯลฯ
จำนวน05จะถูกแปลงเป็นหรือ?s?l? ?z?l?เป็นไปได้ที่บางคนมีeasily, และhassle ไม่อนุญาตให้ใช้hazelคำshawlนี้เพราะhอาจไม่ได้อยู่หลังs; 65มันจะอ่านไม่ถูกต้องเป็น
ท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้สายอักขระของตัวเลข 0-9 และค้นหาคำทั้งหมดที่สามารถแปลงเป็นโดยใช้ระบบช่วยจำที่สำคัญแบบย่อ
โปรแกรมของคุณสามารถเข้าถึงไฟล์ข้อความรายการคำศัพท์ที่กำหนดว่าคำภาษาอังกฤษที่ "แท้จริง" ทั้งหมดคืออะไร มีคำ az ตัวพิมพ์เล็กหนึ่งตัวในแต่ละบรรทัดของไฟล์นี้และคุณอาจเลือกที่จะคิดว่ามันมีบรรทัดใหม่ต่อท้าย นี่คือรายการของคำศัพท์จริงที่คุณสามารถใช้สำหรับการทดสอบ คุณสามารถสมมติว่าไฟล์รายการคำนี้เรียกว่าf(หรือบางอย่างที่ยาวกว่า) และอยู่ในไดเรกทอรีที่สะดวก
สำหรับการลงโทษ 35 ไบต์ (เพิ่ม 35 คะแนนของคุณ) คุณอาจถือว่ารายการคำศัพท์ถูกโหลดลงในตัวแปรเป็นรายการสตริงแล้ว นี่คือส่วนใหญ่สำหรับภาษาที่ไม่สามารถอ่านไฟล์ แต่การส่งใด ๆ อาจใช้ประโยชน์จากมัน
โปรแกรมของคุณจะต้องส่งออกคำทั้งหมดในรายการคำที่สามารถป้อนจำนวนการแปลงเป็น พวกเขาควรจะพิมพ์ไปยัง stdout (หรือคล้ายกัน) หนึ่งคนต่อบรรทัด (กับบรรทัดใหม่ต่อท้ายไม่จำเป็น) หรือพวกเขาสามารถกลับมาเป็นรายการของสตริงถ้าคุณเลือกที่จะเขียนฟังก์ชั่น รายการคำไม่จำเป็นต้องเรียงตามตัวอักษรและผลลัพธ์ไม่จำเป็นต้องเป็นอย่างใดอย่างหนึ่ง
หากไม่มีคำที่เป็นไปได้ผลลัพธ์ (หรือรายการ) จะว่างเปล่า เอาต์พุตยังเป็นค่าว่างหากสตริงว่างเป็นอินพุต
รับอินพุตผ่าน stdin, บรรทัดคำสั่งหรือเป็นอาร์กิวเมนต์สตริงไปยังฟังก์ชัน รายการคำหรือชื่อไฟล์ไม่ควรเป็นส่วนหนึ่งของอินพุตเพียงสตริงหลัก
คุณกำลังจับคู่คำเดียวเท่านั้นในรายการคำไม่ใช่ลำดับของคำ คำnoonอาจเป็นหนึ่งในผลลัพธ์สำหรับ22แต่ลำดับของคำno oneจะไม่
กรณีทดสอบ
สมมติว่านี่เป็นรายการคำ:
stnmrljkfp
zthnmrlshqfb
asatanamaralajakafapa
aizxydwwwnhimouooraleshhhcavabe
zdnmrlshcvb
zdnmrlshchvb
sthnmrlchgvb
shthnmrlchgvb
bob
pop
bop
bopy
boppy
ข้อมูลที่ป้อน0123456789ควรให้ทุกคำยกเว้นzdnmrlshchvbและshthnmrlchgvb:
stnmrljkfp
zthnmrlshqfb
asatanamaralajakafapa
aizxydwwwnhimouooraleshhhcavabe
zdnmrlshcvb
sthnmrlchgvb
อินพุต99ควรให้:
bob
pop
bop
bopy
(คำที่ส่งออกอาจอยู่ในลำดับใด ๆ )
เกณฑ์การให้คะแนน
การส่งที่สั้นที่สุดในหน่วยไบต์ชนะ Tiebreaker จะไปยังการส่งที่โพสต์ก่อน