iniciar-programa
   (* *** KAREL MOSBY, ARQUITECTO *** *)

   (* Instrucciones para orientar a Karel en algun punto cardinal *)
   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;

   (* Instruccion para que Karel camine hasta una pared *)
   define-nueva-instruccion CAMINA como mientras frente-libre hacer avanza;

   (* Instruccion para que Karel recoja un grupo de zumbadores *)
   define-nueva-instruccion RECOGER como mientras junto-a-zumbador hacer coge-zumbador;

   (* Instruccion para que Karel camine a travs de un camino de zumbadores *)
   define-nueva-instruccion RECORRER como mientras junto-a-zumbador hacer avanza;

   (* Instruccion para que Karel distribuya los zumbadores que trae en la mochila *)
   define-nueva-instruccion REPARTIR como inicio
      mientras algun-zumbador-en-la-mochila hacer inicio
         deja-zumbador;
         avanza;
      fin;
   fin;

   (* Instruccion para que Karel regrese al punto inicial de su columna *)
   define-nueva-instruccion REGRESAR como inicio
      SUR;
      CAMINA;
      NORTE;
   fin;

   (* Instruccion para que Karel cumpla con la solucin del problema *)
   define-nueva-instruccion DIBUJAR como inicio
      mientras no-orientado-al-este hacer inicio
         mientras frente-libre hacer inicio
            si junto-a-zumbador entonces RECORRER
            sino inicio
               mientras frente-libre y no junto-a-zumbador hacer avanza;
               si junto-a-zumbador entonces inicio
                  RECOGER;
                  REGRESAR;
                  REPARTIR;
                  REGRESAR;
               fin;
            fin;
         fin;
         si junto-a-zumbador entonces inicio
            RECOGER;
            REGRESAR;
            REPARTIR;
         fin;
         REGRESAR;
         ESTE;
         si frente-libre entonces inicio
            avanza;
            NORTE;
         fin;
      fin;
   fin;

   define-nueva-instruccion LIMPIAR como inicio
      NORTE;
      mientras no orientado-al-oeste hacer inicio
         mientras junto-a-zumbador hacer inicio
             coge-zumbador;
             si no-junto-a-zumbador entonces inicio
                deja-zumbador;
                avanza;
             fin;
         fin;
         REGRESAR;
         OESTE;
         si frente-libre entonces inicio
            avanza;
            NORTE;
         fin;
      fin;
   fin;


    inicia-ejecucion
       DIBUJAR;
       LIMPIAR;
        apagate;
    termina-ejecucion
finalizar-programa
