Alice , 28 18 바이트
10 바이트 골프를위한 @MartinEnder 덕분에
=I.!'`-+?hn
>3-nO@
온라인으로 사용해보십시오!
이 제출은 @MartinEnder의 답변과 다른 방법을 사용합니다.
이 제출물 0x00
은 허위와 진실로 출력 됩니다 0x01
.
그래서 여기에 출력하는 버전 0
이나 1
대신이 그것을 시도는!
설명
아래의 설명은 "보이는"버전에 대한 것입니다. 두 번째는 첫 번째 프로그램을 제외하고는 매우 유사합니다. 마지막 o
은 ( 0
또는 1
우리가 카디널 모드에 있기 때문에) 또는 문자열로 변환하지 않지만 대신 숫자를 가져 와서 해당 코드 포인트에서 문자를 출력합니다.
= Does nothing, but will be useful later on
I Read a character and push its code point onto the stack
If there is no more input, -1 is pushed instead
. Duplicate it
! Store it on the tape
# Skip the next command
o Gets skipped
'` Push 96
- Subtract it from the character
+ And add it to the total
? Load the number on the tape
h Increment it
n And negate it
For all characters that are read, ?hn results in 0,
but if -1 is pushed, then the result becomes 1
이 후 IP는의 왼쪽 가장자리로 줄 바꿈됩니다 =
. 스택의 최상위 값이 0
인 경우 IP는 경로로 계속 진행하여 입력으로 완료되면 (스택의 맨 위가 됨) 모든 문자의 총 합이 증가 1
하고 IP가 오른쪽으로 바뀝니다 (90 시계 방향으로도).
한 가지 유의해야 할 점은 입력이 끝나면 첫 번째 줄의 루프가 한 번 반복되는 것입니다. 이 차감됩니다 97
( 96
으로부터 '`
및 -1
전체에서 입력의 부족).
> Set the direction of the IP to East
3- Subtract 3 from it (yields 0 if sum is 100, something else otherwise)
n Negate it; Zero becomes 1, non-zero numbers become 0
/ Mirror; the IP gets redirected South-East
The IP reflects off the bottom and goes North-East
Now the program is in Ordinal mode, where numbers are automatically converted into strings when being used
o Output the top of the stack as a string
IP reflects off the top and heads South-East
@ End the program