iniciar-programa
define-nueva-instruccion gira(n) como inicio
repetir n veces gira-izquierda;
fin;

define-nueva-instruccion cheka2(z) como inicio
si junto-a-zumbador entonces inicio
    coge-zumbador;
    cheka2(precede(z));
    deja-zumbador;
fin sino inicio
    si no si-es-cero (z) entonces inicio
        deja-zumbador;
    fin;
fin;
fin;

define-nueva-instruccion cheka(l) como inicio
si junto-a-zumbador entonces   inicio
    coge-zumbador;
    cheka(precede(l));
    deja-zumbador;
fin sino inicio
    si si-es-cero (l) entonces inicio
    mientras no orientado-al-este hacer
    gira-izquierda;
    si frente-libre entonces inicio
    avanza;
    si no junto-a-zumbador entonces   inicio
        deja-zumbador;
    fin sino inicio
        cheka2(9);
    fin;
    mientras no orientado-al-sur hacer
    gira-izquierda;
    si frente-libre entonces inicio
    avanza;
        si no junto-a-zumbador entonces inicio
            deja-zumbador;
        fin sino inicio
            cheka2(9);
        fin;
        mientras no orientado-al-norte hacer
        gira-izquierda;
        avanza;
    fin;
    mientras no orientado-al-oeste  hacer
    gira-izquierda;
    avanza;

    fin;
    mientras no orientado-al-este hacer
    gira-izquierda;
    mientras no orientado-al-oeste hacer
    gira-izquierda;
    si frente-libre entonces inicio
    avanza;
    si no junto-a-zumbador entonces   inicio
        deja-zumbador;
    fin sino inicio
        cheka2(9);
    fin;
    mientras no orientado-al-norte hacer
    gira-izquierda;
    si frente-libre entonces inicio
    avanza;
        si no junto-a-zumbador entonces inicio
            deja-zumbador;
        fin sino inicio
            cheka2(9);
        fin;
        mientras no orientado-al-sur hacer
        gira-izquierda;
        avanza;
    fin;
    mientras no orientado-al-este  hacer
    gira-izquierda;
    avanza;

    fin;
    mientras no orientado-al-este hacer
    gira-izquierda;
    mientras no orientado-al-sur hacer
    gira-izquierda;
    si frente-libre entonces inicio
    avanza;
    si no junto-a-zumbador entonces   inicio
        deja-zumbador;
    fin sino inicio
        cheka2(9);
    fin;
    mientras no orientado-al-oeste hacer
    gira-izquierda;
    si frente-libre entonces inicio
    avanza;
        si no junto-a-zumbador entonces inicio
            deja-zumbador;
        fin sino inicio
            cheka2(9);
        fin;
        mientras no orientado-al-este hacer
        gira-izquierda;
        avanza;
    fin;
    mientras no orientado-al-norte  hacer
    gira-izquierda;
    avanza;

    fin;
    mientras no orientado-al-este hacer
    gira-izquierda;
    mientras no orientado-al-norte hacer
    gira-izquierda;
    si frente-libre entonces inicio
    avanza;
    si no junto-a-zumbador entonces   inicio
        deja-zumbador;
    fin sino inicio
        cheka2(9);
    fin;
    mientras no orientado-al-este hacer
    gira-izquierda;
    si frente-libre entonces inicio
    avanza;
        si no junto-a-zumbador entonces inicio
            deja-zumbador;
        fin sino inicio
            cheka2(9);
        fin;
        mientras no orientado-al-oeste hacer
        gira-izquierda;
        avanza;
    fin;
    mientras no orientado-al-sur  hacer
    gira-izquierda;
    avanza;

    fin;
    mientras no orientado-al-este hacer
    gira-izquierda;
    fin;
fin;
fin;


define-nueva-instruccion busca como inicio
mientras frente-libre o izquierda-libre hacer inicio

     si junto-a-zumbador entonces inicio
         cheka(9);
         si frente-libre entonces   inicio
          avanza;
       fin sino inicio
          gira(2);
          mientras frente-libre hacer
          avanza;
          gira(3);
          avanza;
          gira(3);
      fin;
     fin sino inicio
       si frente-libre entonces   inicio
          avanza;
       fin sino inicio
          gira(2);
          mientras frente-libre hacer
          avanza;
          gira(3);
          avanza;
          gira(3);
      fin;
    fin;

fin;
fin;

    inicia-ejecucion
    mientras no orientado-al-oeste hacer
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    mientras no orientado-al-sur hacer
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    mientras no orientado-al-este hacer
    gira-izquierda;
    busca;
    cheka(9);
        apagate;
    termina-ejecucion
finalizar-programa
