Questa è una domanda di follow-up alla mia domanda su Puzzling.SE : ho chiesto se esiste una funzione f che associa le stringhe booleane alle stringhe booleane, in modo che f (f (b)) = reverse (b) per tutte le stringhe di input b . (Per inverso , intendo la funzione che inverte l'ordine dei bit.)
Il link sopra contiene una risposta positiva, con prova, della grande f '' , ma potresti voler ponderare la domanda da solo prima di guardare.
Implementare tale funzione f nel minor numero di byte possibile.
È possibile leggere l'input da STDIN o accettare un argomento della funzione; e scrivere la stringa del risultato su STDOUT o restituirla.
In entrambi i casi, è possibile lavorare con stringhe effettive di due byte o caratteri distinti di propria scelta (dire
0e1, o\x00e\x01) o con matrici / elenchi di valori di verità e falsità . Scegli due valori e attenersi a quelli, però.Il risultato di una singola applicazione di f deve essere una stringa binaria stessa: nessuna risposta sciocca come
b -> if b starts with 'x' then reverse(b[1:]) else 'x' + b...La tua funzione dovrebbe essere totale ; in particolare, l'input può essere la stringa vuota, oppure lunga un bit, ecc. Non esiste un limite superiore per la lunghezza della stringa.
Dovrebbe anche essere puro : non mantenere uno stato globale tra le chiamate di funzione; la stringa di input deve determinare completamente la stringa di output.