모든 INTERCAL-72 스타일에 대해 하나의 이력서를 사용하십시오.
"if"문에 해당하는 내용을 작성해야하는 경우 INTERCAL-72 코드를 사용하는 일반적인 방법은 NEXT
두 번이고 계산됩니다 RESUME
. (현대 코드에서는 계산 COME FROM
이 더 나은 경우가 많지만이 팁에서는 코드가 선호한다고 가정합니다 NEXT
.) 첫 번째 바이트 NEXT
는 "if"의 한 분기에서 다른 분기로 이동할 때 바이트를 지불해야합니다 . NEXT
를 볼 때 같은 장소로 이동하는 "if"문장이 많지 않으면 두 번째를 공유하는 것도 사소한 것이 아닙니다 #1
. 그러나 RESUME
프로그램의 어느 위치 에나있을 수 있습니다 (제어가 즉시 어디서나 떠날 수 있기 때문에).
이를 처리하는 두 가지 방법이 있습니다. "if"문이 많은 경우 RESUME
두 번째 NEXT
문이 최대한 짧을 수 있도록 한 자리 숫자의 줄 번호 가 필요합니다. 가능하다면 RESUME
코드에서 자연스럽게 발생 하는 계산 을 시도 하십시오 NEXT
. 그런 다음 유일한 비용은 줄 번호입니다. 이 모든 것에 대해 단일 부울 변수를 사용해야합니다 NEXT
. 여기서 일반적인 합의는를 사용하는 것입니다 .5
. 주로 표준 라이브러리가 부울 리턴 값에 사용하는 변수이기 때문입니다.
또는 표준 라이브러리의 문서화되지 않은 (기술적으로 저조한 문서를 보았을 때 INTERCAL 설명서에 힌트를 주었으므로) 기능을 사용할 수도 있습니다. 의 중앙 위치 RESUME
가 매우 유용 하기 때문에 표준 라이브러리는 내부를 사용합니다. INTERCAL에서 줄 번호는 전역 (규칙의 네임과 함께하지만, 이는 당신이 무슨 일을하는지 알고 있다면 나눌 수 있습니다) 당신이 할 수 있도록, NEXT
당신이 바로 표준 라이브러리 내부에 원하는 경우, 특히, 캔 NEXT
에 그 중심 RESUME 위치 . 이것은 기존의 INTERCAL 코드에서 충분히 인기가 있으며 표준 라이브러리 대체는 기존 프로그램의 중단을 피하기 위해이를 구현해야합니다.
문제의 행은 (구현에 따라 문자 그대로 또는 효과적으로)입니다.
(1001) DO RESUME .5
이것을 사용하지 않는 주된 이유는 긴 줄 번호입니다. INTERCAL-72 스타일의 if 구조체를 많이 해야하는 경우 더 짧은 숫자를 사용하는 것이 좋습니다.
물론 기술을 결합하여 다음과 같은 것을 작성할 수 있습니다.
(9)DO(1001)NEXT
조금만 더 길다
(9)DORESUME.5
부울이 #2
되고 #3
(읽기 어렵지만 일반적으로 생성하기가 더 쉽다) 이점이 있습니다. 사실, 그것은 가치도 처리 할 수있는 추가 코드에 넣어 수 있습니다 #0
그리고 #1
당신은 많은 iffing 할 거라면 (그러나 계산 된 COME FROM
요구 사항은 매우 이상한하지 않는 한 아마이 경우에 더 잘 작동합니다).