Inspirowany następującym komiksem XKCD:
W „Work It” Missy Elliot część refrenu brzmi następująco:
Is it worth it, let me work it
I put my thing down, flip it and reverse it
Mając to na uwadze, proponuję następujące wyzwanie golfowe:
Utwórz kod, który działa, w celu:
- Pobiera 8-bitowe wejście ASCII ze STDIN; np.
n
(Hex 6E lub Bin 01101110) - Przesuwa o 8 bitów każdego bajtu w dół o 1 bit (wydaje mi się, że nazywa się to przesunięciem bitowym w dół), np.
01101110
Staje się00110111
(„odłóż moją rzecz”); - Odwraca bity każdego bajtu, np.
00110111
Staje się11001000
(„odwróć”); - Odwraca bity dla każdego bajtu, np.
11001000
Staje się00010011
(„odwróć”); - Jeśli wartość bajtu jest mniejsza niż 32, wykonaj
(95 + [byte value])
, lub innymi słowy,(126-(31-[byte value]))
bajt przed konwersją z powrotem do ASCII ... Jeśli wartość bajtu jest nadal mniejsza niż 32, powtórz krok 5 - Jeśli wartość bajtu jest większa niż 126, wykonaj
([byte value] - 95)
, lub innymi słowy,(32+([byte value]-127))
bajt przed konwersją z powrotem do ASCII ... JEŻELI wartość jest nadal większa niż 126, powtórz krok 6. - Wyświetl nowo przekonwertowany ciąg jako ASCII.
Przykład tego kodu w akcji:
(Wkład, czy warto?)
workit missy
(„missy” jest wejściem, „workit” jest funkcją)
Teraz za kulisami ...
(pozwól mi pracować ... w binarny)
01101101 01101001 01110011 01110011 01111001
(Odłóż moją rzecz ... Bitowo)
00110110 00110100 00111001 00111001 00111100
(...Odwróć to...)
11001001 11001011 11000110 11000110 11000011
(... i odwróć to!)
10010011 11010011 01100011 01100011 11000011
(Przekształcony z powrotem na dziesiętny)
147 211 99 99 195
(Wykonaj niezbędną matematykę)
147-95 211-95 99 99 195-95 => 52 116 99 99 100
(Konwertuj z powrotem na ASCII i wyświetl, dane wyjściowe)
4tccd
Zasady
- Najkrótszy kod wygrywa ... tak prosty ...
- Dane wejściowe mogą być wprowadzane za pomocą funkcji, przez monit lub cokolwiek, co Ci odpowiada, pod warunkiem, że możesz sprawić, że Zasada 1 „zadziała” dla Ciebie ...;)
- Nie jestem po odwracalności, dopóki możesz zmusić kod do zrobienia tego, o co go poprosiłem, będę szczęśliwy ...
Powodzenia!
0 1 1 0 1 1 0 1
i 0 1 1 0 1 0 0 1
zami
P
zamienia się w wartość bajtu, 235
a odejmowanie 95
pozostawia 140
. Nadal nie można drukować. A może źle zrozumiałem?