Có 500 tiền thưởng không chính thức để đánh bại câu trả lời tốt nhất hiện tại .
Mục tiêu
Mục tiêu của bạn là nhân hai số chỉ bằng một tập hợp rất hạn chế các phép toán số học và phép gán biến.
- Thêm vào
x,y -> x+y
- Đối ứng
x -> 1/x
( không phân chiax,y -> x/y
) - Phủ định
x -> -x
( không trừx,y -> x-y
, mặc dù bạn có thể thực hiện dưới dạng hai thao tácx + (-y)
) - Hằng số
1
(không cho phép các hằng số khác, trừ khi được tạo bởi các hoạt động từ1
) - Phân công biến
[variable] = [expression]
Chấm điểm: Các giá trị bắt đầu bằng các biến a
và b
. Mục tiêu của bạn là lưu sản phẩm của họ a*b
vào biến c
bằng cách sử dụng càng ít thao tác càng tốt. Mỗi thao tác và gán +, -, /, =
chi phí một điểm (tương đương, mỗi lần sử dụng (1), (2), (3) hoặc (4)). Hằng số 1
là miễn phí. Giải pháp ít điểm nhất sẽ thắng. Tiebreak là bài sớm nhất.
Phụ cấp: Biểu thức của bạn phải chính xác về mặt thực tế đối với các số thực "ngẫu nhiên" a
và b
. Nó có thể thất bại trong tập hợp con số 0 của R 2 , tức là một tập hợp không có diện tích nếu được vẽ trong mặt phẳng a
- b
Cartesian. (Điều này có thể cần thiết do sự đối ứng của các biểu thức có thể 0
giống như 1/a
.)
Ngữ pháp:
Đây là một golf-nguyên tử-mã . Không có hoạt động khác có thể được sử dụng. Cụ thể, điều này có nghĩa là không có hàm, điều kiện, vòng lặp hoặc kiểu dữ liệu không phải là số. Đây là một ngữ pháp cho các hoạt động được phép (khả năng được phân tách bằng |
). Một chương trình là một chuỗi các <statement>
s, trong đó a <statement>
được đưa ra như sau.
<statement>: <variable> = <expr>
<variable>: a | b | c | [string of letters of your choice]
<expr>: <arith_expr> | <variable> | <constant>
<arith_expr>: <addition_expr> | <reciprocal_expr> | <negation_expr>
<addition_expr>: <expr> + <expr>
<reciprocal_expr>: 1/(<expr>)
<negation_expr>: -<expr>
<constant>: 1
Bạn thực sự không phải đăng mã theo ngữ pháp chính xác này, miễn là nó rõ ràng những gì bạn đang làm và số lượng hoạt động của bạn là đúng. Ví dụ, bạn có thể viết a-b
cho a+(-b)
và đếm nó như hai cuộc phẫu thuật, hoặc xác định macro cho ngắn gọn.
(Có một câu hỏi trước đây Nhân mà không cần Nhân , nhưng nó cho phép một tập hợp hoạt động lỏng lẻo hơn nhiều.)