Dựa trên ký hiệu "nhị phân, nhưng có twos" được đề cập trong video số thứ tự này , hãy viết một hàm lấy một số duy nhất làm đầu vào và xuất tất cả các biến thể của số đó trong hệ thống "nhị phân" cho phép twos.
Quy tắc
- Mã chỉ phải là một hàm / phương thức, không phải là một chương trình đầy đủ
- Đầu vào là một số nguyên được truyền dưới dạng tham số duy nhất cho hàm
- Đầu ra là tất cả các biến thể hợp lệ của số đầu vào được chuyển đổi thành ký hiệu "nhị phân, nhưng có ký hiệu twos"
- Đầu ra là giá trị trả về của hàm, nhưng có thể ở bất kỳ định dạng nào thuận tiện miễn là nó rõ ràng (ví dụ: 3 ints, 3 chuỗi, chuỗi được phân tách bằng dấu phẩy / dấu cách, mảng ints, v.v.), thứ tự là không quan trọng
- Trong trường hợp không chắc là ngôn ngữ có chứa hàm tích hợp để đạt được kết quả, thì ngôn ngữ đó không được phép
- Mã ngắn nhất tính bằng byte là người chiến thắng
Giải thích về đầu ra
Ví dụ: nếu bạn đã chuyển số 9
, bạn có thể chuyển đổi nó thành nhị phân 1001
, nhưng nếu bạn cho phép 2
s ở từng vị trí, bạn cũng có thể viết nó dưới dạng 201
(tức là 2*4 + 0*2 + 1*1
) hoặc 121
(tức là 1*4 + 2*2 + 1*1
), như được hiển thị trong bảng này:
+----+----+----+----+
| 8s | 4s | 2s | 1s |
+----+----+----+----+
| 1 | 0 | 0 | 1 |
| 0 | 2 | 0 | 1 |
| 0 | 1 | 2 | 1 |
+----+----+----+----+
Vì vậy, nếu được thông qua 9
, chức năng của bạn sẽ cần phải trả lại ba con số, 1001
, 201
và 121
.
Format và trật tự là không thích hợp, miễn là nó rõ ràng (ví dụ [121,201,1001]
, "0201 0121 1001"
, ("1001","121","201")
là kết quả hợp lệ khi đưa ra một đầu vào của 9
).
Ví dụ
2
=>10, 2
9
=>1001, 201, 121
10
=>1010, 210, 202, 1002, 122
23
=>2111, 10111
37
=>100101, 20101, 100021, 20021, 12101, 12021, 11221