iniciar-programa
define-nueva-instruccion gira(n) como inicio
    repetir n veces gira-izquierda;
fin;
define-nueva-instruccion terreno(n) como inicio
    si no-junto-a-zumbador entonces inicio
       si derecha-bloqueada entonces inicio
          avanza;
       fin
       sino inicio
           gira(3);
           avanza;
       fin;
       terreno(sucede(n));
    fin
    sino inicio
        coge-zumbador;
        gira(1);
        avanza;
        gira(3);
        avanza;
        repetir sucede(n) veces deja-zumbador;
        gira(2);
        repetir 3 veces avanza;
        repetir sucede(n) veces deja-zumbador;
    fin;
fin;
define-nueva-instruccion postes(n) como inicio
    si junto-a-zumbador entonces inicio
       coge-zumbador;
       postes(sucede(n));
    fin
    sino inicio
        repetir n veces deja-zumbador;
        avanza;
        gira(2);
        repetir n veces coge-zumbador;
    fin;
fin;
define-nueva-instruccion poste_s(n) como inicio
    si junto-a-zumbador entonces inicio
       avanza;
       gira(2);
       postes(0);
       poste_s(sucede(n));
    fin
    sino inicio
        avanza;
        avanza;
        repetir n veces deja-zumbador;
    fin;
fin;
define-nueva-instruccion vallas(k) como inicio
    si junto-a-zumbador entonces inicio
       coge-zumbador;
       vallas(sucede(k));
    fin
    sino inicio
        repetir k veces deja-zumbador;
        avanza;
        gira(2);
        repetir k veces coge-zumbador;
    fin;
fin;
    inicia-ejecucion
    mientras no-orientado-al-norte hacer gira(1);
    avanza;
    gira(3);
    avanza;
    gira(1);
    deja-zumbador;
    avanza;
    terreno(0);
    gira(2);
    avanza;
    avanza;
    avanza;
    gira(2);
    poste_s(0);
    vallas(0);

        apagate;
    termina-ejecucion
finalizar-programa
