miércoles, 8 de diciembre de 2010

Clase sabado 27 de noviembre

Hola
En este dia se resolvio un problema llamado Amontonando Zumbadores 

Descripción

Por su naturaleza, Karel es un robot muy ordenado y le gusta tener todos sus zumbadores acomodados en montones.
Tras un fin de semana de juegos, Karel tiene su cuarto lleno de zumbadores regados en columnas, por lo que ahora deberá juntar los zumbadores de cada columna y hacer un montón con ellos en la base de la misma.

Problema

Tu tarea consiste en escribir un programa que ayude a Karel a amontonar los zumbadores de cada columna en un montón en la base de la misma.

Consideraciones

  • Inicialmente, Karel se encuentra en la posición (1,1) orientado hacia el norte.
  • El cuarto de Karel se encuentra lleno de columnas de zumbadores como se muestra en el ejemplo.
  • Las columnas de zumbadores pueden tener cualquier altura desde 1 hasta 100 zumbadores, y se suceden una a la otra sin dejar espacios.
  • Al encontrar la primera columna vacía, Karel sabrá que ha llegado al final del cuarto.
  • Karel no tiene zumbadores en la mochila.
  • La cantidad de zumbadores en cada casilla es desconocida.
  • No importa la posición ni la orientación final de Karel

Ejemplo

Imagen

Mundo de ejemplo

Imagen

Solución del mundo de ejemplo
 
 
La solucion a este problema se dio en clase, pero para los que no la tienen aqui la pongo:
 
iniciar-programa
    define-nueva-instruccion gira-derecha como inicio
        repetir 3 veces
            gira-izquierda;
    fin;
    define-nueva-instruccion recoge-fila como inicio
        mientras junto-a-zumbador hacer inicio
            mientras junto-a-zumbador hacer inicio
               coge-zumbador;
            fin;
            si frente-libre entonces inicio
                avanza;
            fin;
        fin;
        gira-izquierda;
        gira-izquierda;
        mientras frente-libre hacer inicio
            avanza;
        fin;
        mientras algun-zumbador-en-la-mochila hacer inicio
            deja-zumbador;
        fin;
        gira-izquierda;
        gira-izquierda;
    fin;
    inicia-ejecucion
        mientras junto-a-zumbador hacer inicio
            recoge-fila;
            gira-derecha;
            avanza;
            gira-izquierda;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
 

1 comentario: