다음 XKCD 만화에서 영감을 얻었습니다.
Missy Elliot의 "Work It"에서 코러스의 일부는 다음과 같습니다.
Is it worth it, let me work it
I put my thing down, flip it and reverse it
이를 염두에두고 다음 코드 골프 챌린지를 제안합니다.
순서대로 수행하는 코드를 작성하십시오.
- STDIN에서 8 비트 ASCII 입력을 가져옵니다. 예
n
(Hex 6E 또는 Bin 01101110) - 1 개 비트 레벨 (나는 그것이 비트 시프트 다운이라고 생각) 아래로 교대 각 바이트의 8 비트, 예를 들어
01101110
이된다00110111
( "내 물건이 아래로 넣어"); - 각 바이트의 비트 반전, 예를 들면
00110111
이된다11001000
( "이것은 플립"); - 바이트마다 비트를 반전 예
11001000
된다00010011
( "이것은 역방향"); - 바이트 값이 32보다 작 으면 ASCII로 다시 변환하기 전에 바이트에 대해,
(95 + [byte value])
즉 다시 말해서(126-(31-[byte value]))
바이트 를 수행 하십시오. 바이트 값이 여전히 32보다 작 으면 5 단계를 반복하십시오. - 바이트 값이 126보다 큰 경우 ASCII로 다시 변환하기 전에 바이트에 대해,
([byte value] - 95)
즉 다시 말해서(32+([byte value]-127))
.. 값이 여전히 126보다 큰 경우 6 단계를 반복하십시오. - 새로 변환 된 문자열을 ASCII로 표시하십시오.
이 코드의 실제 예는 다음과 같습니다.
(입력, 가치가 있습니까?)
workit missy
( "missy"가 입력이고 "workit"이 기능 임)
이제 무대 뒤에서 ...
(내가 일하게 해줘 ... 이진으로)
01101101 01101001 01110011 01110011 01111001
(내 물건을 내려 ... 비트 단위)
00110110 00110100 00111001 00111001 00111100
(...뒤집어...)
11001001 11001011 11000110 11000110 11000011
(... 그리고 반대로!)
10010011 11010011 01100011 01100011 11000011
(십진수로 다시 변환)
147 211 99 99 195
(필수 수학 수행)
147-95 211-95 99 99 195-95 => 52 116 99 99 100
(ASCII로 변환하여 출력, 표시)
4tccd
규칙
- 가장 짧은 코드가 승리합니다 ... 그렇게 간단합니다 ...
- 규칙 1을 "작동"하도록 만들 수있는 한, 기능을 통해, 프롬프트를 통해 또는 어떤 것이 든 원하는대로 입력 할 수 있습니다 ...;)
- 가역성을 잃지 않았습니다. 코드가 요청 한대로 코드를 만들 수 있다면 행복 할 것입니다 ...
행운을 빌어 요!
0 1 1 0 1 1 0 1
과 0 1 1 0 1 0 0 1
에mi
P
바이트 값으로 바뀌고 235
빼면을 95
남깁니다 140
. 여전히 인쇄 할 수 없습니다. 아니면 내가 오해합니까?