Ngôn ngữ trình biên dịch không có từ viết tắt có thể phát âm được, viết tắt INTERCAL , là một ngôn ngữ lập trình rất độc đáo. Trong số các phẩm chất không thể đạt được của nó là các toán tử nhị phân của nó.
Hai toán tử nhị phân của INTERCAL là xen kẽ (còn được gọi là mingle ) và chọn . Interleave được biểu diễn bằng một thay đổi (¢) và select được biểu diễn bằng một hình vuông (~).
Xen kẽ hoạt động bằng cách lấy hai số trong phạm vi 0-65535 và xen kẽ các bit của chúng. Ví dụ:
234 ¢ 4321
234 = 0000011101010
4321 = 1000011100001
Result: 01000000001111110010001001
Output: 16841865
Chọn hoạt động bằng cách lấy hai số trong phạm vi 0-65535, lấy các bit trong toán hạng đầu tiên ở cùng vị trí với 1 số trong toán hạng thứ hai và đóng gói đúng các bit đó.
2345 ~ 7245
2345 = 0100100101001
7245 = 1110001001101
Taken : 010 0 10 1
Result: 0100101
Output: 37
Trong thử thách này, bạn sẽ được cung cấp một biểu thức nhị phân bằng cách sử dụng thao tác xen kẽ hoặc chọn. Bạn phải tính toán kết quả, sử dụng ít byte nhất có thể.
Biểu thức sẽ được cung cấp dưới dạng một chuỗi phân tách không gian, bao gồm một số nguyên trong 0-65535, một khoảng trắng, ¢hoặc ~, một khoảng trắng và một số nguyên trong 0-65535.
Đầu vào và đầu ra có thể thông qua bất kỳ hệ thống tiêu chuẩn nào (STDIN, chức năng, dòng lệnh, v.v.). Sơ hở tiêu chuẩn bị cấm.
Ví dụ:
5 ¢ 6
54
5 ~ 6
2
51234 ¢ 60003
4106492941
51234 ~ 60003
422
Đây là mã golf - ít byte nhất thắng. Chúc may mắn.
EDIT: Vì một số ngôn ngữ không hỗ trợ biểu tượng thay đổi (¢) của INTERCAL, bạn có thể sử dụng biểu tượng số tiền lớn ($) thay vào đó, với hình phạt 5 byte.
$.
FIVE ONE TWO THREE FOUR? Và không nên đầu ra bằng chữ số La Mã?