iniciar-programa
define-nueva-instruccion  camina(u) como inicio
repetir u veces inicio
si frente-libre entonces avanza;
fin;
fin;
        define-nueva-instruccion cuenta(n) como inicio
        si junto-a-zumbador entonces inicio
        coge-zumbador;
        cuenta(sucede(n));
        fin
        sino inicio
        si frente-libre entonces inicio
        mientras no-junto-a-zumbador y frente-libre hacer avanza;
        cuenta(0);
        fin
        sino inicio
       mientras no orientado-al-este   hacer gira-izquierda;
       si frente-libre entonces inicio
       si frente-libre entonces avanza;
       mientras no orientado-al-sur hacer gira-izquierda;
       mientras frente-libre hacer avanza;
       mientras no orientado-al-norte hacer gira-izquierda;
       mientras frente-libre y no-junto-a-zumbador hacer avanza;
       cuenta(0);
       fin
       sino inicio
       si frente-bloqueado entonces inicio
       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-oeste hacer gira-izquierda;
       mientras frente-libre hacer avanza;
        fin;
             fin;
             fin;
              si si-es-cero(precede (n)) entonces inicio
              deja-zumbador;
              fin;
              si si-es-cero (precede (precede(n))) entonces inicio
              mientras no orientado-al-este hacer gira-izquierda;
              camina(1);
              mientras no-orientado-al-oeste hacer gira-izquierda;
              repetir 2 veces inicio
              deja-zumbador;
             camina(1);
                fin;
                 fin;
                  si si-es-cero (precede(precede (precede(n)))) entonces inicio
              mientras no orientado-al-este hacer gira-izquierda;
              camina(2);
              mientras no-orientado-al-oeste hacer gira-izquierda;
              repetir 3 veces inicio
              deja-zumbador;
             camina(1);
                fin;
                 fin;
                  si si-es-cero (precede(precede(precede (precede(n))))) entonces inicio
              mientras no orientado-al-este hacer gira-izquierda;
              camina(3);
              mientras no-orientado-al-oeste hacer gira-izquierda;
              repetir 4 veces inicio
              deja-zumbador;
             camina(1);
                fin;
                 fin;
                  si si-es-cero (precede(precede(precede(precede (precede(n)))))) entonces inicio
              mientras no orientado-al-este hacer gira-izquierda;
              camina(4);
              mientras no-orientado-al-oeste hacer gira-izquierda;
              repetir 5 veces inicio
              deja-zumbador;
             camina(1);
                fin;
                 fin;
                  si si-es-cero (precede(precede(precede(precede(precede (precede(n))))))) entonces inicio
              mientras no orientado-al-este hacer gira-izquierda;
              camina(5);
              mientras no-orientado-al-oeste hacer gira-izquierda;
              repetir 6 veces inicio
              deja-zumbador;
             camina(1);
                fin;
                 fin;
                  si si-es-cero (precede(precede(precede(precede(precede(precede (precede(n)))))))) entonces inicio
              mientras no orientado-al-este hacer gira-izquierda;
              camina(6);
              mientras no-orientado-al-oeste hacer gira-izquierda;
              repetir 7 veces inicio
              deja-zumbador;
             camina(1);
                fin;
                 fin;
                  si si-es-cero (precede(precede(precede(precede(precede(precede(precede (precede(n))))))))) entonces inicio
              mientras no orientado-al-este hacer gira-izquierda;
              camina(7);
              mientras no-orientado-al-oeste hacer gira-izquierda;
              repetir 8 veces inicio
              deja-zumbador;
             camina(1);
                fin;
                 fin;
                  si si-es-cero (precede(precede(precede(precede(precede(precede(precede(precede (precede(n)))))))))) entonces inicio
              mientras no orientado-al-este hacer gira-izquierda;
              camina(8);
              mientras no-orientado-al-oeste hacer gira-izquierda;
              repetir 9 veces inicio
              deja-zumbador;
             camina(1);
                fin;
                 fin;
                  si si-es-cero (precede(precede(precede(precede(precede(precede(precede(precede(precede (precede(n))))))))))) entonces inicio
              mientras no orientado-al-este hacer gira-izquierda;
              camina(9);
              mientras no-orientado-al-oeste hacer gira-izquierda;
              repetir 10 veces inicio
              deja-zumbador;
             camina(1);
                fin;
                 fin;
fin;
             fin;


    inicia-ejecucion
    mientras frente-libre y no junto-a-zumbador hacer avanza;
    cuenta(0);
        apagate;
    termina-ejecucion
finalizar-programa
