DarwinBotsManual
Abrir la app EnglishEN

ceilstore

Le pone un techo a una celda: si lo que tiene es mayor que el número, lo baja a ese número.

Datos

Palabra
ceilstore
Familia
Escritura en memoria
Pila entera
saca 2, pone 0
Qué hace
Saca una dirección y un valor, y deja en la celda el menor de los dos: es un techo. Con la dirección 0 el valor se pierde.
Costo
Store dividido por el divisor de cada uno, solo si escribe
División del costo
÷ 5
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
sí

v d ceilstore deja en la celda d el menor entre lo que tenía y v. Si la celda ya está por debajo de v, no cambia; si está por encima, queda en v. Es un techo, como ceil pero aplicado directamente sobre la memoria.

PalabraPila después
3030
.up30 1
ceilstore(vacía); .up vale como mucho 30

Como los stores son inmediatos, sirve para recortar una orden que ya escribiste en el mismo ciclo:

' avanza según la edad, pero nunca pide más de 30
cond
start
 *.robage .up store
 30 .up ceilstore
stop

Los primeros ciclos el bot pide 0, 1, 2… con .up, según su edad (.robage); desde el ciclo 31 pide siempre 30.

El nombre confunde un poco: «ceil» suena a redondear hacia arriba, pero acá quiere decir techo y se queda con el menor. Para poner un piso, el mayor, está floorstore. Combinado con addstore arma un acumulador con tope (hay un ejemplo en addstore).

Con la dirección 0 el valor se saca de la pila y se pierde. Como store, le avisa al sistema de lazos si escribís en .tieang1 o .tielen1.