Đôi khi nó rất hữu ích để chạy một bài toán với nhiều đầu vào. Mục tiêu của thử thách này là tạo ra một chương trình giúp giảm bớt nhiệm vụ này.
Biểu thức tạo số
Bạn phải hỗ trợ 3 loại biểu thức:
- Trình tạo số đơn: Rất đơn giản, chỉ là một số bằng chữ
- Trình tạo nhiều số: Một chút phức tạp hơn. Thees được bao quanh bởi dấu ngoặc vuông (
[]
). Các số được,
phân tách bằng dấu phẩy ( ) trong biểu thức. Ví dụ[-1,2,3.26]
. - Trình tạo phạm vi: Cái này được bao quanh bởi dấu ngoặc nhọn (
{}
). Nó sẽ có 3 số cách nhau bởi một dấu phẩy. Định dạng của biểu thức này là{start,stop,step}
.start
và đãstop
bao gồm.
Quy tắc đánh giá
- Bạn phải hỗ trợ thứ tự các hoạt động. ( https://en.wikipedia.org/wiki/Order_of_operations#DefDef )
- Bạn không cần phải hỗ trợ dấu ngoặc đơn.
- Bất kỳ số lượng không gian có thể xảy ra trong biểu thức.
- Bạn phải hỗ trợ các số dấu phẩy động (bất kỳ độ chính xác nào mà ngôn ngữ của bạn mặc định là tốt).
- Chia theo
0
kết quả trongNaN
(không phải là một số).
Chương trình của bạn phải hỗ trợ phép nhân ( *
), phép chia ( /
), phép cộng ( +
) và phép trừ ( -
).
Đầu ra
Mỗi dòng đầu ra là một trong những kết hợp của các máy phát. Định dạng là biểu thức (với các số thực được thay thế vào nó) theo sau là dấu bằng ( =
) và kết quả đánh giá. Tất cả các kết hợp của các máy phát phải được đại diện trong đầu ra.
Ví dụ
( >>>
biểu thị đầu vào)
>>>3 * [3,2]
3 * 3 = 9
3 * 2 = 6
>>>{1,2,3}
1 = 1 <-- this is because 1 + 3 > the end
>>>{0,2,1} + {0,1,1}
0 + 0 = 0
1 + 0 = 1
2 + 0 = 2
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3
>>>6/[2,3]
6/2 = 3
6/3 = 2
>>>{1.5,2.5,0.5}
1.5 = 1.5
2 = 2
2.5 = 2.5
>>>3-{6,5,-1}
3-6 = -3
3-5 = -2
>>>5/{-1,1,1}
5/-1 = -5
5/0 = NaN
5/1 = 5
>>>4.4 / [1,2.2] + {0,2,1}
4.4 / 1 + 0 = 4.4
4.4 / 1 + 1 = 5.4
4.4 / 1 + 2 = 6.4
4.4 / 2.2 + 0 = 2
4.4 / 2.2 + 1 = 3
4.4 / 2.2 + 2 = 4
>>> [1,2] / 0 + 5
1 / 0 + 5 = NaN
2 / 0 + 5 = NaN
Chương trình cần phải ngắn để tôi có thể ghi nhớ và sử dụng nó ở bất cứ đâu.
Cảm ơn @PeterTaylor và @geokavel đã giúp tôi với bài đăng này trong hộp cát
x/0
kết quả là đánh giá ngay lập tức với NaN, hay tôi phải coi NaN là một giá trị?