iniciar-programa
define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;
define-nueva-instruccion regresa como
inicio
    gira(2);
    avanza;
    gira(2);
fin;
define-nueva-instruccion busca2 como mientras no-junto-a-zumbador y frente-libre hacer avanza;
define-nueva-instruccion busca1 como
inicio
    mientras frente-libre hacer avanza;
    gira(2);
    mientras no-junto-a-zumbador y frente-libre hacer avanza;
fin;
define-nueva-instruccion regresa-a-buscar como
inicio
    mientras no-orientado-al-sur hacer gira(1);
    mientras frente-libre hacer avanza;
    gira(3);
fin;
define-nueva-instruccion posiciona como
inicio
    gira(3);
    mientras junto-a-zumbador hacer avanza;
    regresa;
fin;
define-nueva-instruccion xeka1 como
inicio
    gira(1);
    avanza;
    gira(3);
    repetir 2 veces avanza;
fin;
define-nueva-instruccion xeka2 como
inicio
    posiciona;
    repetir 2 veces avanza;
    si junto-a-zumbador entonces xeka1 sino
    inicio
        gira(2);
        mientras no-junto-a-zumbador hacer avanza;
        gira(2);
        xeka1;
    fin;
fin;
define-nueva-instruccion marca como
inicio
    mientras junto-a-zumbador hacer avanza;
    regresa;
    gira(2);
    avanza;
    coge-zumbador;
    mientras frente-libre hacer avanza;
    deja-zumbador;
    gira(3);
fin;
define-nueva-instruccion derrumba como
inicio
    coge-zumbador;
    gira(3);
    avanza;
    gira(3);
    busca2;
    regresa;
    deja-zumbador;
fin;
define-nueva-instruccion erosiona como
si frente-libre entonces
inicio
    busca2;
    si frente-libre entonces
    inicio
        coge-zumbador;
        si junto-a-zumbador entonces
        inicio
            posiciona;
            avanza;
            deja-zumbador;
            avanza;
            derrumba;
            regresa-a-buscar;
            si frente-libre entonces
            inicio
                avanza;
                erosiona;
            fin;
        fin
        sino
        inicio
            deja-zumbador;
            si frente-libre entonces
            inicio
                avanza;
                erosiona;
            fin;
        fin;
    fin;
fin;
define-nueva-instruccion casa como
inicio
    mientras no-orientado-al-sur hacer gira(1);
    mientras frente-libre hacer avanza;
    gira(3);
    mientras frente-libre hacer avanza;
    deja-zumbador;
    gira(2);
fin;
define-nueva-instruccion busca-montanas como
inicio
    busca2;
    si frente-libre entonces xeka2;
    si junto-a-zumbador y frente-libre entonces marca sino regresa-a-buscar;
    si frente-bloqueado entonces casa sino busca-montanas;

fin;
define-nueva-instruccion era como
si algun-zumbador-en-la-mochila entonces
inicio
    busca1;
    busca-montanas;
    busca1;
    erosiona;
    gira(2);
    era;
fin;
    inicia-ejecucion

    gira(3);
    era;
    mientras junto-a-zumbador hacer coge-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
