我有一个挑战是用 Brainfuck 语言编写混淆代码来执行以下操作:
对于给定的数字 n 输出其最后一位数字。
输入
输入将仅包含一行,其中只有一个整数 n ( 1 < = n < = 2,000,000,000 ),后跟换行符 '\n' (ASCII 10)。
输出
在输出上,必须找到一个整数,表示 n 的最后一位。
示例我输入:32 输出:2
例子二:输入:231231132 输出:2
这是我尝试过的,但没有奏效:
+[>,]<.>++++++++++.
问题是您告诉循环在输入为 0 时终止。
输入永远不会是 0,换行符的 ASCII 是 10,所以这就是您需要使用的。
这段代码应该可以工作。实际上,这段代码根本不关心你是否给它一个数字,它只是返回它找到的第一个换行符之前的最后一个字符。
+[ // increment [1] by 1 and enter the loop
,[ // read input to [1] and enter another loop
>+>+<<- // copy the initial input twice whilst decrementing the original
]
>>>++++++++++ // write 10 (for newline) and enter a loop
[
<->- // decrement the 10 counter and one of the copied inputs
]
< step back to the (input - 10) cell
]<<<. // if (input - 10 == 0) then you just read a carriage return! yay! Step back by three to the last stored input and print it out to the console.