ระบบที่สำคัญคือช่วยในการจำอุปกรณ์สำหรับการแปลงตัวเลขเป็นคำพูดเพื่อให้พวกเขาสามารถจดจำได้ง่ายขึ้น
มันขึ้นอยู่กับวิธีที่คำพูดออกเสียง แต่เพื่อให้สิ่งต่าง ๆ ง่ายขึ้นสำหรับความท้าทายเราจะกังวลเฉพาะกับวิธีการสะกดคำ ซึ่งหมายความว่าจะมีการแปลงที่ไม่ถูกต้อง แต่ก็ไม่เป็นไร
ในการแปลงตัวเลขเป็นคำโดยใช้ระบบหลักที่ง่ายของเรา:
- แทนที่แต่ละ
0
ด้วยหรือs
z
(บางคนอาจเป็นs
และบางคนอาจเป็นz
เหมือนกันไปด้านล่าง)- แทนที่แต่ละ
1
กับt
หรือหรือd
th
- แทนที่แต่ละกับ
2
n
- แทนที่แต่ละกับ
3
m
- แทนที่แต่ละกับ
4
r
- แทนที่แต่ละกับ
5
l
- แทนที่แต่ละ
6
กับj
หรือหรือsh
ch
- แทนที่แต่ละ
7
กับk
หรือc
หรือหรือg
q
- แทนที่แต่ละ
8
ด้วยหรือf
v
- แทนที่แต่ละ
9
ด้วยหรือp
b
- เพิ่มตัวอักษร
aehiouwxy
ใดก็ได้ในปริมาณใด ๆ ที่จะทำให้คำภาษาอังกฤษที่จริงถ้าเป็นไปได้
ยกเว้นอย่างเดียวคือว่าh
อาจจะไม่ถูกแทรกหลังหรือs
c
ตัวเลขอาจเป็นสตริงใด ๆ ของตัวเลข 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 จะไปยังการส่งที่โพสต์ก่อน