บทนำ:
เช่น Twitter และ Instagram และอื่น ๆ ผมอยากจะแสดงผลตัวเลขเหมือน1.2Kและ3.8 Mแทนหรือ1,2223,823,456
แต่นั่นไม่ใช่ทั้งหมด! อย่างที่เราทุกคนรู้ว่าอาจมีมนุษย์บางคนที่ไม่ชอบตัวย่อเหล่านี้อย่างแน่นอนและจะพยายามที่จะกลับพวกเขา ดังนั้น1.2kจะกลายเป็น1,200และจะกลายเป็น3.8 M3,800,000
งาน:
- งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่แปลงรายการของตัวเลข ( ซึ่งได้รับเป็นสตริง ) เป็นคู่ตัวย่อและในทางกลับกัน
ตัวอย่างเช่นหากรายการอินพุต (หรือใด ๆSTDIN) เป็น['1.4k', '1,234,567', '7.99M']เช่นนั้นคุณควรส่งออก:
['1,400', '1.2M', '7,990,000']
คุณสามารถทำตามสคีมาต่อไปสำหรับตัวย่อ:
- 10 3 -> หนึ่งกิโลกรัม -> K
- 10 6 -> หนึ่งล้าน -> M
- 10 9 -> หนึ่งพันล้าน -> B
รหัสของคุณอาจถือว่าเป็นตัวพิมพ์เล็กทั้งหมดตัวพิมพ์ใหญ่ทั้งหมดตัวพิมพ์ผสมหรือตัวพิมพ์เล็กที่ไม่ได้กำหนดสำหรับการป้อนข้อมูลและใช้สิ่งเหล่านี้เพื่อการส่งออก แต่ควรสอดคล้องกัน
กฎและข้อ จำกัด :
- คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน
STDIN(หรือทางเลือกที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชันและแสดงผลลัพธ์ผ่านทางSTDOUT(หรือทางเลือกที่ใกล้เคียงที่สุด), ค่าส่งคืนของฟังก์ชันหรือฟังก์ชัน (ออก) - อินพุตอาจอยู่ในรายการหรือรูปแบบสตริงที่สะดวก คุณอาจสันนิษฐานว่ารายการนั้นน้อยกว่าแต่ละรายการและรายการนั้นมีองค์ประกอบอย่างน้อยหนึ่งรายการ
ai231 - แต่ละตัวย่อจะมีเพียงหนึ่งตัว
.ในขณะที่หมายเลขปกติจะมีจำนวนมาก,ที่สุดเท่าที่จำเป็น (คุณอาจคิดว่าตัวเลขนี้จะไม่ถูกเปลี่ยนแปลง) - คุณอาจไม่ได้ป้อนหมายเลข
'123456'แต่ต้องการ123,456 - ใช้กฎมาตรฐานของกอล์ฟ
กรณีทดสอบ:
Input: ['1.5M', '77.6k', '123,456,789'] Output: ['1,500,000', '77,600', '123.4M']
Input: ['3,000,000,000', '581k', '2b'] Output: ['3B', '581,000', '2,000,000,000']
Input: ['0.1k'] Output: ['100']
Input: ['888', '33'] Output: ['0.888k', '0.033k']
ชี้แจง:
- สำหรับตัวเลข <1,000 หลังจุดทศนิยมในเอาต์พุตตัวย่อคุณควรมีตัวเลขให้มากที่สุดเท่าที่จำเป็นเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง (เช่น:
2-> จะกลายเป็น0.002k) - ที่หมายถึงทศนิยม 3 ตำแหน่งที่มากที่สุด ; สำหรับตัวเลข> 1,000 คุณสามารถมีทศนิยมได้สูงสุด 1ตัว - ตัวย่ออาจเป็นทั้งตัวเล็กและตัวใหญ่
- ฉันลบข้อ จำกัด ในตัวตามที่แนะนำในความคิดเห็น
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ!
'123,456,789' -> '123.4M'? นอกจากนี้ยังไม่ได้อธิบายถึงจำนวนทศนิยมที่ใช้ อะไรก็ตามที่อยู่ภายใต้ 1,000 นั้นไม่ควรที่จะย่อตัว
["k", "M", "G"]และผู้ที่จะเป็น "ในขณะที่หมายเลขปกติจะมีจำนวนมากเท่าที่จำเป็น " หมายถึงในประเทศของฉันมันจะเป็นความผิดพลาดที่จะใช้ใด ๆ