CAPL 1.5+; 입력이없는 6; 입력시 10-10 = 0
Sidenote
필자는 사용자 지정 언어가 골프 질문에서 허용되지 않는다는 것을 읽었습니다. 질문에서 요구하는 것과 정확히 일치하는 내장 함수를 만들 수는 있지만 CAPL을 통해 골프를보다 쉽게 만들 수 있었습니다 . 이것이 허용되지 않는다고 생각되면 알려주십시오.
> <> 및 Befunge (행 사이를 이동하고 16 진수 문자를 사용하여 숫자를 입력 할 수 있음), Ruby 및 일부는 골프를 쉽게하기 위해 몇 가지 아이디어를 얻었습니다 .
CAPL은 왼쪽에서 오른쪽으로 읽고 줄 끝에서 한 줄 아래로 내려갑니다. 마지막 줄이면 프로그램이 종료됩니다.
아직이 언어를 아는 사람이 없기 때문에 가능한 한 많이 설명하려고 노력할 것입니다.
출력 y. 6 바이트
bb*.n<
bb*
b
16 진수이고 11
, 그래서 bb*
이다 11*11
= 121
의 UTF-8 등가 인 y
. 이 값은 스택으로 푸시됩니다.
.
스택에서 최상위 값을 팝하고 UTF-8로 출력합니다. 121
스택 맨 위에있는 것처럼 인덱스는 여기서 무시됩니다.
n
줄 바꾸기 출력
<
포인터를 줄 의 시작 부분으로 다시 보내서 그 줄을 반복합니다. 입력이 예상되지 않으므로 입력을 다시 요청하지 않고도 안전하게 입력 할 수 있습니다.
입력에서 출력. 10 바이트, 보너스 후 0
i~a&{X:.)}
i
사용자로부터 입력을 받아 스택 상단에 UTF-8로 푸시 한 후 길이를 푸시합니다. 즉 [72,101,108,108,111,5]
~
, 스택에서 숫자를 팝한 다음 해당 바이트 수를 되돌립니다. 즉 , 개행 문자에 [111,108,108,101,72]
a
대한 16 진수 10
,
&{...}
무한 루프를 만듭니다. 입력이 있으므로 포인터를 다시 라인으로 보낼 수 없습니다. 아래 줄에 함수를 배치하면 바이트가 안전하지만 줄 바꿈은 허용되지 않습니다.
X
스택에서 최상위 값을 제거합니다 (루프의 인덱스)
:.
최상위 값을 복제 한 다음 UTF-8로 출력
)
스택을 오른쪽으로 바꿉니다. ( [1,2,3,4,5]
-> [5,1,2,3,4]
)
그러나 이것은 개행으로 시작한 다음 입력, 개행, 입력 등을 출력하기 시작한다는 것을 의미합니다. 개행으로 시작할 수없는 경우 12 바이트와 함께 다음 코드를 빼거나 2를 뺀 후 보너스.
iXa#~&{X:.)}
여기에서 유일한 새로운 명령 #
은 스택에있는 항목의 양을 스택으로 푸시하는 것입니다.
나는의 길이를 제거 i
입니다 이상 제거하고 다시 길이를 얻기보다 줄 바꿈과 교환 한 후, 1을 추가하기 때문에.
재미를 위해 여기에 "Hello World"프로그램이 있습니다.
"Hello World"#~
#?!;.<
?!
동작> <>의 것과 동일
y
하거나\n
내부에 사용할 수 없습니다"로 읽어야 합니까?