Haskellมีคุณสมบัติที่ประณีต (- มอง) ซึ่งคุณสามารถให้ตัวเลขสามตัวและสามารถอนุมานลำดับเลขคณิตจากพวกเขา ยกตัวอย่างเช่นเทียบเท่ากับ[1, 3..27]
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27]
มันยอดเยี่ยมและทั้งหมดยกเว้นลำดับเลขคณิตค่อนข้าง จำกัด นอกจากนี้pfft การคูณของมันอยู่ที่ไหน มันจะไม่เย็นถ้ามันไม่ได้ลำดับเรขาคณิตเช่น[1, 3..27]
กลับมา[1, 3, 9, 27]
?
ท้าทาย
เขียนโปรแกรม / ฟังก์ชั่นที่ใช้เวลาสามจำนวนเต็มบวก, ขและคและผลที่xเป็นจำนวนเต็มยิ่งใหญ่ที่สุด≤ คที่สามารถแสดงเป็นที่nเป็นจำนวนเต็มบวก[a, b, b × (b ÷ a), b × (b ÷ a)2, ..., x]
b × (b ÷ a)n
นั่นคือเอาต์พุตควรเป็นrเช่นนั้น:
r0 = a
r1 = b
rn = b × (b ÷ a)n-1
rlast = greatest integer ≤ c that can be represented as b × (b ÷ a)n
where n is a positive integer
ข้อมูลจำเพาะ
- กฎระเบียบมาตรฐาน I / O ใช้
- ช่องโหว่มาตรฐานจะต้องห้าม
- ขมักจะหารด้วย
- a < b ≤ c
- ความท้าทายนี้ไม่ได้เกี่ยวกับการหาวิธีการที่สั้นที่สุดในทุกภาษาค่อนข้างมันเป็นเรื่องเกี่ยวกับการหาวิธีการที่สั้นที่สุดในแต่ละภาษา
- รหัสของคุณจะได้รับคะแนนเป็นไบต์มักจะอยู่ในการเข้ารหัส UTF-8 เว้นแต่จะระบุไว้เป็นอย่างอื่น
- ฟังก์ชั่นในตัว (Mathematica อาจมีหนึ่ง: P) ที่คำนวณลำดับนี้ได้รับอนุญาตแต่รวมถึงการแก้ปัญหาที่ไม่ต้องพึ่งพาบิวด์อิน
- คำอธิบายแม้สำหรับภาษา "ปฏิบัติ" จะได้รับการสนับสนุน
กรณีทดสอบ
a b c r
1 2 11 [1, 2, 4, 8]
2 6 100 [2, 6, 18, 54]
3 12 57 [3, 12, 48]
4 20 253 [4, 20, 100]
5 25 625 [5, 25, 125, 625]
6 42 42 [6, 42]
ในรูปแบบที่ดีขึ้นไม่กี่:
1 2 11
2 6 100
3 12 57
4 20 253
5 25 625
6 42 42
1, 2, 11
2, 6, 100
3, 12, 57
4, 20, 253
5, 25, 625
6, 42, 42