20020xx##;;11++::''ee44**``kk@@::..;;
온라인으로 사용해보십시오!
설명
를 사용하여 "델타"(예 : 명령 포인터의 단계 크기)를 수동으로 설정할 수 있기 때문에 Befunge-98에서 방사선 강화 코드를 만드는 것은 그리 나쁘지 않습니다 x. 델타를로 설정하면 (2,0)다른 모든 문자는 건너 뛰고 모든 명령을 두 배로 늘릴 수 있습니다. 까다로운 것은 2 0안정적인 방법으로 스택 위에 올라가는 것입니다 . 우리는 실제로 0 2 0나머지 프로그램이 올바르게 작동해야하지만 무료로 할 것입니다. 우리가 이것을하는 방법은 다음과 같습니다.
20020xx
각 숫자는 자체적으로 푸시되므로 전체 프로그램에는 2 0단순히 무시할 시작이 있습니다 .
결과적으로 프로그램에서 첫 번째 또는 두 번째 문자를 삭제하는 것은 관련이 없습니다. 마찬가지로 세 번째 문자를 제거하는 것도 두 번째 문자를 제거하는 것과 동일하므로 걱정할 필요가 없습니다.
다른 두 경우에 어떤 일이 발생하는지 생각해 봅시다. 네 번째 문자 삭제 :
2000xx
델타가로 설정되어 (0,0)있습니다. 그러나 이것은 명령 포인터를 전혀 움직이지 않으므로 동일한 명령 x이 즉시 다시 실행되고 이번에는 팝업이 나타나고 (2,0)모두 잘됩니다 (나중에 목적을 위해 스택의 맨 아래에 암시 적 0이 있음).
대신 다섯 번째 문자를 삭제합시다.
2002xx
이제 델타가로 설정됩니다 (0,2). 그러나 여전히 수평 이동이 없으므로 IP가 즉시 계속해서 다시 랩핑 x되고 올바른 델타가 설정됩니다.
이 시점부터는 기본적으로 문자 중복과이 초기 부분은 항상 건너 뛰므로 무시할 수 있습니다.
...#;1+:'e4*`k@:.;
다음 ;명령이 나타날 때까지 모든 것을 건너 뛰는 일종의 주석 명령입니다 ;. 그러나 우리는 첫 번째 ;로 뛰어 넘기 #때문에 ;그 시점부터 의지 사이의 부분 만 실행됩니다.
1+ Increment the top of the stack.
: Duplicate it.
'e Push 101.
4* Multiply by 4 to get 404.
` Greater-than check. Pushes 1 once the top
reaches 405, otherwise 0.
k@ Terminate the program that many times.
:. Print a copy of the top of the stack (and a space).