Giới thiệu
Bốn toán tử toán học cơ bản (+, -, *, /) có thể được giảm xuống chỉ còn hai, do thực tế là:
x + y = x - (-y)
x * y = x / (1/y), y != 0
x * 0 = 0/x
Thử thách
Thách thức là lấy đầu vào dưới dạng "chuỗi" chứa:
- Số
- Các biến ký tự đơn ("x", "y")
- Bốn toán tử toán học cơ bản (+, -, *, /)
- Dấu ngoặc
và đưa ra một chuỗi được thao tác để nó tạo ra kết quả toán học giống như đầu vào, nhưng chỉ chứa các ký hiệu toán học '-' và '/'
Cụ thể
- Đầu vào có thể ở bất kỳ dạng nào được chấp nhận (tệp, STDIN, v.v.) và có thể được biểu diễn dưới dạng một chuỗi hoặc chuỗi ký tự (nhưng không phải là một mảng của mảng)
- Đầu ra có thể ở bất kỳ dạng nào được chấp nhận (tệp, STDIN, v.v.) và có thể được biểu diễn dưới dạng một chuỗi hoặc chuỗi ký tự (nhưng không phải là một mảng của mảng)
- Bạn phải nhận ra và duy trì dấu ngoặc đơn cân bằng
- Các sơ hở tiêu chuẩn không được phép
- Đó là lựa chọn của bạn nếu bạn muốn đại diện
x + y
nhưx - -y
hoặcx - (-y)
- Bạn phải duy trì thứ tự hoạt động
- Bạn không bao giờ phải xử lý đầu vào không hợp lệ
- Đầu vào có thể trống hoặc một số / biến đơn, trong trường hợp đó, chương trình sẽ xuất đầu vào
- Lưu ý: Bạn không phải sử dụng các thay thế trong phần giới thiệu, miễn là
input = output
chương trình của bạn có thể thay đổi2 * 2
thành8/2
, nếu bạn muốn - Bạn có thể giả sử rằng "0" là cách duy nhất số 0 xuất hiện trong phương trình (Tức là bạn không phải xử lý
1 * (4 - 4)
) - Gợi ý: để kiểm tra chương trình của bạn, hãy đến trang web này gõ vào
input = output
, nơi đầu vào là đầu vào, và đầu ra là sản phẩm, và nếu kết quả là "true" chương trình của bạn xử lý trường hợp đó thành công ( ví dụ , ví dụ )
Các trường hợp thử nghiệm
Dưới đây là một số trường hợp thử nghiệm, đầu vào dưới dạng một chuỗi và đầu ra dưới dạng một chuỗi.
x + y
x - (-y)
x * y
x / (1/y)
x / y
x / y
x - y
x - y
1
1
5
5
-6
-6
+x
x
1 + (x * 4) - (512 * 3)
1 - (-(x / (1/4))) - (512 / (1/3))
1 - 3 / 4 + l / g
1 - 3/4 - (-(l / g))
5 * 0 / 2
0/5 / 2
(a + g) * 0
0/(a - (-g))
Chấm điểm
Đó là môn đánh gôn , vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng. Ties được giải quyết bằng bài đầu tiên.
y=0
, nhưng tôi đoán thử thách này mặc nhiên thừa nhận điều đó n/d => d != 0
.
v
trở thành một giải pháp thích hợp trong Pyth.
5 * (a - b)
nếu a = b. Và chúng ta có phải phát hiện những thứ như thế 5 * (a - a)
nào? Làm thế nào về 5 * (4 - 4)
và 5 * (a / a - 1)
hay 5 * (4 / 4 - 1)
?
x / 1/y
=x/y
vì phân chia không liên kết. Tôi biết bạn đang nghĩ gì, nhưng ngay cả WolframAlpha cũng không nhận ra rằng bạn muốn không gian thay đổi thứ tự hoạt động .... vì vậy bạn có thể nên suy nghĩ lại về điều này hoặc không trích dẫn đó là một cách hợp lệ để kiểm tra mọi thứ.