브레인 씨발-680
여기에서 테스트하십시오 : ideone.com/Wi9ftB
>>>++++[>+++++++++[>+++[<<<<+<+>>>>>-]<<<+<<<+<+>>>>>>-]<-]+<++++++++<+++<---------<++++++++
++++<----<++++++++++<+++[>>>+.>>>.<<<<.>>>>>>[>[<<<<<<--------.-.>>>.<<<<.>+..<.>>>.>-----.<
------------.+++++++++.+++.------------.++++++++.++++>+++++.<<<<.>.+.>>>>->>-]+<<+>-]+<[<<<<
+.>>>.<<<<.>+.<.>>>.>-----.<<.>---.+++.<.>----.++++>+++++.<<<<.>+.>>>>-]<<<<<.>>>.>-----.<<.
>---.+++.<.>----.<<<.>>>+++++++.---.<.>----.++++>+++++.<<<<<.<-]>[>>++++<<-]>>---.[-]<[>+<-]
>>++.>>-----.<+++.<.<.>++.>---.-..<------.<.>>++++.---.<++.>----.<<.>--.>+++++++.---.++++++.
-------.<+++.<.>>++++++.<++++.---.<.>--.>--------.+++.<.>----.<<.>>+++++++++.-----.-.-----.-
-.+.>[>+++<-]>-.<<<---[>>+<<--]>>--.
내가 약속했듯이 여기에 더 나은 버전이 있습니다. 내 뇌는 기분이 .. 이름이 나오는 곳입니다.
설명 : (유지 보수가 불가능하고 작동 방식을 잊고 싶지 않기 때문에)
먼저이 과제에 가장 적합한 데이터 레이아웃을 선택해야합니다. 나는 생각해 냈다
-4 outmost loop
-3 newline char
-2 space
-1 numbers
1 lowercase #1
2 lowercase #2
3 comma, apostrophe, period
4 condition (outmost loop < 3)
5 inner loop
6 second inner loop
시프트가 너무 많지 않으면 이것이 최적이라는 것을 알아야합니다 (이 경우 레이아웃을 다시 정렬해야합니다)
그 후 4x9x3 루프를 사용하여 개행, 숫자, 두 개의 소문자 및 쉼표의 시작 값을 설정했습니다. (모든 작은 ASCII 코드는 4x9 = 36을 얻었고 두 개의 소문자는 4x9x3 = 108을 얻었고 실제 값을 얻기 위해 일부를 더하고 빼기했습니다)
사전 설정이 완료되면 코드는 3 회 순환하는 가장 바깥 쪽 루프로 들어갑니다. 나는 의사 코드로 설명합니다.
for 3 to 1 where i = numbers
print '++i, '
while inner_loop != 0 # this is true after the first loop
while second_inner_loop != 0 # and this is true after the second
print '10, 11 o'clock, 12' # prints the difference
condition = 0 # it prevents the printing below
second_inner_loop += 1
inner_loop += 1
while condition != 0
print '++i, ++i o'clock, ++i'
print ' o'clock rock,\n'
이 섹션이 끝나면 마지막 줄만 인쇄하면됩니다. 그러나 대문자 W는 너무 많은 문자를 사용하지 않고 생성되어야합니다. 이 시점에서 우리는 여기 있습니다 :
Address Value Pointer
-4 0 <--
-3 10
-2 32
-1 50
1 99
2 111
3 44
그래서 나는 [-3]을 4 번을 [-1]에 넣고 3을 빼서 87 (W)를 얻 >[>>++++<<-]>>---.
습니다. [-]
그리고 그것을 지우고 [-2]를이 위치 [-1]로 옮기면 공간이 소문자에 가까워집니다.<[>+<-]
그 후 문자를 인쇄합니다. 소문자 # 1은 하단 부분 97-107을위한 것이고 소문자 # 2는 위 영역을위한 것입니다.