Está en la página 1de 16

Trabajo Práctico Nº 2

Unidad 5. Resolver los ejercicios del 1 al 30 (resueltos en clase), presentar el código en un sólo documento en
formato digital.
Programa 1: Queremos que Karel avance de acuerdo a su orientación, tres cuadras (posiciones) y se apague.

class program {
program () {
// TODO poner codigo aqui
move();
move();
move();
turnoff();
}
}
Programa 2: Queremos que Karel comience en la posición 1,1, avance 2 cuadras (posiciones), gire a la
izquierda tres veces, y avance tres cuadras y se apague.

class program {
program () {
// TODO poner codigo aqui
move(); move();
turnleft(); turnleft(); turnleft();
move(); move(); move();
turnoff();
}
}
Programa 3: Queremos que Karel comience en la posición 1,1 mirando al norte, y coloque un zumbador en la
posición calle 4, avenida 1 y se apague.
Primero se debe de colocar un zumbador en la mochila para que se ejecute correctamente el programa.

class program {
program () {
// TODO poner codigo aqui
move(); move();move();
putbeeper();
turnoff();
}
}
Programa 4: Queremos que Karel comience en la posición 1,1 mirando al norte, avance a la posición calle 4,
avenida 2 y se apague.
class program {
program () {
// TODO poner codigo aqui
move();move();move();
turnleft(); turnleft(); turnleft();
move();
turnoff();
}
}
Programa 5: Queremos que karel comience en la posición 1,1 mirando al norte, y deje un zumbador en la
posición calle 7, avenida 10 y se apague.
Primero debemos colocar un zumbador en la mochila nantes de ejecutar el programa correctamente.

class program {
program () {
// TODO poner codigo aqui
move(); move(); move(); move(); move(); move();
turnleft(); turnleft(); turnleft();
move(); move(); move(); move(); move();
move(); move(); move(); move();
putbeeper();
turnoff();
}
}
Programa 6:
Queremos que karel deje zumbadores en las posiciones (calle,avenida) 2,4 3,4 y 4,4 (asumir a partir de ahora
que si no se dice la condición inicial, karel comienza en la posición 1,1 y mirando al norte).
Primero debemos colocar 3 zumbadores en la mochila para ejecutar correctamente en la mochila.

class program {
program () {
// TODO poner codigo aqui
turnleft(); turnleft(); turnleft();
move(); move(); move();
turnleft();
move (); putbeeper();
move(); putbeeper();
move(); putbeeper();
turnoff();
}
}
Programa 7.
Queremos que karel comience en la posición 1,1 mirando al norte, haga un cuadrado de 5 por 5 con
zumbadores, tomando como esquinas la posición (2,2), (6,2), (6,6) y (2,6)
Primero debemos colocar 16 zumbadores para que el programa se ejecute correctamente.

class program {
program () {
// TODO poner codigo aqui
iterate(3) turnleft(); move();
turnleft(); move();
iterate(4){putbeeper();move();}
iterate(3){turnleft();}
iterate(4){putbeeper();move();}
iterate(3){turnleft();}
iterate(4){putbeeper();move();}
iterate(3){turnleft();}
iterate(4){putbeeper();move();}
turnoff();
}
}
Programa 8.
Queremos que karel comience en la posición 1,1 mirando al norte, deje zumbadores en diagonal hasta la
posición 5,5.

Primero debemos colocar 5 zumbadores en la mochila para que el programa se ejecute correctamente.

class program {
program () {
// TODO poner codigo aqui
iterate(4){
putbeeper(); move(); iterate(3) turnleft();
move();turnleft();
}
putbeeper();
turnoff();
}
}
Programa 9: Queremos que karel comience en la posición 1,1 mirando al norte, coloque un zumbador en cada
esquina de un cuadrado conformado por las posiciones (2,2), (6,2), (6,6) y (2,6), los zumbadores SOLO en las
esquinas.
Primero debemos colocar 4 zumbadores en la mochila para que se ejecute correctamente.

class program {
program () {
// TODO poner codigo aqui
move(); iterate(3) turnleft();move();
putbeeper();
iterate(3){
iterate(4) move();putbeeper();turnleft();
}
turnoff();
}
}
Programa 10: Queremos que karel comience en la posición 1,1 mirando al norte, sobre la avenida 1, deje tres
zumbadores (uno en cada calle), deje una calle vacía, coloque otros tres zumbadores, deje una calle vacía y
deje otros tres zumbadores.
Primero debemos colocar 9 zumbadores en la mochila para que el programa se ejecute correctamente.

class program {
program () {
// TODO poner codigo aqui
iterate(3){iterate(3) {putbeeper();move();}
move();
}
turnoff();
}
}
Programa 11: Haga lo mismo que el programa 10, pero sobre la calle 1, es decir horizontalmente.
Primero debemos colocar 9 zumbadores en la mochila para que el programa se ejecute correctamente.

class program {
program () {
// TODO poner codigo aqui
iterate(3) turnleft();
iterate(3){
iterate(3) {putbeeper(); move();}
move();
}
turnoff();
}
}
Programa 12: Hacer un programa para que Karel recoja un zumbador de la posición 3,1 y lo coloque en la
posición 3,3
Debemos colocar un zumbador 3,1
class program {
program () {
// TODO poner codigo aqui
move();move();pickbeeper();iterate(3) turnleft(); move();
move();
putbeeper();
turnoff();
}
}
Programa 13: Hacer un programa para que Karel recoja los 10 zumbadores que estan en la avenida 1, y lo
coloque en la avenida 2 (en las mismas calles)

class program {
program () {
// TODO poner codigo aqui
iterate(10) {move(); pickbeeper();}
move();iterate(3) turnleft(); move();
iterate(3) turnleft();
iterate(10) {move(); putbeeper();}
turnoff();
}
}
Programa 14: Hacer un programa para que Karel recoja los 10 zumbadores que estan en la calle 2, avenida 2,
y los coloque a todos en la calle 4, avenida 4.

class program {
program () {
// TODO poner codigo aqui
move(); iterate(3) turnleft(); move();
iterate(10) {pickbeeper();}
move();move(); turnleft();
move(); move();
iterate(10) {putbeeper();}
turnoff();
}
}
Programa 15: Hacer un programa para que Karel recoja los 6 zumbadores que estan en la avenida 1 y los deje
todos en la calle 13, avenida 2.

class program {
program () {
// TODO poner codigo aqui
iterate(6){
move();pickbeeper();move();
}
iterate(3) turnleft();move();
iterate(6){
putbeeper();
}
turnoff();
}
}
Programa 16: Hacer un programa para que Karel recoja los 6 zumbadores que estan dispuestos en su mundo y
los deje todos en la calle 1, avenida 1.

class program {
program () {
// TODO poner codigo aqui
iterate(6){
move();iterate(3) turnleft();
move();turnleft();
pickbeeper();
}
iterate(2){turnleft();iterate(6) move();}
iterate(6){ putbeeper(); }
turnoff();
}
}
Programa 17: En la avenida 1, hay dos sensores en las primeras 20 calles, pero no se sabe en que calle
específicamente, hacer un programa para que Karel levante los zumbadores y los ponga en su mochila.

class program {
program () {
// TODO poner codigo aqui
iterate(20){
if(nextToABeeper()){pickbeeper();move();}
else {move();}
}
turnoff();
}
}
Programa 18: A Ud. le dieron el trabajo de llenar las primeras 20 calles de la avenida 1 con zumbadores, sin
embargo, le faltó poner zumbadores en algunas calles… no se sabe en qué calles falta poner un zumbador.
Hacer un programa para que Karel coloque un zumbador donde no haya uno puesto dentro de las primeras 20
calles de la avenida 1.
Primero debemos colocar 20 zumbadores en la mochila para rellenar las calles que no haya zumbadores.
class program {
program () {
// TODO poner codigo aqui
iterate(20){
if(nextToABeeper()) move();
else{putbeeper();move(); }
}
turnoff();
}
}
Programa 19: Mismo problema del anterior (programa 18), pero esta vez, solo le cargaron 5 zumbadores en la
mochila. y deberá poner solo los que tiene en la mochila.
class program {
program () {
// TODO poner codigo aqui
iterate(20){
if(nextToABeeper()) ;
else
{if (anyBeepersInBeeperBag())
putbeeper();}
move();
}
turnoff();
}
}
Programa 20: Ante la nueva información, podemos reescribir el programa 19 de la siguiente manera:

class program {
program () {
// TODO poner codigo aqui
iterate(20){
if(!nextToABeeper() && anyBeepersInBeeperBag())
putbeeper();
move();
}
turnoff();
}
}
Programa 21: Sabemos Karel no tiene zumbadores en la mochila… y que dejaron zumbadores juntos en la
avenida 1, no se sabe cuántos. Solo se sabe que están en las primeras 20 calles, y, por lo tanto, a lo más habría
20 zumbadores juntos. Hacer un programa para que Karel levante todos los zumbadores y los coloque en la
primera posición vacía que encuentre después de haber levantado todo.

class program {
program () {
// TODO poner codigo aqui
iterate(20){
if(!anyBeepersInBeeperBag()&& !nextToABeeper()) move();
else {if(nextToABeeper()) {pickbeeper();move();}
}
}
iterate(20){
if(anyBeepersInBeeperBag()) putbeeper();
}
turnoff();
}
}
Programa 22: Se sabe que en la avenida 1 se dejaron olvidados zumbadores en la misma calle (no se sabe en
qué calle, solo se sabe que en las primeras 10 calles y que máximo se olvidaron 10 zumbadores… recordar
que todos los zumbadores olvidados están en la misma posición). Hacer un programa para que Karel,
encuentre y levante todos los zumbadores.

class program {
program () {
// TODO poner codigo aqui
iterate(10){
if(nextToABeeper()){iterate(10)
if (nextToABeeper()) pickbeeper();}
else {move();}
}
turnoff();
}
}
Programa 23: Están adornando la avenida 1 (solo las primeras 20 calles), y desean colocar zumbadores de
dos en dos, es decir en la calle 1 y en la calle 2, L acalle 3 debe estar vacía, otros dos en la 4 y 5, la 6 vacía, y
así sucesivamente. Pero no lo hicieron así y dejaron zumbadores donde no debían dejar y no dejaron donde
debía dejar. Hacer un programa para que Karel solucione ese problema y se cumpla la idea original de dejar
de dos en dos.

class program {
program () {
// TODO poner codigo aqui
iterate(7){
if(!nextToABeeper()) putbeeper(); move();
if(!nextToABeeper()) putbeeper(); move();
if(nextToABeeper()) pickbeeper(); move();
}
turnoff();
}
}
Programa 24: Sabemos que en la avenida 1, han dejado en una misma posición muchos zumbadores (al
menos 1), la avenida está cortada por una pared en alguna calle. Hacer un programa para que Karel recoja
todos los zumbadores.
A ver… algunas consideraciones:
- la avenida puede estar cortada en cualquier calle, desde la 2 y como límite el mundo de karel.
- Pueden haber 1 o más zumbadores (su límite es el mundo de karel)

class program {
program () {
// TODO poner codigo aqui
while(frontIsClear()) {
while(nextToABeeper()) pickbeeper();
move();
}
while(nextToABeeper()) pickbeeper();
turnoff();
}
}
Programa 25: Mismo problema del programa 24, pero queremos dejar los zumbadores levantados al otro lado
de la pared, asumiendo que solo está cortada la avenida 1 y no hay más paredes.

class program {
program () {
// TODO poner codigo aqui
while(frontIsClear()) {
while(nextToABeeper()) pickbeeper();
move();
}
while(nextToABeeper()) pickbeeper();
iterate(3) turnleft(); move(); turnleft();move(); turnleft();move();
while(anyBeepersInBeeperBag()) putbeeper();
turnoff();
}
}
Programa 26: Mismo problema del programa 25, pero no sabemos cuántas avenidas están
cortadas, solo sabemos que alguna no está. (ojo, queremos dejar los
zumbadores levantados al otro lado de la pared en la avenida 1).

class program {
program () {
// TODO poner codigo aqui
while(frontIsClear()) {
while(nextToABeeper()) pickbeeper();
move();
}
while(nextToABeeper()) pickbeeper();
iterate(3) turnleft();
while(leftIsBlocked()) move();
turnleft();move(); turnleft();move();
while(frontIsClear()) move();
while(anyBeepersInBeeperBag()) putbeeper();
turnoff();
}
}
Programa 27: Hay UN zumbador sobre la avenida 1, pero la avenida puede estar cortada
(solo la avenida 1 puede estar cortada, las demás no estan cortadas) antes de
llegar al zumbador, y puede estar cortada en muchas calles. Escribir un
programa para que Karel recoja el zumbador.

class program {
program () {
// TODO poner codigo aqui
while(!anyBeepersInBeeperBag){
while(frontIsClear && !nextToABeeper){
move();
}
if(nextToABeeper) pickbeeper();
else {iterate(3)turnleft();move();
turnleft();move();turnleft();move();
iterate(3) turnleft();
}
}
turnoff();
}
}
Programa 28: Mismo problema del programa 27, pero Karel una vez que recoja el
zumbador, debe dejar el zumbador en la avenida 1 y calle 1.

class program {
program () {
// TODO poner codigo aqui
while(!anyBeepersInBeeperBag){
while(frontIsClear && !nextToABeeper){
move();
}
if(nextToABeeper) pickbeeper();
else {iterate(3)turnleft();move();
turnleft();move();turnleft();move();
iterate(3) turnleft();
}
}
iterate(3)turnleft();move();iterate(3)turnleft();
while(frontIsClear)move();
iterate(3) turnleft(); move();
putbeeper();
turnoff();
}
}
Programa 29. Amontonar 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 uno
• No importa la posición ni la orientación final de Karel
class program {
program () {
// TODO poner codigo aqui
while(nextToABeeper){
while(nextToABeeper){pickbeeper();move();}
iterate(2)turnleft();
while(frontIsClear)move();
while(anyBeepersInBeeperBag)putbeeper();
turnleft();move();turnleft();
}
turnoff();
}
}
Programa 30. Recoge zumbadores
Hay varios zumbadores tirados en el cuarto de Karel, en varias posiciones del
mismo. Debes hacer un programa que haga que Karel recorra todo el cuarto y recoja
todos los zumbadores que encuentre. Una vez que tenga todos los zumbadores
deberá depositarlos en la esquina inferior izquierda del cuarto y apagarse.
Consideraciones
•Karel se encuentra inicialmente orientado hacia el norte.
•Karel está inicialmente en la esquina inferior izquierda del cuarto.
•El cuarto es totalmente rectangular rodeado por paredes.
•Dentro del cuarto no hay paredes.
•No importa la posición ni la orientación final de Karel.

class program {
program () {
// TODO poner codigo aqui
while(frontIsClear||nextToABeeper){
while(frontIsClear){
while(nextToABeeper)pickbeeper();
move();
}
while(nextToABeeper)pickbeeper();
if(facingNorth){
iterate(3)turnleft();
if(frontIsClear){move();iterate(3)turnleft();}
}
else{
turnleft();
if(frontIsClear){move();turnleft();}
}
}
iterate(2)turnleft();while(frontIsClear)move();
turnleft();while(frontIsClear)move();
while(anyBeepersInBeeperBag)putbeeper();
turnoff();
}
}

También podría gustarte