我有任何挑战。我必须写脑筋法。
对于给定的数字,n指定其最后一位数。
入口
输入将只包含一行,其中只有一个整数n(1 <= n <= 2,000,000,000),后跟换行符'\ n'(ASCII 10)。
出口
在输出上必须找到一个表示n的最后一位的整数。
例子我 入口:32 退出:2
示例II: 入口:231231132 退出:2
这是我尝试过的,但它不起作用:
+[>,]<.>++++++++++.
答案 0 :(得分:2)
最后一个输入是换行符。因此,您必须返回两个记忆位置才能获得该数字的最后一位数字。也许你不必返回换行符,所以代码是
,[>,]<<.
答案 1 :(得分:2)
对不起,真正的答案是
,[>,]<.
因为你的答案太过分了;)
答案 2 :(得分:1)
根据解释器的不同,您可能需要自行转义返回键。考虑到返回键是ASCII: 10
,您的代码应如下所示:
>,----- -----[+++++ +++++>,----- -----]<.
细分:
> | //first operation (just in case your interpreter does not
support a negative pointer index)
,----- ----- | //first entry if it's a return; you don't even get in the loop
[
+++++ +++++ | //if the value was not ASCII 10; you want the original value back
>, | //every next entry
----- ----- | //check again for the the return,
you exit the loop only if the last entered value is 10
]
<. | //your current pointer is 0; you go back to the last valid entry
and you display it
答案 3 :(得分:1)
您的问题是,循环将永远持续下去,直到循环结束时指针当前所在的单元格等于0。您的代码永远不会在循环中打印,也不会减法,因此您的循环永远不会结束,而您的代码所做的就是将一个ASCII字符作为输入,向前移动一个,将一个ASCII字符作为输入,依此类推。循环结束后的所有代码都是无用的,因为循环永远不会结束。