!~=
a b d !~= deja verdadero si b se aleja más de un d % de a. Es la negación de ~= y también 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 se aleja más del d % de a. Si uno solo de a y d es negativo, da siempre verdadero.
- 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 !~= saca tres números y apila verdadero cuando b no está dentro del d % de a. Es lo contrario de ~=: 100 130 25 !~= es verdadero y 100 120 25 !~= es falso. La referencia es a, el de más abajo, y el porcentaje va arriba.
Sirve para reaccionar a cambios grandes e ignorar los chicos. Este bot cuenta en la celda 51 los ciclos en que lo que ve el ojo del medio (.eye5) cambió más de un 5 % respecto del ciclo anterior, que guarda en la 50:
' cuenta los ciclos en que lo que ve cambió más de un 5 %
cond
*50 *.eye5 5 !~=
start
51 inc
stop
cond
start
*.eye5 50 store
stopFuera del caso de los números enormes que se cuenta abajo, ~= y !~= son complementarios: si le ponés al bot este contador y el de la página de ~=, en cada ciclo suma exactamente uno de los dos.
Como es la negación, hereda al revés las rarezas de ~=: si la referencia o el porcentaje es negativo (uno solo de los dos), da siempre verdadero. Y tiene una diferencia propia: el margen calculado se planta en dos mil millones, cosa que ~= no hace. Solo importa con números enormes, de los que no entran en la memoria; en ese caso ~= y !~= pueden dar los dos verdadero a la vez.
El bot Chaotic Swarm ver 1.2 (SA), del Bestiario, usa !~= con un margen del 5 % para decidir si lo que ve cada ojo cambió. La versión al 10 % fijo es !%=.