Este enlace debe ser muy útiles: http://esolangs.org/wiki/brainfuck_algorithms
Contiene algoritmos para la multiplicación y también una condición IF, así como comparaciones booleanas (para comprobar si, por ejemplo, el usuario pulsa ENTER [carácter 10] para finalizar la entrada.)
Luego, lo que debes hacer es esto (escribiré un pseudocódigo y luego tú debes implementarlo usando los algoritmos descritos allí). Te diré que también das pseudocódigo sobre cómo implementar un ciclo while al final, ya que no está incluido en esa página (pero bastante simple ... relativamente). Definitivamente se sorprenderá cuando logre entender exactamente lo que hace cada personaje: D. De todos modos, aquí va:
se necesitan dos células A y 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's value anymore)
move to B
input a character
Y aquí es un poco de información acerca de cómo crear un bucle while. Supongamos que tiene este código: while (condition) {body}
. Asumiré que logró implementar el código para la condición usando el enlace que le di antes. Es necesario una célula en la que almacenar el resultado de la condición, que llamaré a 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 ]
Cuando probé esta línea en https://copy.sh/brainfuck/ y al https://sange.fi/esoteric/brainfuck/impl/interp/i.html, ambos sitios no logró detener. – JSideris