DarwinBotsManual
Abrir la app EnglishEN

Todos los operadores

OperadorFamiliaQué hace
<numero>Números y lecturasUn número escrito en el ADN, o el nombre de una sysvar sin asterisco, se apila tal cual en la pila entera.
*<numero> | *.<sysvar>Números y lecturasUn asterisco pegado a un número o a una sysvar apila el contenido de esa celda de memoria: es la forma de leer los sentidos y tus propias variables.
addBásicosSuma los dos números de arriba de la pila entera y deja el resultado.
subBásicosResta el número de arriba de la pila al que está debajo: a b sub deja a − b.
multBásicosMultiplica los dos números de arriba de la pila entera; si el producto pasa de 2000 millones, se queda en ese tope.
divBásicosDivide el número de abajo por el de arriba y redondea al entero más cercano (al par en el empate); dividir por cero da 0.
rndBásicosCambia el número de arriba de la pila por uno al azar entre 0 y ese número, ambos incluidos.
*BásicosLee la memoria en una dirección calculada: saca una dirección de la pila y apila lo que hay en esa celda.
modBásicosDeja el resto de dividir el número de abajo por el de arriba, con el signo del dividendo; con divisor 0 da 0.
sgnBásicosCambia el número de arriba de la pila por su signo: −1 si es negativo, 0 si es cero y 1 si es positivo.
absBásicosCambia el número de arriba de la pila por su valor absoluto: le saca el signo.
dupBásicosDuplica el número de arriba de la pila entera, para usarlo dos veces sin volver a leerlo ni calcularlo.
dropBásicosSaca el número de arriba de la pila entera y lo descarta.
clearBásicosVacía la pila entera de un saque; la pila booleana no la toca.
swapBásicosIntercambia los dos números de arriba de la pila entera: a b swap deja b a.
overBásicosCopia arriba de todo el segundo número de la pila entera: a b over deja a b a.
angleAvanzadosDa el ángulo desde el bot hasta un punto x y, en las mismas unidades que .aim: listo para guardarlo en .setaim.
distAvanzadosDa la distancia en línea recta desde el bot hasta un punto x y.
ceilAvanzadosPone un techo: de los dos números de arriba de la pila deja el menor, así x 100 ceil nunca pasa de 100.
floorAvanzadosPone un piso: de los dos números de arriba de la pila deja el mayor, así x 0 floor nunca baja de 0.
sqrAvanzadosCambia el número de arriba de la pila por su raíz cuadrada redondeada; si no es positivo, da 0.
powAvanzadosEleva el número de abajo a la potencia del de arriba: 2 10 pow da 1024. El exponente se limita a ±10.
pythAvanzadosDa la hipotenusa de los dos números de arriba de la pila, la raíz de a² + b²: el largo de un vector.
anglecmpAvanzadosCompara dos ángulos y da la diferencia más corta entre ellos, con signo, entre −628 y 628: cuánto y hacia dónde girar.
rootAvanzadosDa la raíz b-ésima del número de abajo: 27 3 root da 3. Ignora los signos y, con b en 0, da 0.
logxAvanzadosDa el logaritmo del número de abajo en la base del de arriba, redondeado: 1000 10 logx da 3.
sinAvanzadosDa el seno de un ángulo en unidades de .aim, multiplicado por 32000: 314 sin da 32000.
cosAvanzadosDa el coseno de un ángulo en unidades de .aim, multiplicado por 32000: 0 cos da 32000.
debugintAvanzadosAnota el número de arriba de la pila entera para mirarlo desde la consola del bot, sin sacarlo y sin costo.
debugboolAvanzadosAnota el valor de arriba de la pila booleana para mirarlo desde la consola del bot, sin costo.
~Bit a bitInvierte todos los bits del número del tope: x ~ deja −x − 1, así que 5 ~ da −6 y 0 ~ da −1.
&Bit a bitY bit a bit de los dos números del tope: deja prendidos solo los bits que están prendidos en los dos. Sirve para consultar y apagar marcas.
|Bit a bitO bit a bit de los dos números del tope: deja prendido cada bit que esté prendido en alguno de los dos. Sirve para prender marcas.
^Bit a bitO exclusivo bit a bit de los dos números del tope: deja prendidos los bits que están en uno solo de los dos. Sirve para dar vuelta marcas.
++Bit a bitSuma 1 al número del tope de la pila entera, sin tocar la memoria: 5 ++ deja 6.
--Bit a bitResta 1 al número del tope de la pila entera, sin tocar la memoria: 5 -- deja 4 y 0 -- deja −1.
-Bit a bitEl signo menos suelto le cambia el signo al número del tope: 5 - deja −5. No resta; para restar está sub.
<<Bit a bitCorre los bits del número del tope un lugar a la izquierda, o sea lo multiplica por 2: 5 << deja 10.
>>Bit a bitCorre los bits del número del tope un lugar a la derecha conservando el signo: divide por 2 redondeando hacia abajo, así que 7 >> deja 3 y −5 >> deja −3.
<Comparacionesa b < deja verdadero si a es menor que b. La comparación de «todavía no llegó a».
>Comparacionesa b > deja verdadero si a es mayor que b. Es la de *.eye5 0 >, «veo algo».
=Comparacionesa b = deja verdadero si los dos números son iguales. La de *.eye5 0 =, «no veo nada».
!=Comparacionesa b != deja verdadero si los dos números son distintos. La de *.refeye *.myeye !=, «no es de los míos».
%=Comparacionesa b %= deja verdadero si b está dentro del 10 % de a, límites incluidos. Con a negativo da siempre falso.
!%=Comparacionesa 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.
~=Comparacionesa 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.
!~=Comparacionesa 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.
>=Comparacionesa b >= deja verdadero si a es mayor o igual que b: como >, pero el límite también cuenta.
<=Comparacionesa b <= deja verdadero si a es menor o igual que b: como <, pero el límite también cuenta.
andLógicosReemplaza los dos valores de arriba de la pila booleana por uno: verdadero solo si los dos lo son.
orLógicosReemplaza los dos valores de arriba de la pila booleana por uno: verdadero si alguno lo es. La única forma de pedir «esto o aquello».
xorLógicosReemplaza los dos valores de arriba de la pila booleana por uno: verdadero si exactamente uno de los dos lo es.
notLógicosInvierte el valor de arriba de la pila booleana: verdadero pasa a falso y falso a verdadero. Sobre la pila vacía da falso.
trueLógicosApila un verdadero en la pila booleana. Dentro del cuerpo de un gen, vuelve a habilitar los stores que una condición había frenado.
falseLógicosApila un falso en la pila booleana. En la condición de un gen lo apaga; en el cuerpo frena los stores que siguen.
dropboolLógicosSaca y descarta el valor de arriba de la pila booleana. Dentro del cuerpo, termina el efecto de una condición en línea.
clearboolLógicosVacía la pila booleana. Como vacía cuenta como verdadera, todos los stores que siguen vuelven a escribir.
dupboolLógicosDuplica el valor de arriba de la pila booleana. Sirve para guardar una condición y usarla de nuevo, por ejemplo para anidar condiciones en el cuerpo.
swapboolLógicosIntercambia los dos valores de arriba de la pila booleana. Permite calcular dos condiciones y elegir cuál manda en cada tramo del cuerpo.
overboolLógicosApila una copia del segundo valor de la pila booleana: a b pasa a a b a. Con un solo valor apila verdadero.
storeEscritura en memoriaGuarda un número en una dirección de memoria: así se dan todas las órdenes, como 20 .up store para avanzar.
incEscritura en memoriaLe suma 1 a una celda de memoria: el contador más barato del ADN.
decEscritura en memoriaLe resta 1 a una celda de memoria: la forma barata de llevar una cuenta regresiva.
addstoreEscritura en memoriaLe suma un número a lo que ya hay en una celda, sin tener que leerla antes.
substoreEscritura en memoriaLe resta un número a lo que ya hay en una celda: la celda menos el valor.
multstoreEscritura en memoriaMultiplica lo que hay en una celda por un número y guarda el resultado ahí mismo.
divstoreEscritura en memoriaDivide lo que hay en una celda por un número, redondeando al entero más cercano; dividir por 0 deja la celda en 0.
ceilstoreEscritura en memoriaLe pone un techo a una celda: si lo que tiene es mayor que el número, lo baja a ese número.
floorstoreEscritura en memoriaLe pone un piso a una celda: si lo que tiene es menor que el número, lo sube a ese número.
rndstoreEscritura en memoriaCambia lo que hay en una celda por un número al azar entre 0 y ese valor, con su mismo signo.
sgnstoreEscritura en memoriaCambia lo que hay en una celda por su signo: −1 si es negativo, 0 si es cero, 1 si es positivo.
absstoreEscritura en memoriaLe saca el signo a lo que hay en una celda: un negativo pasa a positivo.
sqrstoreEscritura en memoriaCambia lo que hay en una celda por su raíz cuadrada redondeada; si no es positivo, la deja en 0.
negstoreEscritura en memoriaLe cambia el signo a lo que hay en una celda: 20 pasa a −20 y −20 a 20.
condFlujoAbre un gen nuevo: vacía la pila booleana y empieza la zona de condiciones, que termina en start o else.
startFlujoCierra las condiciones del gen y abre su cuerpo, que corre si todas dieron verdadero; sin cond delante, corre siempre.
elseFlujoAbre el cuerpo alternativo de un gen, que corre cuando las condiciones del cond dieron falso.
stopFlujoCierra el gen: lo que sigue hasta el próximo marcador no se ejecuta.
endFlujoTermina el ADN: lo que venga después no se ejecuta. El motor agrega uno al final si no lo ponés.