iniciar-programa
    define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
    define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gira-izquierda;
    define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
    define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;

    define-nueva-instruccion tortuga(e) como
    inicio
       si junto-a-zumbador entonces
       inicio
           coge-zumbador;
           tortuga(sucede(e));
       fin sino
       inicio
          repetir 2 veces avanza;
          este;
          mientras no-junto-a-zumbador hacer avanza;
          si no-junto-a-zumbador y frente-bloqueado entonces
          inicio
              oeste;
              mientras frente-libre hacer avanza;
              este;
          fin sino coge-zumbador;
          mientras frente-libre hacer
          inicio
          repetir e veces si frente-libre entonces avanza;
          deja-zumbador;
          fin;
       fin;
    fin;

    define-nueva-instruccion regresa como
    inicio
        oeste;
        mientras frente-libre hacer avanza;
        sur;
        avanza;
        norte;
    fin;

    define-nueva-instruccion conejo(n) como
    inicio
        si junto-a-zumbador entonces
        inicio
            coge-zumbador;
            conejo(sucede(n));
         fin sino
         inicio
             repetir 2 veces avanza;
             este;
             mientras frente-libre hacer
             inicio
                 repetir n veces si frente-libre entonces avanza;
                 deja-zumbador;
             fin;
         fin;
    fin;

    define-nueva-instruccion sumar(n) como
    inicio
        si  junto-a-zumbador y no-orientado-al-sur entonces
        inicio
            coge-zumbador;
            sumar(sucede(n));
        fin sino
        inicio
           repetir n veces deja-zumbador;
           si frente-libre entonces
           inicio
               avanza;
                mientras no-junto-a-zumbador y frente-libre hacer avanza;
                sumar(n);
           fin sino sur;
        fin;
    fin;

define-nueva-instruccion segundos(n) como
inicio
  si junto-a-zumbador y orientado-al-este entonces
    inicio
      coge-zumbador;
      segundos(sucede(n));
    fin
  sino
   inicio
     sur;
     avanza;
     repetir n veces
       inicio
         si junto-a-zumbador entonces coge-zumbador
         sino norte;
       fin;
     si no-orientado-al-norte entonces
       inicio
         si no-junto-a-zumbador entonces
           inicio
             sur;
             mientras frente-libre hacer avanza;
             oeste;
             mientras frente-libre hacer avanza;
             sur;
             mientras frente-libre hacer avanza;
             repetir n veces deja-zumbador;
           fin;
       fin;
   fin;
fin;



    define-nueva-instruccion coincidencia como
    inicio
        mientras frente-libre hacer
        inicio
           mientras frente-libre y no-junto-a-zumbador hacer avanza;
           si junto-a-zumbador entonces segundos(0);
           si frente-libre entonces avanza sino apagate;
           este;
        fin;
    fin;



    define-nueva-instruccion carrera como
    inicio
       avanza;
       tortuga(0);
       regresa;
       conejo(0);
       regresa;
       este;
       mientras no-junto-a-zumbador y frente-libre hacer avanza;
       sumar(0);
       regresa;
       repetir 2 veces avanza;
       este;
       mientras no-junto-a-zumbador y frente-libre  hacer avanza;
       sumar(0);
       oeste;
       mientras frente-libre hacer avanza;
       este;
       coincidencia;
    fin;


   inicia-ejecucion
        carrera;
        apagate;
    termina-ejecucion
finalizar-programa
