Haskell có tính năng (trông giống) gọn gàng này, nơi bạn có thể cung cấp cho nó ba số và nó có thể suy ra một chuỗi số học từ chúng. Ví dụ, [1, 3..27]
tương đương với [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27]
.
Điều đó thật tuyệt và tất cả nhưng trình tự số học khá hạn chế. Ngoài ra, pfft . Phép nhân là nơi nó ở. Sẽ không hay hơn nếu nó thực hiện các chuỗi hình học như [1, 3..27]
quay trở lại [1, 3, 9, 27]
?
Thử thách
Viết chương trình / hàm lấy ba số nguyên dương a , b và c và xuất ra trong đó x là số nguyên lớn nhất ≤ c có thể được biểu diễn trong đó n là số nguyên dương.[a, b, b × (b ÷ a), b × (b ÷ a)2, ..., x]
b × (b ÷ a)n
Đó là, đầu ra phải là r , sao cho:
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
Thông số kỹ thuật
- Quy tắc I / O tiêu chuẩn được áp dụng .
- Sơ hở chuẩn bị cấm .
- b sẽ luôn chia hết cho a .
- a < b ≤ c
- Thách thức này không phải là tìm ra cách tiếp cận ngắn nhất trong tất cả các ngôn ngữ, mà là tìm cách tiếp cận ngắn nhất trong mỗi ngôn ngữ .
- Mã của bạn sẽ được ghi theo byte , thường là trong mã hóa UTF-8, trừ khi được quy định khác.
- Các hàm tích hợp (Mathicala có thể có một: P) tính toán chuỗi này được cho phép nhưng bao gồm một giải pháp không dựa vào tích hợp được khuyến khích.
- Giải thích, ngay cả đối với các ngôn ngữ "thực tế", được khuyến khích .
Các trường hợp thử nghiệm
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]
Trong một vài định dạng tốt hơn:
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