DarwinBotsManual
Open the app EspañolES

All operators

OperatorFamilyWhat it does
<numero>Numbers and readsApila el número tal cual en la pila entera. El nombre de una sysvar sin asterisco apila su dirección.
*<numero> | *.<sysvar>Numbers and readsApila lo que hay en esa celda de memoria. Un sentido que escribe el motor lo leés en el ciclo siguiente.
addBasicSaca dos números y apila su suma. Arriba de 16.777.216 pierde precisión, y pasando los 2000 millones da la vuelta.
subBasicSaca dos números y apila el de abajo menos el de arriba. Con números enormes se comporta igual que add.
multBasicSaca dos números y apila su producto. Si pasa de 2000 millones, se queda en ±2000 millones.
divBasicSaca dos números y apila el de abajo dividido por el de arriba, redondeado al entero más cercano (al par en el empate). Dividir por 0 da 0.
rndBasicSaca un número n y apila uno al azar entre 0 y n, ambos incluidos. Con n negativo no es simétrico: −5 rnd da de −4 a −1.
*BasicSaca una dirección y apila lo que hay en esa celda. Fuera de 1 a 1000 se le saca el signo y se toma el resto de dividir por 1000; el 0 lee la 1000. Con la pila vacía lee la 1000.
modBasicSaca dos números y apila el resto de dividir el de abajo por el de arriba, con el signo del de abajo. Con divisor 0 da 0.
sgnBasicCambia el tope por su signo: −1 si es negativo, 0 si es cero y 1 si es positivo.
absBasicCambia el tope por su valor absoluto: le saca el signo.
dupBasicCopia el tope: a queda a a. Con la pila vacía apila dos ceros.
dropBasicSaca el tope y lo descarta. Con la pila vacía no hace nada.
clearBasicVacía la pila entera. La pila booleana no la toca.
swapBasicIntercambia los dos de arriba: a b queda b a. Con uno o ningún número no hace nada.
overBasicCopia arriba el segundo: a b queda a b a. Con un solo número apila un 0; con la pila vacía no hace nada.
angleAdvancedSaca un punto (x abajo, y arriba) y apila el ángulo desde el bot hasta él, en unidades de .aim (0 a unos 1256).
distAdvancedSaca un punto (x abajo, y arriba) y apila la distancia desde el bot hasta él, en el tamaño real del mundo. Se queda en 2000 millones como máximo.
ceilAdvancedSaca dos números y apila el menor. Arriba de 16.777.216 la comparación pierde precisión.
floorAdvancedSaca dos números y apila el mayor.
sqrAdvancedCambia el tope por su raíz cuadrada, redondeada al entero más cercano. Si no es positivo, da 0.
powAdvancedSaca dos números y apila el de abajo elevado al de arriba, redondeado. El exponente se recorta a ±10, base 0 da 0 y el resultado se queda en ±2000 millones.
pythAdvancedSaca dos números a y b y apila la raíz de a² + b², redondeada. Se queda en 2000 millones como máximo.
anglecmpAdvancedSaca dos ángulos a y b, en unidades de .aim, y apila a − b por el camino corto: de −628 a 628.
rootAdvancedSaca dos números a y b, les saca el signo y apila la raíz b-ésima de a, redondeada. Con b en 0 da 0.
logxAdvancedSaca dos números a y b, les saca el signo y apila el logaritmo de a en base b, redondeado. Con b menor que 2 o a en 0 da 0.
sinAdvancedCambia un ángulo en unidades de .aim por su seno multiplicado por 32000 y redondeado: de −32000 a 32000.
cosAdvancedCambia un ángulo en unidades de .aim por su coseno multiplicado por 32000 y redondeado: de −32000 a 32000.
debugintAdvancedAnota el tope de la pila entera en la traza del bot, sin sacarlo. No cuesta energía. Arriba de 16.777.216 el valor puede cambiar un poco.
debugboolAdvancedAnota el tope de la pila booleana en la traza del bot, sin sacarlo. No cuesta energía. Con la pila booleana vacía apila un verdadero.
~BitwiseCambia el tope por su complemento: da vuelta los 32 bits, así que x queda en −x − 1. Con la pila vacía deja −1.
&BitwiseSaca dos números y apila uno con prendidos solo los bits que están prendidos en los dos. Con la pila vacía da 0.
|BitwiseSaca dos números y apila uno con prendidos los bits que están prendidos en alguno de los dos. Con la pila vacía da 0.
^BitwiseSaca dos números y apila uno con prendidos los bits que están prendidos en uno solo de los dos. Con la pila vacía da 0.
++BitwiseCambia el tope por ese número más 1. En el borde de los 32 bits, 2147483647 ++ da 0.
--BitwiseCambia el tope por ese número menos 1. En el borde de los 32 bits, −2147483647 -- da 0.
-BitwiseCambia el signo del tope: 5 queda en −5. No resta; para restar está sub. Con la pila vacía deja 0.
<<BitwiseCorre los bits del tope un lugar a la izquierda: lo multiplica por 2. Con números enormes puede cambiar el signo, y 1073741824 << da 0.
>>BitwiseCorre los bits del tope un lugar a la derecha conservando el signo: lo divide por 2 redondeando hacia abajo. −1 >> sigue en −1.
<ComparisonsSaca dos números a b y apila verdadero si a, el de abajo, es menor que b. Con la pila vacía da falso.
>ComparisonsSaca dos números a b y apila verdadero si a, el de abajo, es mayor que b. Con la pila vacía da falso.
=ComparisonsSaca dos números y apila verdadero si son iguales. Con la pila vacía compara 0 con 0 y da verdadero.
!=ComparisonsSaca dos números y apila verdadero si son distintos. Con la pila vacía da falso.
%=ComparisonsSaca a b y apila verdadero si b está dentro del 10 % de a, límites incluidos. Con a negativo da siempre falso.
!%=ComparisonsSaca a b y apila verdadero si b se aleja más del 10 % de a: lo contrario de %=. Con a negativo da siempre verdadero.
~=ComparisonsSaca 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.
!~=ComparisonsSaca 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.
>=ComparisonsSaca dos números a b y apila verdadero si a, el de abajo, es mayor o igual que b. Con la pila vacía da verdadero.
<=ComparisonsSaca dos números a b y apila verdadero si a, el de abajo, es menor o igual que b. Con la pila vacía da verdadero.
andLogicSaca dos valores de la pila booleana y apila verdadero si los dos lo son. Con uno solo lo deja igual; con la pila vacía apila verdadero.
orLogicSaca dos valores de la pila booleana y apila verdadero si alguno lo es. Con uno solo, o con la pila vacía, apila verdadero.
xorLogicSaca dos valores de la pila booleana y apila verdadero si exactamente uno lo es. Con uno solo lo invierte; con la pila vacía apila falso.
notLogicInvierte el tope de la pila booleana. Con la pila vacía apila falso, porque la vacía cuenta como verdadera.
trueLogicApila un verdadero en la pila booleana.
falseLogicApila un falso en la pila booleana.
dropboolLogicSaca el tope de la pila booleana y lo descarta. Con la pila vacía no hace nada.
clearboolLogicVacía la pila booleana. La pila entera no la toca.
dupboolLogicCopia el tope de la pila booleana. Con la pila vacía no hace nada, a diferencia de dup.
swapboolLogicIntercambia los dos de arriba de la pila booleana. Con uno o ningún valor no hace nada.
overboolLogicCopia arriba el segundo de la pila booleana: a b queda a b a. Con un solo valor apila verdadero; con la pila vacía no hace nada.
storeWriting to memorySaca una dirección y un valor, y escribe el valor en esa celda, recortado a ±32000 de forma circular: 32001 queda en 1. Con la dirección 0 no escribe, no cobra y el valor queda en la pila.
incWriting to memorySaca una dirección y le suma 1 a esa celda. Pasando 32000 vuelve a 1. Con la dirección 0 no hace nada.
decWriting to memorySaca una dirección y le resta 1 a esa celda. No se frena en 0, y por debajo de −32000 vuelve a −1. Con la dirección 0 no hace nada.
addstoreWriting to memorySaca una dirección y un valor, y le suma el valor a esa celda, recortado a ±32000 de forma circular. Con la dirección 0 el valor queda en la pila.
substoreWriting to memorySaca una dirección y un valor, y deja en la celda lo que tenía menos el valor, recortado a ±32000 de forma circular. Con la dirección 0 el valor queda en la pila.
multstoreWriting to memorySaca una dirección y un valor, y multiplica la celda por el valor, recortado a ±32000 de forma circular. Con la dirección 0 el valor queda en la pila.
divstoreWriting to memorySaca una dirección y un valor, y divide la celda por el valor, redondeando al entero más cercano (en el empate, al par). Dividir por 0 la deja en 0. Con la dirección 0 el valor se pierde.
ceilstoreWriting to memorySaca 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.
floorstoreWriting to memorySaca una dirección y un valor, y deja en la celda el mayor de los dos: es un piso. Con la dirección 0 el valor se pierde.
rndstoreWriting to memorySaca una dirección y cambia la celda por un número al azar entre 0 y lo que tenía, ambos incluidos. Con −5 da de −5 a 0.
sgnstoreWriting to memorySaca una dirección y deja en la celda solo su signo: −1, 0 o 1.
absstoreWriting to memorySaca una dirección y le quita el signo a la celda: −77 pasa a 77.
sqrstoreWriting to memorySaca una dirección y deja en la celda su raíz cuadrada, redondeada al entero más cercano. Si tenía 0 o un negativo, queda en 0.
negstoreWriting to memorySaca una dirección y le invierte el signo a la celda: 20 pasa a −20.
condFlowCierra el gen anterior y abre uno nuevo con su zona de condiciones. Vacía la pila booleana. Ahí corre todo, pero los stores no escriben.
startFlowAbre el cuerpo del gen. Tras un cond, vacía la pila booleana y corre solo si todas las condiciones dan verdadero (o no hay ninguna). Sin cond delante, abre un gen sin condiciones.
elseFlowAbre el cuerpo del «si no»: corre solo si las condiciones del gen dieron falso. Después de un start sin cond, de un stop o de otro else, no corre nunca.
stopFlowCierra el gen: hasta el próximo cond, start o else no se ejecuta nada. No vacía la pila booleana, salvo que cierre directamente las condiciones de un cond.
endFlowCorta la ejecución del ADN en ese ciclo: lo que viene después no corre. El motor agrega uno al final al cargar el bot.