DarwinBotsManual
Abrir la app EnglishEN

~=

a b d ~= deja verdadero si b está dentro del d % de a: un «más o menos igual» con el margen que elijas. Saca tres números.

Datos

Palabra
~=
Familia
Comparaciones
Pila entera
saca 3, pone 0
Pila booleana
saca 0, pone 1
Qué hace
Saca tres números a b d y apila verdadero si b está dentro del d % de a. Si uno solo de a y d es 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 d ~= es como %= pero con el porcentaje a elección: saca tres números y apila verdadero si b está a no más de un d % de a. La referencia es a, el de más abajo; el porcentaje va arriba.

Pila antesResultadoPor qué
100 120 25verdaderoel margen es 75 a 125
100 130 25falsose pasa
1000 1015 1falsoel 1 % de 1000 es 10
100 120 -25falsoporcentaje negativo
-100 -100 5falsoreferencia negativa

100 b 10 ~= es lo mismo que 100 b %=. Los límites cuentan y el margen no se redondea.

Sirve para detectar si una lectura cambió «de verdad» o solo tembló. Este bot guarda en la celda 50 lo que veía el ojo del medio (.eye5) y cuenta en la 51 los ciclos en que lo que ve ahora se parece, dentro de un 5 %, a lo del ciclo anterior:

' cuenta los ciclos en que lo que ve no cambió más de un 5 %
cond
  *50 *.eye5 5 ~=
start
  51 inc
stop

cond
start
  *.eye5 50 store
stop

El gen que guarda va después del que compara, así la celda 50 todavía tiene el valor viejo cuando se la lee.

Si te olvidás del porcentaje, ~= igual saca tres números: toma como referencia lo que haya más abajo en la pila, o 0 si está vacía. Lo contrario es !~=.