inc
Le suma 1 a una celda de memoria: el contador más barato del ADN.
Datos
- Palabra
inc- Familia
- Escritura en memoria
- Pila entera
- saca 1, pone 0
- Qué hace
- Saca una dirección y le suma 1 a esa celda. Pasando 32000 vuelve a 1. Con la dirección 0 no hace nada.
- Costo
- Store dividido por el divisor de cada uno, solo si escribe
- División del costo
- ÷ 10
- Se ejecuta en
- en el cuerpo de un gen (start o else) y solo si el tope de la pila booleana es verdadero o está vacía
- Marca lazos
- no
d inc saca la dirección d y le suma 1 a lo que haya en esa celda. No toma ningún valor de la pila: 50 inc es lo mismo que *50 1 add 50 store, pero en dos palabras y por la décima parte del costo de un store.
| Palabra | Pila después |
|---|---|
50 | 50 |
inc | (vacía); la celda 50 vale uno más |
El uso típico es contar ciclos en la memoria libre, que no se borra entre un ciclo y otro:
' cuenta los ciclos en la celda 50 y cada 10 gira
start
50 inc
stop
cond
*50 10 >=
start
0 50 store
100 .aimdx store
stopLa celda 50 va de 1 a 9; en el décimo ciclo llega a 10, el segundo gen la vuelve a 0 y el bot gira 100 con .aimdx. Así, gira una vez cada 10 ciclos.
Dos cosas a tener en cuenta:
- Si dejás que cuente sin límite, después de 32000 no sigue ni pasa a negativo: vuelve a 1.
- Sobre
.tieang1o.tielen1cambia el número, pero el lazo no se entera. Para esas celdas usá1 .tieang1 addstore(ver Escribir en la memoria).