You are on page 1of 7

PROBLEMA 3 REPARTIENDO JUGUETES KAREL ESTA JUGANDO CON SU AMIGO MANDO, TIENEN JUGUETES Y LOS VAN A REPARTIR, AYUDALE

A KAREL KAREL INICIA APUNTANDO HACIA EL NORTE SOBRE UN MONTON DE JUGUETES LAS DIMENSIONES DEL CUARTO PUEDE IR DE 3 A 20 KAREL DEBERA RECOGERLOS Y REPARTIRLOS, LOS JUGUETES DE KAREL EN LA ESQUINA IZQUIERDA Y LOS DE MANDO EN LA ESQUINA DERECHA SI EXISTE UN NUMERO IMPAR DE JUGUETES, KAREL DECIDE COLOCAR EL ULTIMO JUGUETE EN SU ESQUINA.

EJEMPLO: MUNDO INICIAL

MUNDO FINAL

class program { void OrientarEste(){ while (notFacingEast){ turnleft(); } } void OrientarOeste(){ while (notFacingWest){ turnleft(); } } void camina(){ while (frontIsClear){ move(); } } void recogeZumbador(){ if (nextToABeeper){ pickbeeper(); if (nextToABeeper){ pickbeeper(); recogeZumbador(); putbeeper(); }else{ OrientarEste(); camina(); } }else{ OrientarEste(); camina(); } } program() { recogeZumbador(); OrientarOeste(); camina(); while (anyBeepersInBeeperBag){ putbeeper(); } turnoff(); } }

Repartiendo juguetes iniciar-programa define-nueva-instruccion orientadoEste como inicio mientras no-orientado-al-este hacer inicio gira-izquierda; fin; fin; define-nueva-instruccion camina como inicio mientras frente-libre hacer inicio avanza; fin; fin; define-nueva-instruccion cogeZumbador como inicio mientras junto-a-zumbador hacer inicio coge-zumbador; fin; fin; define-nueva-instruccion orientadoOeste como inicio mientras no-orientado-al-oeste hacer inicio gira-izquierda; fin; fin; define-nueva-instruccion dejaLosZumbadores como inicio mientras algun-zumbador-en-la-mochila hacer inicio deja-zumbador; fin; fin; define-nueva-instruccion recogeLosZumbador como inicio si junto-a-zumbador entonces inicio coge-zumbador; si junto-a-zumbador entonces inicio coge-zumbador; recogeLosZumbador; deja-zumbador; fin sino inicio orientadoEste; camina; fin; fin sino inicio orientadoEste; camina; fin; fin; inicia-ejecucion recogeLosZumbador; orientadoOeste; camina; dejaLosZumbadores; apagate; termina-ejecucion finalizar-programa

PROBLEMA 5 TERMINANDO DE JUGAR KAREL Y MANDO YA TERMINARON DE JUGAR, Y AHORA TIENE QUE RECOGER SUS TORRES Y DEJARLAS EN LA CAJA DE JUGUETES, AYUDALE A KAREL KAREL INICIA APUNTANDO HACIA EL SUR EN LA ESQUINA INFERIOR DERECHA (EN LOS JUGUETES DE MANDO) KAREL DEBERA RECOGER TODOS LOS JUGUETES Y DEJARLOS AL CENTRO DE LA HABITACION NO IMPORTA HACIA DONDE QUEDA APUNTANDO KAREL

EJEMPLO: MUNDO INICIAL

MUNDO FINAL

Terminando de lugar class program { void OrientarEste(){ while (notFacingEast){ turnleft(); } } void OrientarOeste(){ while (notFacingWest){ turnleft(); } } void OrientarNorte(){ while (notFacingNorth){ turnleft(); } } void OrientarSur(){ while (notFacingSouth){ turnleft(); } } void recogeZumbador(){ while (nextToABeeper){ pickbeeper(); } } void camina(){ while (frontIsClear){ move(); } } void dejaZumbadores(){ while (anyBeepersInBeeperBag){ putbeeper(); } } void recogeTorre(){ OrientarNorte(); while (nextToABeeper){ pickbeeper(); move(); } OrientarSur(); camina(); } void recogeTorreIzq(){ OrientarOeste(); camina(); recogeTorre(); }

void encuentraMitad(){ if (frontIsClear){ move(); if (frontIsClear){ move(); encuentraMitad(); move(); } }else{ OrientarOeste(); } } program() { recogeTorre(); recogeTorreIzq(); OrientarEste(); encuentraMitad(); dejaZumbadores();

turnoff(); } }

Terminando de lugar
iniciar-programa define-nueva-instruccion orientadoEste como inicio mientras no-orientado-al-este hacer inicio gira-izquierda; fin; fin; define-nueva-instruccion orientadoOeste como inicio mientras no-orientado-al-oeste hacer inicio gira-izquierda; fin; fin; define-nueva-instruccion orientadoNorte como inicio mientras no-orientado-al-norte hacer inicio gira-izquierda; fin; fin; define-nueva-instruccion orientadoSur como inicio mientras no-orientado-al-sur hacer inicio gira-izquierda; fin; fin; define-nueva-instruccion camina como inicio mientras frente-libre hacer inicio avanza; fin; fin; define-nueva-instruccion recogeTorre como inicio orientadoNorte; mientras junto-a-zumbador hacer inicio coge-zumbador; avanza; fin; orientadoSur; camina; fin; define-nueva-instruccion recogeTorreIzq como inicio orientadoOeste; camina; recogeTorre; fin; define-nueva-instruccion encuentraMitad como inicio si frente-libre entonces inicio avanza; si frente-libre entonces inicio avanza; encuentraMitad; avanza; fin; fin sino inicio orientadoOeste; fin; fin; inicia-ejecucion recogeTorre; recogeTorreIzq; orientadoEste; encuentraMitad; dejaLosZumbadores; apagate; termina-ejecucion finalizar-programa

define-nueva-instruccion orientadoOeste como inicio mientras no-orientado-al-oeste hacer inicio gira-izquierda; fin; fin; define-nueva-instruccion dejaLosZumbadores como inicio mientras algun-zumbador-en-la-mochila hacer inicio deja-zumbador; fin; fin;

PROBLEMA 4: Midiendo la distancia Descripcin del problema: Inicialmente Karel se encuentra orientado hacia el ESTE en la esquina inferior izquierda de su mundo. Inicialmente Karel tiene un nmero infinito de zumbadores, esto quiere decir que no importa cuantos zumbadores deje en el piso nunca se le acabaran los zumbadores que trae en la mochila. A la derecha de Karel, a una distancia desconocida hay una pared vertical. Debes escribir un programa que permita que Karel mida la distancia entre su posicin inicial y la pared. Como resultado, Karel deber dejar en la esquina inferior izquierda del mundo una cantidad de zumbadores igual a la distancia entre la posicin inicial de Karel y la pared.
Mundo de ejemplo:

Solucin del mundo de ejemplo:

MIDIENDO LA DISTANCIA class program { void regresa() { if (frontIsClear()) { move(); regresa(); } putbeeper(); } iniciar-programa define-nueva-instruccion camina(n) como inicio si frente-libre entonces inicio avanza; camina(sucede(n)); fin sino inicio repetir n veces deja-zumbador; fin; fin;

program() { ; while (frontIsClear()){ move(); } iterate (2){ turnleft(); } regresa(); turnoff(); } }

inicia-ejecucion mientras frente-libre hacer inicio avanza; fin; gira-izquierda; gira-izquierda; camina(1); apagate; termina-ejecucion finalizar-programa

You might also like