Dies ist eine Folgefrage meiner Puzzling.SE Frage : Ich fragte , ob es eine Funktion ist f Mapping Boolean Strings Boolean Strings, so dass f (f (b)) = reverse (b) für alle Eingabezeichenfolgen b . ( Umgekehrt meine ich die Funktion, die die Reihenfolge der Bits umkehrt.)
Der obige Link enthält eine positive Antwort mit Beweis durch das große F '' , aber Sie möchten die Frage vielleicht selbst überdenken, bevor Sie sie sich ansehen.
Implementieren Sie eine solche Funktion f in möglichst wenigen Bytes.
Sie können entweder Eingaben von STDIN lesen oder ein Funktionsargument verwenden. und schreiben Sie entweder die Ergebniszeichenfolge nach STDOUT oder geben Sie sie zurück.
In beiden Fällen können Sie mit tatsächlichen Zeichenfolgen aus zwei unterschiedlichen Bytes oder Zeichen Ihrer Wahl (z. B.
0und1, oder\x00und\x01) oder mit Arrays / Listen mit wahren und falschen Werten arbeiten . Wählen Sie zwei Werte und bleiben Sie dabei.Das Ergebnis einer einzelnen Anwendung von f muss selbst eine Binärzeichenfolge sein: keine dummen Antworten wie
b -> if b starts with 'x' then reverse(b[1:]) else 'x' + b...Ihre Funktion sollte total sein ; Insbesondere kann die Eingabe eine leere Zeichenfolge oder ein Bit lang sein. Es gibt keine Obergrenze für die Länge der Zeichenfolge.
Es sollte auch rein sein : Behalten Sie keinen globalen Status zwischen Funktionsaufrufen bei; Die Eingabezeichenfolge muss die Ausgabezeichenfolge vollständig bestimmen.