iniciar-programa
  define-nueva-instruccion norte como inicio
      mientras no-orientado-al-norte hacer inicio
          gira-izquierda;
      fin;
  fin;
  define-nueva-instruccion oeste como inicio
      mientras no-orientado-al-oeste hacer inicio
          gira-izquierda;
      fin;
  fin;
  define-nueva-instruccion sur como inicio
      mientras no-orientado-al-sur hacer inicio
          gira-izquierda;
      fin;
  fin;
  define-nueva-instruccion este como inicio
      mientras no-orientado-al-este hacer inicio
          gira-izquierda;
      fin;
  fin;
  define-nueva-instruccion baja como inicio
      sur;
      mientras frente-libre y izquierda-bloqueada hacer inicio
          avanza;
      fin;
  fin;
  define-nueva-instruccion sube como inicio
      norte;
      mientras frente-libre y derecha-bloqueada hacer inicio
          avanza;
      fin;
  fin;
  define-nueva-instruccion camina como inicio
      si no-orientado-al-oeste y frente-libre entonces inicio
          avanza;
          si frente-bloqueado entonces inicio
              si derecha-libre y izquierda-bloqueada entonces inicio
                  baja;
                  si izquierda-bloqueada y derecha-bloqueada y frente-bloqueado entonces inicio
                      oeste;
                  fin sino inicio
                      este;
                  fin;
              fin sino inicio
                  si izquierda-libre entonces inicio
                      sube;
                      si izquierda-bloqueada y derecha-bloqueada y frente-bloqueado entonces inicio
                          oeste;
                      fin sino inicio
                          este;
                      fin;
                  fin sino inicio
                      oeste;
                  fin;
              fin;
          fin;
      fin sino inicio
          si no-orientado-al-oeste y derecha-libre entonces inicio
              baja;
              si izquierda-bloqueada y derecha-bloqueada y frente-bloqueado entonces inicio
                  oeste;
              fin sino inicio
                  este;
                  avanza;
                  si izquierda-libre y frente-bloqueado entonces inicio
                      sube;
                  fin;
                  si izquierda-bloqueada y derecha-bloqueada y frente-bloqueado entonces inicio
                      oeste;
                  fin sino inicio
                      este;
                  fin;
              fin;
          fin sino inicio
              si izquierda-libre entonces inicio
                  sube;
                  si izquierda-bloqueada y derecha-bloqueada y frente-bloqueado entonces inicio
                     oeste;
                  fin sino inicio
                     este;
                     avanza;
                  fin;
              fin sino inicio
                 oeste;
              fin;
          fin;
      fin;
  fin;
  define-nueva-instruccion regresa como inicio
      si frente-libre entonces inicio
          avanza;
      fin sino inicio
          si derecha-libre entonces inicio
              norte;
              mientras frente-libre y izquierda-bloqueada hacer inicio
                  avanza;
              fin;
              oeste;
              si frente-libre entonces avanza;
              sur;
              mientras frente-libre y derecha-bloqueada hacer inicio
                  avanza;
              fin;
              oeste;
          fin sino inicio
              si izquierda-libre entonces inicio
                  sur;
                  mientras frente-libre y derecha-bloqueada hacer inicio
                      avanza;
                  fin;
                  oeste;
                  si frente-libre entonces avanza;
              fin;
          fin;
      fin;
  fin;
  define-nueva-instruccion recorre como inicio
      si no-orientado-al-oeste entonces inicio
          repetir 2 veces camina;
          recorre;
          regresa;
      fin;
  fin;
    inicia-ejecucion
        este;
        recorre;
        sur;
        mientras frente-libre hacer inicio
            avanza;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
