คำอธิบายการท้าทาย
ที่เราเคยมีความท้าทายไม่กี่ที่เกี่ยวข้องกับการลำดับดูและการพูด การแจ้งเตือนด่วน:
- ลำดับเริ่มต้นด้วย
1
, - เงื่อนไขที่ตามมาของลำดับนี้จะถูกสร้างขึ้นโดยการแจกแจงตัวเลขแต่ละกลุ่มของตัวเลขซ้ำในระยะก่อน
ดังนั้นศัพท์สองสามข้อแรกคือ:
1 "one"
11 "one one" (we look at the previous term)
21 "two ones"
1211 "one two, one one"
111221 "one one, one two, two ones"
312211 "three ones, two twos, one one"
ตอนนี้เรามาทำสิ่งเดียวกัน แต่ใช้ตัวเลขโรมันแทน เราเริ่มต้นด้วยI
และปฏิบัติตามกฎเดียวกัน (เราใช้กฎหลักนับตัวอักษรแทนเพื่อให้เราอ่านIVX
เป็นone one, one five, one ten
แทนone four, one ten
หรือบางวิธีอื่น ๆ ):
I "one"
II "one one"
III "two ones" = "II" + "I"
IIII "three ones" = "III" + "I"
IVI "four ones" = "IV" + "I"
IIIVII "one one, one five, one one"
IIIIIVIII "three ones, one five, two ones" = ("III" + "I") + ("I" + "V") + ("II" + "I")
รับจำนวนเต็มบวกN
อย่างใดอย่างหนึ่ง:
- เอาท์พุท
N
ตัวเลขแรกของลำดับนี้ (ตัวคั่นที่เหมาะสมใด ๆ ก็ใช้ได้เช่นกัน["I", "II", "III", ...]
- คำที่เอาท์พุท
N
ของลำดับนี้ (อาจเป็นดัชนี 0)
อย่าลืมทำรหัสให้สั้นที่สุดเนื่องจากนี่เป็นความท้าทายของนักกอล์ฟ !
แก้ไข: ฉันเชื่อว่ามีวิธี / มาตรฐานที่ต้องการเสมอในการแสดงจำนวนเต็มเป็นตัวเลขโรมัน (เช่น95
-> XCV
แทนVC
) ฉันพบความคิดเห็นของฉันยืนยันทางออนไลน์ หากมีข้อสงสัยให้ใช้ตัวแปลงแบบออนไลน์เนื่องจากรายชื่อกรณีขอบที่เป็นไปได้ทั้งหมดและกฎเฉพาะของการเขียนตัวเลขโรมันไม่ใช่ประเด็นของการท้าทายนี้
EDIT2: @PeterTaylor และ @GregMartin ชี้ให้เห็นว่าตัวเลขเท่านั้นน้อยกว่าหรือเท่ากับ5
ปรากฏในลำดับดังนั้นคุณจึงไม่ต้องกังวลเกี่ยวกับความคลุมเครือของเลขโรมัน (ตัวเลข1
- 8
มีI
, II
, III
, IV
, V
, VI
, VII
และVIII
)
4
/ IV
/ IIII
? หรือ95
/ XCV
/ VC
? อาจไม่ใช่วิธีที่ไม่ซ้ำกันในการแสดงจำนวนเต็ม แต่ฉันค่อนข้างแน่ใจว่ามีเสมอ (มาตรฐาน) ที่ต้องการหนึ่ง - แก้ไขฉันถ้าฉันผิด