Alice , 28 18 byte
Cảm ơn @MartinEnder đã chơi golf 10 byte
=I.!'`-+?hn
>3-nO@
Hãy thử trực tuyến!
Nội dung này sử dụng một phương pháp khác với câu trả lời của @ MartinEnder.
Trình này đầu ra 0x00
cho giả và 0x01
cho sự thật.
Vì vậy, đây là một phiên bản đầu ra 0
hoặc 1
thay vào đó: Hãy thử nó!
Giải trình
Giải thích dưới đây dành cho phiên bản "hiển thị". Cả hai đều rất giống nhau, ngoại trừ trong chương trình đầu tiên, lần cuối cùng o
không chuyển đổi 0
hoặc 1
thành một chuỗi (vì chúng ta đang ở chế độ chính), nhưng thay vào đó lấy số và xuất ký tự tại điểm mã đó.
= 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
Sau đó, IP kết thúc xung quanh cạnh trái tại =
. Nếu giá trị trên cùng của ngăn xếp là 0
, IP sẽ tiếp tục với đường dẫn của nó, tăng tổng tổng của tất cả các ký tự, một khi nó được thực hiện với đầu vào (đỉnh của ngăn xếp sẽ là 1
), thì IP sẽ rẽ phải (90 độ theo chiều kim đồng hồ).
Một điều quan trọng cần lưu ý, vòng lặp trên dòng đầu tiên sẽ lặp lại một lần sau khi đầu vào kết thúc. Điều này sẽ trừ 97
( 96
từ '`
và -1
thiếu đầu vào) khỏi tổng số.
> 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