ab*1'3:*2+*0pnd3*:::::::::::::::1'3:*3+*0p1'3:*5+*0p1'3:*d+*0p1'3:*f+*0p1'3:*fa++*0p1'3:*fd++*0p1'4'3*f-*0p1'4'3*7-*0p1'4'3*5-*0p6:*:*4-1p6:*:*4+1p6:*:*8+1p6:*:*a+1p6:*:*8+2p6:*:*f1++2p6:*:*f3++2pn75*1-:1'3:*4+*0p6:*:*f2++2pnaa*:::::::::::::::::1'3:*6+*0p1'3:*7+*0p1'3:*f1++*0p1'3:*f2++*0p1'3:*fe++*0p1'3:*ff++*0p1'4'3*e-*0p1'4'3*d-*0p1'4'3*4-*0p1'4'3*3-*0p6:*:*3-1p6:*:*2-1p6:*:*b+1p6:*:*c+1p6:*:*9+2p6:*:*a+2p6:*:*f4++2p6:*:*f5++2pn67*::::::::::1'3:*8+*0p1'3:*a+*0p1'3:*f4++*0p1'3:*f5++*0p1'4'3*f-5-*0p1'4'3*c-*0p1'4'3*2-*0p6:*:*1-1p6:*:*d+1p6:*:*b+2p6:*:*f6++2pna5*::1'3:*9+*0p1'3:*f3++*0p6:*:*1pn68*:::::1'3:*b+*0p1'3:*f8++*0p1'4'3*f-2-*0p1'4'3*9-*0p1'4'3*1+*0p6:*:*f7++2pne8*:::::::1'3:*c+*0p1'3:*f9++*0p1'4'3*f-1-*0p1'4'3*8-*0p1'4'3*2+*0p6:*:*f2++1p6:*:*f+2p6:*:*f8++2pnf4*:1'3:*e+*0p1'4'3*3+*2pn77*::::1'3:*f6++*0p1'4'3*f-4-*0p6:*:*f1++1p6:*:*c+2p6:*:*e+2pnb4*1-::1'3:*f7++*0p6:*:*f+1p6:*:*d+2pnf4*1-::1'3:*fb++*0p6:*:*7+2p1'3:*1+*2pnf4*2-1'3:*fc++*0pn95*:::1'4'3*f-3-*0p1'4'3*a-*0p1'4'3**0p6:*:*1+1pn87*1'4'3*b-*0pnac*2-:1'4'3*6-*0p1'4'3*3+*0pnf4*3-1'4'3*1-*0pn88*2-6:*:*5-1pnc9*1-6:*:*2+1pnb4*:6:*:*3+1p6:*:*6+1pn88*6:*:*9+1pnd4*1-6:*:*e+1pnc8*2-:1'3:**1p1'3:**2pnd7*2+6:*:*4+2pn75*6:*:*6+2pn>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ab*1'3:*2+*0pnd3*:::::::::::::::1'3:*3+*0p1'3:*5+*0p1'3:*d+*0p1'3:*f+*0p1'3:*fa++*0p1'3:*fd++*0p1'4'3*f-*0p1'4'3*7-*0p1'4'3*5-*0p6:*:*4-1p6:*:*4+1p6:*:*8+1p6:*:*a+1p6:*:*8+2p6:*:*f1++2p6:*:*f3++2pn75*1-:1'3:*4+*0p6:*:*f2++2pnaa*:::::::::::::::::1'3:*6+*0p1'3:*7+*0p1'3:*f1++*0p1'3:*f2++*0p1'3:*fe++*0p1'3:*ff++*0p1'4'3*e-*0p1'4'3*d-*0p1'4'3*4-*0p1'4'3*3-*0p6:*:*3-1p6:*:*2-1p6:*:*b+1p6:*:*c+1p6:*:*9+2p6:*:*a+2p6:*:*f4++2p6:*:*f5++2pn67*::::::::::1'3:*8+*0p1'3:*a+*0p1'3:*f4++*0p1'3:*f5++*0p1'4'3*f-5-*0p1'4'3*c-*0p1'4'3*2-*0p6:*:*1-1p6:*:*d+1p6:*:*b+2p6:*:*f6++2pna5*::1'3:*9+*0p1'3:*f3++*0p6:*:*1pn68*:::::1'3:*b+*0p1'3:*f8++*0p1'4'3*f-2-*0p1'4'3*9-*0p1'4'3*1+*0p6:*:*f7++2pne8*:::::::1'3:*c+*0p1'3:*f9++*0p1'4'3*f-1-*0p1'4'3*8-*0p1'4'3*2+*0p6:*:*f2++1p6:*:*f+2p6:*:*f8++2pnf4*:1'3:*e+*0p1'4'3*3+*2pn77*::::1'3:*f6++*0p1'4'3*f-4-*0p6:*:*f1++1p6:*:*c+2p6:*:*e+2pnb4*1-::1'3:*f7++*0p6:*:*f+1p6:*:*d+2pnf4*1-::1'3:*fb++*0p6:*:*7+2p1'3:*1+*2pnf4*2-1'3:*fc++*0pn95*:::1'4'3*f-3-*0p1'4'3*a-*0p1'4'3**0p6:*:*1+1pn87*1'4'3*b-*0pnac*2-:1'4'3*6-*0p1'4'3*3+*0pnf4*3-1'4'3*1-*0pn88*2-6:*:*5-1pnc9*1-6:*:*2+1pnb4*:6:*:*3+1p6:*:*6+1pn88*6:*:*9+1pnd4*1-6:*:*e+1pnc8*2-:1'3:**1p1'3:**2pnd7*2+6:*:*4+2pn75*6:*:*6+2pn>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
온라인으로 사용해보십시오!
이것이 지옥 축제였습니다.
작동 방식 :
프로그램은 프로그램 B를 자체적으로 어셈블 한 소스 바이트의 절반을 두 번 인쇄 한 put 문입니다.
이 프로그램은 실제로 1300 바이트 프로그램의 사본 2 개이므로 전체 1300 바이트 프로그램이 항상 전체로 실행됩니다.
더 나은 설명 :
모든 비 펀지-98 quine 심볼을 같은 포함 할 필요가 @
또는 q
과 ,
문제 : 그 상징 중에 있기 때문에 Especialy는 점을 시작하는 좋은 없습니다 @
및 q
즉시 프로그램을 종료합니다.
해결책 : 소스 코드에서 해당 문자를 제거하십시오
문제 : 어떻게?
솔루션 : p
(put) 명령을 사용 하여 소스 코드를 수정하여 1 바이트만큼 이동 된 소스 코드를 포함하고 부정 행위를 하는 명령을 사용 하지 않는 필수 문자를 포함하십시오 g
.
문제점 : (이것이 언제 끝날까요)
put 명령은 n x y
문자, x-coord, y-coord를 결정하는 3 개의 값 을 팝니다. 그러나이 값의 초기화가 반으로 나뉘면 시작 소스 코드에 잘못된 문자를 쓸 수 있습니다. quining.
해결책 : (마지막 약속)
소스 코드 2 부를 사용하십시오. 후자는 "올바른 것"입니다. 이것은 실수로 반으로 나눈 put 문 (p 명령 + 상수 이니셜 라이저)이 다른 문제를 수정합니다. 실행되지 않으면, 각 명령문의 사본 2 개를 갖도록 수정됩니다. 이것이 작동해야하는 마지막 것은 전체 소스 코드를 반으로 만드는 방법입니다.
답변 :
이것은 문자열 바이트의 두 사본이 이동 한 이유 == 바이트 시프트 된 문자열의 두 사본이 표시되는 이유에 대한 시각적 증거입니다. 즉, 우리는 코드의 절반을 가져 와서 바이트 시프트 한 다음 두 번 인쇄 할 수 있습니다 (또는 코드의 절반을 가져 와서 바이트 시프트, 인쇄, 반복 [실제로 발생하는 상황])
구현 방법 : 0123456789abcdef가 소스라고 가정
유사 코드 :
0123456789abcv;;"123456789abcdef" < go this way <--
>PS'0, repeat 2x ^
PS는 인쇄 스택 (실제 지침이 아님)을 의미합니다. 우리는 소스 코드의 절반을 스택으로 역순으로 푸시 ""
한 다음 스택을 인쇄 한 다음 앞에 이동 '
하는 첫 번째 문자 0
를 가져오고 ( 명령) '
바이트 이동을 일으키는 마지막 문자 를 인쇄 한 다음 사이클을 반복합니다 한 번 더 두 번째 사본을 인쇄하십시오. 처리해야 할 기술 중 하나는 소스 내부의 기호입니다. 소스 코드를 실행하는 동안 코드를 작성하면 문제가 발생할 수 있습니다. 외부에서 처리하는 put 문을 추가하여이 문제를 피했습니다.
이렇게하면 코드가 다음과 같이 보입니다.
설명 :
초록색 강조 표시 : 소스에 문자를 추가하는 코드
회색 문자 (시인성이 좋지 않은 문제) 녹색 코드에 의해 추가되는 코드
빨간색 강조 표시 : 소스 코드의 후반 첫 문자를 파란색 영역으로 이동시키는 코드 .
파란색 강조 표시 : 빨간색 강조 표시
주황색 강조 표시 : @
노란색 영역에 (종료) 명령을 넣어 2 바이트 시프트 사본을 쓴 후 종료되도록하는 코드입니다 .
화살표는 코드 흐름이 어떻게 진행되는지 더 명확하게 만들어야합니다.
다음은 마지막으로 힘든 부분 온다
어디 할 아기의 소스 코드에서 온은?
짧은 대답 : C # Magic
긴 대답 : 100 개 이상의 C # 코드로 컴파일 된 Befunge 코드 스 니펫. 수동으로 약 100 개의 상수 이니셜 라이저 (특정 숫자를 스택으로 푸시하는 befunge 코드 조각)를 작성한 다음 사용자 정의 C # 프로그램을 사용하여 1300 바이트 Befunge 출력으로 컴파일하여 두 번 복사하여 마지막으로 만들었습니다. 프로그램.
아직 여기 있어요? 읽어 주셔서 감사합니다! (또는 적어도 끝까지 스크롤)
나는 나쁜 농담이 재미 있고 성 가시지 않기를 바랍니다.
참고 :이 코드에서 put 문은 부정 행위가 될 ag 명령을 생성하지 않습니다.
편집 : 개발자 도구를 사용하여 TIO에서 다음 Javascript 코드를 사용하여 코드를 확인했습니다.
setInterval(()=>{document.getElementById("code").value =
document.getElementById("output").value;
document.getElementById("run").click();}, 2000);