DarwinBotsManual
Abrir la app EnglishEN

%=

a b %= deja verdadero si b está dentro del 10 % de a, límites incluidos. Con a negativo da siempre falso.

Datos

Palabra
%=
Familia
Comparaciones
Pila entera
saca 2, pone 0
Pila booleana
saca 0, pone 1
Qué hace
Saca a b y apila verdadero si b está dentro del 10 % de a, límites incluidos. Con a negativo da siempre falso.
Costo
Condición
Se ejecuta en
dentro de un gen: en la condición (cond) y en el cuerpo (start o else)

a b %= es un «más o menos igual»: apila verdadero si b está a no más de un 10 % de a, para arriba o para abajo. El número de abajo, a, es la referencia, y el margen se calcula sobre él:

Pila antesResultadoPor qué
100 109verdaderoel margen es 90 a 110
100 110verdaderolos límites cuentan
100 111falsose pasa
15 16verdaderoel margen es 13,5 a 16,5: no se redondea
0 0verdaderocon referencia 0, solo vale 0
-100 -100falsover abajo

Sirve para valores que oscilan y que nunca van a coincidir exacto, como la energía, la velocidad o una lectura de ojo. Este gen cuenta en la celda 50 los ciclos en que la energía (.nrg) está entre 2700 y 3300:

' cuenta los ciclos con la energía cerca de 3000
cond
  3000 *.nrg %=
start
  50 inc
stop

Fijate en el orden: la referencia, 3000, va abajo. *.nrg 3000 %= mediría el 10 % de la energía, que cambia con ella.

Si el margen tiene que ser otro, usá ~=, que recibe el porcentaje. Lo contrario es !%=. Con la pila entera vacía compara 0 con 0 y da verdadero.