Đây là một câu hỏi tiếp theo để tôi câu hỏi Puzzling.SE : Tôi hỏi nếu có một hàm f lập bản đồ chuỗi Boolean để chuỗi Boolean, do đó f (f (b)) = đảo ngược (b) cho tất cả các đầu vào chuỗi b . ( Ngược lại , ý tôi là hàm đảo ngược thứ tự các bit.)
Liên kết trên có chứa một câu trả lời tích cực, với bằng chứng, bởi f '' tuyệt vời , nhưng bạn có thể muốn tự suy ngẫm câu hỏi trước khi tìm kiếm.
Thực hiện một hàm f như vậy trong càng ít byte càng tốt.
Bạn có thể đọc đầu vào từ STDIN hoặc lấy tham số hàm; và viết chuỗi kết quả vào STDOUT hoặc trả về nó.
Dù bằng cách nào, bạn có thể làm việc với chuỗi thực tế của hai byte riêng biệt hoặc các ký tự bạn đã chọn (nói
0
và1
hay\x00
và\x01
), hoặc với các mảng / danh sách truthy và giá trị falsy . Chọn hai giá trị và gắn bó với những giá trị, mặc dù.Kết quả của một ứng dụng duy nhất của f phải là một chuỗi nhị phân: không có câu trả lời ngớ ngẩn nào như
b -> if b starts with 'x' then reverse(b[1:]) else 'x' + b
...Chức năng của bạn nên là tổng số ; cụ thể, đầu vào có thể là chuỗi rỗng hoặc dài một bit, v.v. Không có giới hạn trên cho độ dài của chuỗi.
Nó cũng phải thuần túy : không giữ bất kỳ trạng thái toàn cầu nào giữa các lệnh gọi hàm; chuỗi đầu vào phải xác định hoàn toàn chuỗi đầu ra.