Comparaciones
Las preguntas del ADN: sacan números de la pila entera y dejan un verdadero o un falso en la booleana. Igual, distinto, mayor, menor y las comparaciones aproximadas.
Costo: Condición
| Operador | Qué hace |
|---|---|
< | a b < deja verdadero si a es menor que b. La comparación de «todavía no llegó a». |
> | a b > deja verdadero si a es mayor que b. Es la de *.eye5 0 >, «veo algo». |
= | a b = deja verdadero si los dos números son iguales. La de *.eye5 0 =, «no veo nada». |
!= | a b != deja verdadero si los dos números son distintos. La de *.refeye *.myeye !=, «no es de los míos». |
%= | a b %= deja verdadero si b está dentro del 10 % de a, límites incluidos. Con a negativo da siempre falso. |
!%= | a b !%= deja verdadero si b se aleja más de un 10 % de a. Es la negación exacta de %=, así que con a negativo da siempre verdadero. |
~= | 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. |
!~= | 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. |
>= | a b >= deja verdadero si a es mayor o igual que b: como >, pero el límite también cuenta. |
<= | a b <= deja verdadero si a es menor o igual que b: como <, pero el límite también cuenta. |
Cada comparación saca números de la pila entera y deja un resultado, verdadero o falso, en la pila booleana. Se leen de izquierda a derecha: a b > pregunta «¿a es mayor que b?». Hay tres grupos:
- Exactas:
=,!=,<,>,<=y>=. Son las que más vas a usar. - Aproximadas al 10 %:
%=y!%=, para valores que oscilan y no conviene comparar exacto. - Aproximadas con porcentaje propio:
~=y!~=, que sacan un tercer número con el margen.
Casi siempre van entre cond y start, donde todas las que pongas se unen con un y: el cuerpo del gen corre solo si todas son verdaderas (lo cuenta Genes: cond, start, else y stop). Así se arma un rango con dos comparaciones. Este gen corre solo entre los ciclos 10 y 20 de vida del bot (.robage), ambos incluidos, y cuenta en la celda 50 cuántas veces corrió (11):
cond
*.robage 10 >=
*.robage 20 <=
start
50 inc
stopPara pedir «esto o aquello» hay que combinarlas con or; los demás lógicos están en Lógicos. Una comparación también puede ir dentro del cuerpo, y entonces decide si corren los stores que la siguen: eso es Condiciones en línea.
Ninguna falla: si a la pila entera le faltan números, comparan ceros. Por eso = sobre una pila vacía da verdadero (0 es igual a 0) y < da falso.
Cada comparación ejecutada cobra el costo Condición de la configuración del escenario.