Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Problemas Resueltos
Problemas Resueltos
Cada vez los problemas van siendo mas dificiles, el dia de hoy le toco a el problema de "La
Marcha"
Descripción
Harto de la inseguridad, Karel como muchos otros ciudadanos, marcho del Angel de Reforma al
Zócalo de la Ciudad de México el domingo 27 de junio.
Al final de la marcha, impresionado por la cantidad de gente, Karel se dio a la tarea de obtener el
número total de participantes en la marcha.
Problema
Tu tarea consiste en escribir un programa que le permita a Karel conocer la cantidad total de
hombres y mujeres que asistieron a la marcha.
Consideraciones
-La marcha se representa como un rectángulo de zumbadores con su esquina inferior izquierda en
la posición (1,2) que puede tener un ancho máximo de 90 columnas y una altura máxima de 90
filas.
-Todas las casillas de dicho rectángulo tienen 1 ó 2 zumbadores, en donde 1 zumbador representa
a una mujer y 2 zumbadores representan a un hombre.
-Al inicio del programa Karel se encuentra en la posición (1,1) orientado hacia el norte.
-Inicialmente, Karel no tiene zumbadores en la mochila.
-Karel deberá dejar en la posición (1,1) una cantidad de zumbadores igual al número de mujeres en
la marcha, y en la posición (2,1) una cantidad de zumbadores igual al número de hombres que
asistieron a la marcha.
-No importa la posición final ni la orientación con la que termine Karel.
-No importa si Karel levanta o no a los participantes de la marcha.
Mundo Final
Solucion
iniciar-programa
define-nueva-instruccion camina como inicio
avanza;
si no-junto-a-zumbador entonces inicio
gira-izquierda;
gira-izquierda;
mientras frente-libre hacer inicio
avanza;
fin;
gira-izquierda;
avanza;
gira-izquierda;
avanza;
fin;
fin;
define-nueva-instruccion regresa como inicio
gira-izquierda;
mientras frente-libre hacer inicio
avanza;
fin;
gira-izquierda;
avanza;
gira-izquierda;
fin;
define-nueva-instruccion recoge como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
si junto-a-zumbador entonces inicio
coge-zumbador;
camina;
recoge;
fin sino inicio
camina;
recoge;
deja-zumbador;
fin;
fin sino inicio
regresa;
fin;
fin;
define-nueva-instruccion dejamitad como inicio
si algun-zumbador-en-la-mochila entonces inicio
deja-zumbador;
deja-zumbador;
dejamitad;
coge-zumbador;
fin;
fin;
inicia-ejecucion
avanza;
recoge;
avanza;
dejamitad;
apagate;
termina-ejecucion
finalizar-programa
Publicado por Irvg en 06:51 1 comentarios
Enviar por correo electrónico Escribe un blog Compartir con Twitter Compartir con Facebook Compartir con Google Buzz
Clase 12 de febrero
Este dia se hizo un problema mas complicado:
Autopista
10a OMI, Durango 2005
DESCRIPCIÓN
En Beeperópolis han construido su primera autopista. La autopista esta delimitada por paredes y
atraviesa la ciudad de norte a sur, debido a las irregularidades del terreno, el ancho de la autopista
varía a lo largo de la misma.
Sin embargo, los habitantes tienen un grave problema ya que no cuentan con la línea central que
divide los carriles de ida y de vuelta. Afortunadamente Karel es jefe de tránsito y siempre esta
dispuesto a resolver los problemas de Beeperopolis, por lo que se ha dado a la tarea de dibujar
dicha línea.
PROBLEMA
Ayuda a Karel a poner la línea divisoria en la autopista, esta será formada por zumbadores y
deberá dividir por la mitad la autopista desde el norte hasta el sur.
No debe de quedar ningún zumbador en una posición que no pertenezca a la línea divisoria. En
cada posición de la línea divisoria, deberá haber únicamente un zumbador.
CONSIDERACIONES
La línea deberá estar formada por montones de 1 zumbador y deberá ser de ancho 1 y no
deberá haber zumbadores en ningún otro lugar de la autopista.
Solucion
iniciar-programa
define-nueva-instruccion inicia como inicio
gira-izquierda;
gira-izquierda;
gira-izquierda;
mientras frente-libre hacer inicio
avanza;
fin;
gira-izquierda;
gira-izquierda;
fin;
define-nueva-instruccion mide-mitad como inicio
si frente-libre entonces inicio
avanza;
avanza;
mide-mitad;
avanza;
fin sino inicio
gira-izquierda;
gira-izquierda;
fin;
fin;
define-nueva-instruccion busca-abajo como inicio
mientras derecha-bloqueada y frente-libre hacer inicio
avanza;
fin;
si derecha-bloqueada entonces inicio
gira-izquierda;
fin sino inicio
gira-izquierda;
gira-izquierda;
gira-izquierda;
avanza;
fin;
fin;
inicia-ejecucion
mientras no-orientado-al-norte hacer inicio
inicia;
mide-mitad;
deja-zumbador;
mientras frente-libre hacer inicio
avanza;
fin;
gira-izquierda;
gira-izquierda;
busca-abajo;
fin;
apagate;
termina-ejecucion
finalizar-programa
Publicado por Irvg en 21:26 0 comentarios
Enviar por correo electrónico Escribe un blog Compartir con Twitter Compartir con Facebook Compartir con Google Buzz
Medir distancia
Karel se encuentra en la posicion 1,1 viendo hacia el este. Karel tiene que caminar hasta la pared
que se encuentra frente de el algunos pasos adelante y dejar el numero de zumbadores igual a la
distancia que recorrio.
Solucion:
iniciar-programa
define-nueva-instruccion mide como inicio
si frente-libre entonces inicio
avanza;
mide;
fin;
deja-zumbador;
fin;
inicia-ejecucion
mide;
apagate;
termina-ejecucion
finalizar-programa
Descripcion
Solucion
iniciar-programa
define-nueva-instruccion multiplica como inicio
si frente-libre entonces inicio
avanza;
multiplica;
avanza;
avanza;
fin sino inicio
gira-izquierda;
avanza;
fin;
fin;
inicia-ejecucion
gira-izquierda;
gira-izquierda;
gira-izquierda;
multiplica;
apagate;
termina-ejecucion
finalizar-programa
Publicado por Irvg en 21:20 0 comentarios
Enviar por correo electrónico Escribe un blog Compartir con Twitter Compartir con Facebook Compartir con Google Buzz
Clase 18 de diciembre
Hola, bueno pues este dia resolvimos un problema y medio a continuacion pongo la
solucion de ellos
Problema C-1
Descripcion
Escribe un programa que, con los beepers que Karel tenga disponibles en su
bolsa, construya una escalera del número apropiado de escalones.
Consideraciones
Karel inicia mirando al Norte, en la esquina inferior izquierda de su mundo.
Karel siempre tendrá un número triangular de beepers en su bolsa al iniciar el
programa.
No hay obstáculos en tu camino
Solucion
Codigo
iniciar-programa
define-nueva-instruccion comienza como inicio
si algun-zumbador-en-la-mochila entonces inicio
deja-zumbador;
fin;
fin;
define-nueva-instruccion subir como inicio
mientras junto-a-zumbador hacer inicio
avanza;
fin;
fin;
define-nueva-instruccion cambia-fila como inicio
gira-izquierda;
gira-izquierda;
gira-izquierda;
avanza;
gira-izquierda;
gira-izquierda;
gira-izquierda;
fin;
define-nueva-instruccion baja como inicio
mientras frente-libre hacer inicio
deja-zumbador;
avanza;
fin;
deja-zumbador;
gira-izquierda;
gira-izquierda;
fin;
inicia-ejecucion
comienza;
mientras algun-zumbador-en-la-mochila hacer inicio
subir;
cambia-fila;
baja;
fin;
apagate;
termina-ejecucion
finalizar-programa
El problema 2 es el siguiente:
Ayudando a Mama
Karel ha crecido un poco y ahora su mama le ha pedido que recoja la basura ( zumbadores de su
casa y se los tire al vecino
Karel puede empezar en cualquier posicion de su casa
No sabemos cuanta basura habra en cada lugar
Karel sabe que termino de recogerlos al llegar a la barda de su casa
La barda tiene una altura indeterminada
Karel debera dejar la basura en el piso de la casa del vecino
No importa en donde ni hacia donde quede apuntando Karel
Mundo inicial
Mundo final
SOLUCION
Codigo
iniciar-programa
define-nueva-instruccion orienta como inicio
mientras no-orientado-al-oeste hacer inicio
gira-izquierda;
fin;
mientras frente-libre hacer inicio
avanza;
fin;
gira-izquierda;
gira-izquierda;
fin;
define-nueva-instruccion recoge como inicio
mientras frente-libre hacer inicio
mientras junto-a-zumbador hacer inicio
coge-zumbador;
fin;
avanza;
fin;
mientras junto-a-zumbador hacer inicio
coge-zumbador;
fin;
fin;
define-nueva-instruccion pasa_pared como inicio
gira-izquierda;
mientras derecha-bloqueada hacer inicio
avanza;
fin;
gira-izquierda;
gira-izquierda;
gira-izquierda;
avanza;
gira-izquierda;
gira-izquierda;
gira-izquierda;
mientras frente-libre hacer inicio
avanza;
fin;
fin;
define-nueva-instruccion tirar como inicio
mientras algun-zumbador-en-la-mochila hacer inicio
deja-zumbador;
fin;
fin;
inicia-ejecucion
orienta;
recoge;
pasa_pared;
tirar;
apagate;
termina-ejecucion
finalizar-programa
Acontinuacion el problema 2
Rekreo
Descripccion
Despues de 2 horas de estudio el Maestro les ha dado a los alumnos tiempo de Recreo, el cual
acaba de terminar, la campana del Colegio no sirve por lo que requerimos tu ayuda.
Problema
Deberas salir al patio y decirle a los alumnos que ha terminado el recreo y deben regresar al aula
para la segunda parte de la clase. El sol esta fuerte asi que todos los alumnos se encuentran
recargados en la pared del salon que da hacia el patio de juego. Los alumnos deberan hacer una
fila en la puerta de entrada del salon.
Consideraciones
Tu programa sera evaluado con distintos casos de prueba
Karel inicia en la puerta del salon orientado hacia la salida
Los estudiantes estan representados con 1 zumbador
Todos los alumnos se encuentran en la parte extrerna del salon pegados a la pared
El salon es rectangular o cuadrado
Desconoces las dimensiones del salon
Karel debera terminar posicionado despues del ultimo alumno de la fila, sin importar su orientacion
Muno inicial
Mundo final
Solucion
Codigo
iniciar-programa
define-nueva-instruccion salir como inicio
avanza;
gira-izquierda;
avanza;
fin;
define-nueva-instruccion camina como inicio
avanza;
si izquierda-libre entonces inicio
gira-izquierda;
avanza;
fin;
fin;
define-nueva-instruccion recoge como inicio
mientras izquierda-bloqueada hacer inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
fin;
camina;
fin;
fin;
define-nueva-instruccion formar como inicio
gira-izquierda;
gira-izquierda;
avanza;
mientras algun-zumbador-en-la-mochila hacer inicio
deja-zumbador;
avanza;
fin;
fin;
inicia-ejecucion
salir;
recoge;
formar;
apagate;
termina-ejecucion
finalizar-programa
Publicado por Irvg en 11:35 0 comentarios
Enviar por correo electrónico Escribe un blog Compartir con Twitter Compartir con Facebook Compartir con Google Buzz
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
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.
EJEMPLO
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
Cima
Este problema trata de hacer que Karel suba una fila de zumbadores de cualquier tamaño de
cualquier tamaño, los zumbadores solo están puestos de 1 en 1. Este es un mundo de ejemplo :
iniciar-programa
inicia-ejecucion
mientras junto-a-zumbador hacer inicio
coge-zumbador;
avanza;
fin;
apagate;
termina-ejecucion
finalizar-programa
Tapizar
Este problema se trata de tapizar un rectángulo de cualquier tamaño con zumbadores, de 1 en 1
por todo el rectangulo donde karel esta orientado hacia cualquier lugar.
Un mundo de ejemplo para este problema es el siguiente
Y una posible solución para este problema es
iniciar-programa
define-nueva-instruccion ubicar como inicio
mientras no-orientado-al-oeste hacer inicio
gira-izquierda;
fin;
mientras frente-libre hacer inicio
avanza;
fin;
gira-izquierda;
gira-izquierda;
gira-izquierda;
fin;
define-nueva-instruccion llena-linea como inicio
repetir 3 veces inicio
gira-izquierda;
fin;
mientras frente-libre hacer inicio
deja-zumbador;
avanza;
fin;
deja-zumbador;
gira-izquierda;
gira-izquierda;
mientras frente-libre hacer inicio
avanza;
fin;
repetir 3 veces inicio
gira-izquierda;
fin;
fin;
inicia-ejecucion
ubicar;
llena-linea;
mientras frente-libre hacer inicio
avanza;
llena-linea;
fin;
apagate;
termina-ejecucion
finalizar-programa
iniciar-programa
inicia-ejecucion
brincar;
apagate;
termina-ejecucion
finalizar-programa