Virgobot Demon Trail
Semilla 0 XP
◆ 0
Esto es lo que Virgo va a ejecutar

      
normal
01

Primer paso

Secuencia

◇ 0 ⚿ 0 → 0

Misión cumplida

Comandos de Virgo

Órdenes

ComandoQué hace
avanzar()Da un paso hacia donde mira. Truena si hay pared.
girar_izquierda()Gira 90° a la izquierda sin moverse de casilla.
girar_derecha()Gira 90° a la derecha sin moverse de casilla.
recoger()Levanta la gema o la llave de la casilla actual.
soltar()Deja una gema de la mochila donde está parado.
abrir_puerta()Abre la puerta de enfrente. Necesita una llave.
pintar()Marca la casilla actual.
decir(algo)Virgo lo dice en un globo. Sirve para reportar resultados.

Preguntas

ComandoQué contesta
hay_pared()¿Hay pared justo enfrente?
hay_pared_derecha()También hay_pared_izquierda() y hay_pared_atras().
hay_gema()¿Hay una gema en esta casilla?
color_gema()El color de la gema de aquí: "roja", "azul", "amarilla" o "blanca".
hay_llave()¿Hay una llave aquí?
hay_puerta()¿Hay una puerta enfrente?
hay_meta()¿Ya estoy en el portal?
hay_senal()¿Hay una señal en esta casilla?
leer_senal()Lo que dice la señal. Suele ser un número.
esta_pintado()¿Ya pinté esta casilla?
gemas()Cuántas gemas trae (un número).
mochila()La lista de colores que trae, en orden.
llaves()Cuántas llaves trae.
mirando_norte()También sur, este y oeste.

Python que Virgobot entiende

Se comporta como Python de verdad: 4 / 2 vale 2.0, las funciones tienen su propio alcance, y las listas se pasan por referencia. Hay 32 fragmentos de prueba que corren aquí y en el Python del sistema y tienen que dar exactamente lo mismo.

Datos: enteros, decimales, textos, booleanos, None, listas, tuplas y diccionarios. Rebanadas a[1:5:2], f-strings, desempaquetado a, b = b, a.

Control: if/elif/else, while, for … in, break, continue, comparaciones encadenadas 0 < x < 10, in, not in, is.

Funciones: def con parámetros, valores por defecto, return de varios valores, recursión y global.

Integradas: print, range, len, str, int, float, bool, list, tuple, dict, abs, round, min, max, sum, enumerate, zip, sorted, reversed, type.

def doble(n):
    return n * 2

ruta = [3, 2, 2]
for tramo in ruta:
    for i in range(doble(tramo) // 2):
        avanzar()
    girar_derecha()

Atajos

Ctrl+Enter ejecuta · Esc detiene · Tab sangra (Shift+Tab quita) · Ctrl+Shift+P activa el modo profesor.

Todo corre dentro de este navegador. No se sube nada a ningún servidor y funciona sin internet; tu avance se guarda en tu propia computadora.

Tu avance

Mis funciones