Tarea 3 de Análisis y Diseño de Algoritmos

Trimestre 2013 otoño
Entrega: 16 de septiembre de 2013 a las 22:00.

La curva C es una curva que se define recursivamente de la siguiente manera: La curva C de nivel 0 es simplemente un segmento de recta. Para toda N > 0, la curva C de nivel N se obtiene de la curva C de nivel N-1 reemplazando cada segmento ac de recta por dos segmentos ab y bc de recta de la siguiente manera:

Problema 1: Suponga que se definen las ocho direcciones E, NE, N, NO, O, SO, S y SE como los números 0, 1, 2, 3, 4, 5, 6 y 7 y que la curva C de nivel 0 es un segmento E. Diseñe un algoritmo recursivo para encontrar la sucesión de direcciones que definen la curva C de nivel N. Por ejemplo, si N = 2 las direcciones serían N, E, E y S. Escriba un programa en C o C++ llamado curvadZZ (donde ZZ es una clave de dos dígitos asignada por el profesor) basado en su algoritmo que acepte como entrada un entero N y que escriba como salida la sucesión de números correspondiente a la curva C de nivel N. De nuevo, si la entrada fuera 2 entonces la salida debe ser 2 0 0 6. Puede suponer que 0 <= N <= 20.

Problema 2: Ahora suponga que se definen los giros de 0, 90, 180 y 270 grados (en la dirección de las manecillas del reloj) como los números 0, 1, 2 y 3. Observe que la curva C de nivel 0 no tiene giros y que la curva C de nivel 1 tiene sólo un giro de 90 grados. Diseñe un algoritmo recursivo para encontrar la sucesión de giros que definen la curva C de nivel N. Por ejemplo, si N = 2 los giros serían de 90, 0 y 90 grados. Escriba un programa en C o C++ llamado curvagZZ (donde ZZ es una clave de dos dígitos asignada por el profesor) basado en su algoritmo que acepte como entrada un entero N y que escriba como salida la sucesión de números correspondiente a la curva C de nivel N. De nuevo, si la entrada fuera 2 entonces la salida debe ser 1 0 1. Puede suponer que 0 <= N <= 20.

Nota: Sus programas no deben leer ni escribir nada adicional a lo que se indica en el enunciado.