Sử dụng các ký hiệu toán học quen thuộc của chúng tôi: +, x, dấu ngoặc đơn và bất kỳ số hữu tỷ nào, thật dễ dàng để tạo các biểu thức ước lượng cho một số số mong muốn. Ví dụ: 1+(2x3)=7
, (1+2)+(3x6.5)=22.5
và vân vân. Chán đủ rồi.
Trong thử thách này, chúng tôi sẽ sử dụng một toán tử mới : ±
. Việc sử dụng ±
trong một biểu thức có nghĩa là bạn cần đánh giá biểu thức bằng cách thay thế ±
bằng +
hoặc -
bằng tất cả các cách có thể và trả về tập hợp tất cả các giá trị có thể. Ví dụ:
1±2±3 = {-4,0,2,6}
vì1±2±3
có thể là bất kỳ1+2+3
,1+2-3
,1-2+3
và1-2-3
và giá trị của họ là6,0,2,-4
tương ứng.(±2)x(2±3) = {-10,-2,2,10}
vì những lý do tương tự.
Bây giờ, khi nó quay ra, đưa ra bất kỳ tập hợp các số thực khác biệt, bạn có thể tạo ra một biểu thức với +
, x
, (
, )
, ±
, và số thực mà đánh giá lại các thiết lập nhất định.
Bài tập
Nhiệm vụ của bạn là viết một chương trình hoặc chức năng trong một ngôn ngữ bạn chọn, mà phải mất một chuỗi (danh sách / mảng / bất kỳ định dạng thuận tiện) của các số nguyên và kết quả đầu ra một biểu thức (như là một chuỗi) bao gồm +
, x
, (
, )
, ±
, và số hữu tỉ ước lượng cho tập hợp các số đã cho.
- Lưu ý rằng nhân vật chính xác
±
không quan trọng; bạn có thể sử dụng bất kỳ ký tự nào khác mà bạn chọn miễn là nó có thể phân biệt được với các ký tự khác bạn đang sử dụng. Nhưng bạn phải đề cập đến nhân vật bạn đang sử dụng trong trình của bạn. - Đầu vào được phép bao gồm các xấp xỉ thập phân (độ chính xác hợp lý) của các số hữu tỷ được sử dụng.
- Đầu vào và đầu ra có thể được thực hiện theo bất kỳ cách tiêu chuẩn nào.
- Sơ hở tiêu chuẩn bị cấm.
- Bạn có thể giả sử các số nguyên đã cho sẽ khác biệt và được cung cấp theo thứ tự tăng dần.
- Đầu ra có thể chứa khoảng trắng và dòng mới.
Tiêu chí chiến thắng
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte thắng.
Ví dụ
Đầu vào | Sản lượng có thể ------------- + ----------------------------- [1,2,3] | 2 ± 0,5 ± 0,5 [-7, -3,1,21] | (1 ± 2) x (3 ± 4)
Ý tưởng được lấy từ một câu hỏi trong Giải đấu Thị trấn, Mùa thu 2015 .