Ответ 1
Эта ссылка должна быть весьма полезной: http://esolangs.org/wiki/brainfuck_algorithms
Он содержит алгоритмы для умножения, а также условие IF, а также логические сравнения (чтобы проверить, нажал ли, например, пользователь, ввести [символ 10] для завершения ввода.)
Тогда то, что вы делаете, это (я напишу некоторый псевдокод, а затем вам, чтобы реализовать его, используя описанные там алгоритмы). Я также скажу, что вы также даете псевдокод о том, как реализовать цикл while в конце, поскольку он не включен в эту страницу (но довольно простой, тем не менее... относительно). Вы определенно будете поражены, когда вам удастся точно понять, что делает каждый персонаж: D. В любом случае, здесь идет:
вам нужны две ячейки A и B
move to B
input a character
while B is not equal to 10 (the newline character) then
subtract 48 from B ('0' is character 48, so if we subtract 48 from any digit entered we should get its value. Of course this assumes that the user only presses digit keys or enter. I'll leave it as an exercise to you to do error checking)
multiply A by 10
add B to A (you can just move B to A like this [<+>-] since you will not need B value anymore)
move to B
input a character
И вот немного информации о том, как создать цикл while. Предположим, что у вас есть этот код: while (condition) {body}
. Я предполагаю, что вам удалось реализовать код для условия, используя ссылку, которую я дал вам ранее. Вам нужна ячейка, в которой будет сохраняться результат условия, которое я назову C
execute condition and store result in C
start loop using [[-] (start the loop and immediately clear C)
execute loop body
execute condition and store result in C
end loop using ]