Tôi thích chơi gôn dc
, nhưng đôi khi tôi cảm thấy thất vọng vì dc
không có hoạt động bitwise.
Thử thách
Cung cấp bốn chức năng đặt tên đó thực hiện tương đương với các hoạt động c Bitwise &
, |
, ~
và ^
(bitwise AND, OR, NOT và XOR). Mỗi hàm sẽ lấy hai toán hạng ( ~
chỉ mất một) là các số nguyên không dấu 32 bit. Mỗi hàm sẽ trả về một số nguyên không dấu có cùng độ rộng bit như các toán hạng.
Sự hạn chế
Bạn chỉ có thể sử dụng các hoạt động được hỗ trợ bởi dc
. Đó là:
+
-
*
/
Cộng, trừ, nhân và chia số học~
modulo (hoặc divmod nếu ngôn ngữ của bạn hỗ trợ)^
lũy thừa|
mô đun lũy thừav
căn bậc hai>
>=
==
!=
<=
<
toán tử đẳng thức / bất đẳng thức chuẩn>>
<<
toán tử dịch chuyển bit.dc
không có những thứ này, nhưng vì chúng được thực hiện một cách tầm thường về mặt phân chia / nhân với quyền hạn của 2, nên tôi sẽ cho phép những thứ này.
Các cấu trúc điều khiển trong dc
tôi được xây dựng một cách vụng về bằng cách sử dụng các macro (đệ quy) và các phép toán bằng (trong). Bạn có thể sử dụng bất kỳ cấu trúc điều khiển tích hợp nào mà ngôn ngữ của bạn có.
Bạn cũng có thể sử dụng các toán tử logic &&
||
!
, mặc dù chúng không có sẵn trực tiếp dc
.
Bạn không được sử dụng các toán tử Bitwise &
, |
, ~
và ^
hay bất kỳ chức năng mà trivially thực hiện chúng.
Ngoài ra, bạn không được sử dụng các toán tử hoặc hàm chuyển đổi cơ sở tích hợp sẵn.
Ngoài ra, vui lòng xem xét việc cung cấp chương trình kiểm tra hoặc đoạn trình biên dịch trực tuyến (không bao gồm trong điểm đánh gôn) để giúp xác minh câu trả lời của bạn.