iniciar-programa
define-nueva-instruccion turnright como repetir 3 veces gira-izquierda;
define-nueva-instruccion halfturn como repetir 2 veces gira-izquierda;
define-nueva-instruccion backmove como
inicio
    halfturn;
    avanza;
fin;
define-nueva-instruccion leftmove como
inicio
    gira-izquierda;
    avanza;
fin;
define-nueva-instruccion camina-a-pared como
inicio
    mientras frente-libre hacer avanza

fin;
define-nueva-instruccion colocamonton como
inicio
    mientras algun-zumbador-en-la-mochila hacer deja-zumbador
fin;                                                          
define-nueva-instruccion cuentahombres como
inicio
    mientras junto-a-zumbador hacer
    inicio
        gira-izquierda;
        mientras junto-a-zumbador hacer
        inicio
            coge-zumbador;
            si no junto-a-zumbador entonces deja-zumbador;
            avanza;
        fin;
        halfturn;
        camina-a-pared;
        backmove;
        turnright;
        avanza;
    fin;
    halfturn;
    camina-a-pared;
    leftmove;
    leftmove;
    colocamonton;
fin;

define-nueva-instruccion cuentamujeres como
inicio
    mientras junto-a-zumbador hacer
    inicio
        gira-izquierda;
        mientras junto-a-zumbador hacer
        inicio
            coge-zumbador;
            avanza;
        fin;
        halfturn;
        camina-a-pared;
        backmove;
        turnright;
        avanza;
    fin;
    halfturn;
    camina-a-pared;
    gira-izquierda;
    avanza;
    colocamonton;
fin;
 define-nueva-instruccion resta como
 inicio
     si junto-a-zumbador entonces
     inicio
         coge-zumbador;
         leftmove;
         coge-zumbador;
         backmove;
         gira-izquierda;
         resta;
         deja-zumbador;
     fin;
 fin;

    inicia-ejecucion
    avanza;
    turnright;
    cuentahombres;
    leftmove;
    leftmove;
    halfturn;
    cuentamujeres;
    leftmove;
    gira-izquierda;
    resta;
        apagate;
    termina-ejecucion
finalizar-programa
