Cita de: Baal_30 en 2 Julio 2015, 13:06 PMLo que no logro entendes es como sólo con 8 instrucciones
CitarCódigo [Seleccionar]"[" - Avanza a la instrucción inmediatamente posterior al ] correspondiente si el byte actualmente apuntado es nulo (si es 0).
"]" - Retrocede a la instrucción inmediatamente posterior al [ correspondiente si el byte actualmente apuntado no es nulo (si es distinto de 0).
Esos son los operadores que hacen posible un loop y simplifican (dentro de lo que cabe) el código para que no sea tan... repetitivo (dentro de lo que cabe también, por que vaya tela con este lenguaje...). Peores cosas se pueden ver cómo un loop en el lenguaje 2L: https://esolangs.org/wiki/2L
En fin, este código asigna 7 celdas de memoria a las que le asigna un valor inicial de 0 a cada una, y con el búcle le va asignando distintos valores a cada celda, valores que corresponden a la tabla de caracteres ASCII.
Código [Seleccionar]
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
Cuando termina el búcle aquí:
Código [Seleccionar]
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]
Estas son las celdas y el valor de cada celda:
Celdas : 0 1 2 3 4 5 6
Valores: 0 0 72 104 88 32 8
Despues de eso, el resto del código simplemente va moviendo el puntero de una celda a otra, incrementando o disminuyendo su valor.
Código [Seleccionar]
>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
La celda 2 contiene un 72, que equivale a una H.
La celda 3 contiene un 104, al que se le substrae 3, dando 101, que equivale a una e. despues, se le incrementa el valor para obtener l, l, y o.
Y ese tipo de operaciones sucesivamente...
Creo que más o menos es algo así la forma en la que trabaja.
Aquí lo explican detalladamente:
https://esolangs.org/wiki/Brainfuck
Saludos.