Monday Mini-Golf:ชุดของความท้าทายรหัสสั้น ๆกอล์ฟโพสต์ (หวังว่า!) ทุกวันจันทร์
ขอโทษที่มาสาย ฉันตระหนักถึง 90% ของวิธีการผ่านการเขียนความคิดที่แตกต่างออกไปว่ามันซ้ำซ้อน
ครอบครัวของฉันค่อนข้างใหญ่ดังนั้นเราจึงกินอาหารมากมาย เรามักจะต้องทำสองเท่าสามเท่าหรือสี่เท่าเพื่อทำอาหารให้พอ! แต่การทวีคูณการวัดอาจเป็นความเจ็บปวดมันคงจะดีถ้ามีโปรแกรมที่ทำสิ่งนี้ให้เรา
ท้าทาย
ความท้าทายของคุณคือการสร้างโปรแกรมหรือฟังก์ชั่นที่ใช้วัดเป็นตัวเลขNและตัวอักษรLและคืนค่าการวัดเดียวกันให้ง่ายขึ้นมากที่สุด นี่คือหน่วยการวัดที่จำเป็น (ทั้งหมดเป็นแบบอเมริกันเช่นครอบครัวของฉัน) และตัวอักษรที่เกี่ยวข้อง:
1 cup (c) = 16 tablespoons (T) = 48 teaspoons (t)
1 pound (l) = 16 ounces (o)
1 gallon (g) = 4 quarts (q) = 8 pints (p) = 128 fluid ounces (f)
"ง่ายที่สุดเท่าที่จะทำได้" หมายถึง:
- ใช้หน่วยการวัดที่ใหญ่ที่สุดเท่าที่จะเป็นไปได้ แต่ละหน่วยสามารถมีส่วนที่เหลือ 1/4, 1/3, 1/2, 2/3 หรือ 3/4
- เปลี่ยนผลลัพธ์เป็นตัวเลขผสมหากจำเป็น
ตัวอย่างเช่น4 o
สี่ออนซ์ซึ่งจะกลายเป็น1/4 l
หนึ่งในสี่ปอนด์ 8 t
8 2 2/3 T
ช้อนชากลายเป็น
รายละเอียด
- อินพุตอาจถูกนำไปใช้ในรูปแบบที่สมเหตุสมผล เช่นเดียวกันกับการส่งออก (
1 t
,1,"t"
,1\nt
ฯลฯ ) - ตรวจสอบให้แน่ใจว่าได้จัดการส่วนที่เป็นเศษส่วนอย่างเหมาะสม ( ไม่อนุญาตให้
11/4
แทนที่1 1/4
) - จำนวนมักจะมีจำนวนผสมและมักจะมีตัวหารของ
2
,3
หรือ4
(หรือไม่มี) (ไม่1 1/8 T
ไม่1.5 T
ฯลฯ ) - จากผลข้างต้นจึงไม่จำเป็นต้องมีการแปลง (เช่นถ้วยเป็นช้อนโต๊ะ)
- จดหมายจะเป็นตัวอักษรตัวใดตัวหนึ่งที่มีรายชื่ออยู่ด้านบน (
Tcfglopqt
)
การทดสอบกรณี
นี่คือรายการขนาดใหญ่หวังว่าจะครอบคลุมทุกกรณี
Input | Output
--------+--------
1/2 t | 1/2 t
3/4 t | 1/4 T
1 t | 1/3 T
1 1/2 t | 1/2 T
2 t | 2/3 T
2 1/4 t | 3/4 T
2 1/2 t | 2 1/2 t
3 t | 1 T
10 t | 3 1/3 T
16 t | 1/3 c
5 1/3 T | 1/3 c
8 T | 1/2 c
16 T | 1 c
36 T | 2 1/4 c
1/4 c | 1/4 c
1024 c | 1024 c
1 o | 1 o
4 o | 1/4 l
5 1/3 o | 1/3 l
5 2/3 o | 5 2/3 o
8 o | 1/2 l
28 o | 1 3/4 l
28 l | 28 l
2 f | 2 f
4 f | 1/4 p
8 f | 1/4 q
16 f | 1/2 q
32 f | 1/4 g
64 f | 1/2 g
128 f | 1 g
2/3 p | 1/3 q
1 1/3 p | 2/3 q
2 p | 1/4 g
1 q | 1/4 g
เกณฑ์การให้คะแนน
ห้องครัวของเรามีขนาดเล็กมากดังนั้นรหัสควรสั้นที่สุดเท่าที่จะเป็นไปได้เพื่อไม่ให้ครัวแคบขึ้น รหัสที่ถูกต้องสั้นที่สุดในไบต์ชนะ; tiebreaker ไปที่การส่งที่ถึงจำนวนไบต์สุดท้ายก่อน ผู้ชนะจะได้รับการคัดเลือกในวันจันทร์ที่ 9 พ.ย. โชคดี!
โปรดทราบว่าสิ่งที่ท้าทายนี้จะคล้ายกับ แต่ไม่ซ้ำกันของโลกบิ๊ก Dosa