Viết một hàm hoặc chương trình hơn có thể thực hiện số học đơn giản (cộng, trừ, nhân và chia) trong cả cơ sở 10 và cơ sở 2.
Hàm sẽ lấy một biểu thức toán học làm đầu vào và xuất kết quả đúng trong cơ sở chính xác. Đầu vào sẽ là các n
số được phân tách bằng một hoặc một số toán tử ( + - * /
).
Nếu tất cả các giá trị đầu vào chỉ chứa 0 và 1, tất cả các giá trị được coi là nhị phân. Nếu có ít nhất một chữ số 2-9
, tất cả các giá trị được coi là cơ sở 10.
Quy tắc:
- Bạn có thể cho rằng sẽ chỉ có một toán tử giữa các số (
10*-1
sẽ không xuất hiện) - Bạn có thể cho rằng sẽ không có dấu ngoặc đơn.
- Ưu tiên toán tử bình thường (thử biểu thức trong máy tính google nếu bạn nghi ngờ).
- Bạn không thể cho rằng sẽ chỉ có số nguyên
- Sẽ không có số 0 đứng đầu trong đầu vào hoặc đầu ra
- Bạn chỉ có thể giả sử đầu vào hợp lệ sẽ được cung cấp
- Bạn có thể giả sử tất cả các giá trị đầu vào là dương (nhưng toán tử trừ có thể làm cho đầu ra âm có thể
1-2=-1
và10-100=-10
) - REPL không được chấp nhận
- Bạn có thể chọn để có những đầu vào như các đối số riêng biệt, hoặc như là một đối số duy nhất, nhưng đầu vào có phải theo đúng thứ tự.
- Tức là bạn có thể đại diện
1-2
với các đối số đầu vào1
,-
,2
, nhưng không phải1
,2
,-
.
- Tức là bạn có thể đại diện
- Bạn phải chấp nhận các ký hiệu
+ - * /
trong đầu vào, khôngplus
,minus
v.v. - Bạn phải hỗ trợ các giá trị dấu phẩy động (hoặc tối đa giới hạn tối đa của ngôn ngữ của bạn, tuy nhiên chỉ hỗ trợ các số nguyên không được chấp nhận).
eval
được chấp nhận
Ví dụ:
1+1
10
1010+10-1
1011
102+10-1
111
1+2+3
6
10*10*10
1000
11*11*11
11011
10*11*12+1
1321
10.1*10.1
110.01
20.2*20.2
408.04
10/5
2
110/10
11
Also accepted (optional line or comma-separated input):
10
+
10
-
1
11 <-- This is the output
Đây là mã golf, vì vậy mã ngắn nhất tính bằng byte sẽ giành chiến thắng.
110/10
, được11.0
chấp nhận?