iniciar-programa
  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 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 regreso como
      inicio
          oeste;
          mientras frente-libre hacer avanza;
          norte;
          repetir 2 veces si frente-libre entonces avanza;
          este;
          mientras no junto-a-zumbador y frente-libre hacer avanza;
          si frente-bloqueado y no junto-a-zumbador entonces
              inicio
                  oeste;
                  mientras frente-libre hacer avanza;
                  sur;
                  mientras frente-libre hacer avanza;
                  norte;
                  apagate;
              fin;
          norte;
          mientras junto-a-zumbador y frente-libre hacer avanza;
          sur;
          si no junto-a-zumbador y frente-libre entonces avanza;
      fin;
  define-nueva-instruccion llevar como
      inicio
          oeste;
          mientras frente-libre hacer avanza;
          sur;
          mientras frente-libre hacer avanza;
          este;
      fin;
  define-nueva-instruccion juntar(i) como
      inicio
          si junto-a-zumbador entonces
              inicio
                  coge-zumbador;
                  juntar(sucede(i));
                  deja-zumbador;
                  si frente-libre entonces avanza;
              fin sino
                  inicio
                     llevar;                     
                 fin;
      fin;
    define-nueva-instruccion todo como
        inicio
            juntar(0);
            regreso;
            todo;
        fin;
    inicia-ejecucion
    norte;
    mientras frente-libre hacer avanza;
    todo;
        apagate;
    termina-ejecucion
finalizar-programa
