You are on page 1of 30

.

INF-111
2da Gua de Ejercicios
Ejercicios de Vectores, Matrices y Mtodos de
Ordenacin
Tambin puedes encontrar esta prctica en...

http://es.todo111.wikia.com/wiki/Ejercicios_para_el_Segundo_Parcial

Autores:
Mauricio Alarcn
r00t Garca
D'jalmar Gutierrez
Arun Limachi

Agradecimientos especiales a:
Jhtan Castro

5 de mayo de 2014

ndice
1. Vectores y Matrices
1.1.

Bienvenido al mundo de los Vectores! . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.1.

Leyendo vectores (1pt)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.2.

Mostrando vectores (1pt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.3.

Leyendo matrices (1pt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.4.

Mostrando matrices (1pt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.5.

Shush repetidos! (3pts) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.6.

Conjunto Unin (3pts)

1.1.7.

Cacera de ndices (3pts)

1.1.8.

La Diagonal (2pts)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.9.

Isimo vector la (2pts) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.10. Eliminar un elemento sin dejar rastro (3pts) . . . . . . . . . . . . . . . . . . .

1.1.11. Eliminar un vector sin dejar rastro (3pts) . . . . . . . . . . . . . . . . . . . . .

1.1.12. Insertando un elemento (Vector) (2pts)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

5
5

1.1.13. Insertando un vector (Matriz) (2pts) . . . . . . . . . . . . . . . . . . . . . . .


1.2.

1.1.14. Agrandando vectores (10pts) . . . . . . . . . . . . . . . . . . . . . . . . . . .

Problemas sencillos (Ad-Hoc) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.1.

La criba de Eraststenes (10pts)

. . . . . . . . . . . . . . . . . . . . . . . . .

1.2.2.

y tambin el bonacci? (8pts)

. . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.3.

Rapidez o Memoria? (5pts)

. . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.4.

Suma Mxima (5pts)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.5.

Sumatoria del rango (5pts) . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.6.

Suma de la pequea Matriz (10pts)

. . . . . . . . . . . . . . . . . . . . . . .

10

1.2.7.

Rango con la sumatoria ms grande (10pts) . . . . . . . . . . . . . . . . . . .

10

1.2.8.

. . . . . . . . . . . . . . . . . . .

10

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.2.10. Cuntos primos? (10pts) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


1.3.

Submatriz con la suma ms grande (10pts)

1.2.9.

Vector de primos (10pts)

10

Dibujando en Matrices

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.3.1.

X (1pt)

1.3.2.

Y (2pts) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.3.3.

Tablero de Ajedrez (5pts) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12
12

1.3.4.

El tringulo de Pascal .(20pts)

1.3.5.

Rectngulos Concntricos (5pts)

. . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.6.

Espiral (5pts)

1.3.7.

Gusano (5pts) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

1.3.8.

Gusano Inclinado (10pts) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

1.3.9.

Diamantes (5pts)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

. . . . . . . . . . . . . . . . . . . . . . . . .

13

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

1.3.10. Triforce (30pts)

1.3.11. I accidentally the whole city! (40pts) . . . . . . . . . . . . . . . . . . . . . . .


1.4.

17

Razonamiento y Lgica

18

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4.1.

El Telefrico (10pts)

1.4.2.

OVNI (10pts)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4.3.

Estoy a dieta (20pts)

1.4.4.

Sembrando Semillas Mgicas (l33t h4x0r)

1.4.5.

Mi amigo superticioso (10pts)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18
19
20

. . . . . . . . . . . . . . . . . . . .

21

. . . . . . . . . . . . . . . . . . . . . . . . . .

22

1.4.6.

Facebook (l33t h4x0r)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. Mtodos de Ordenacin
2.1.

23

26

Repaso de Mtodos de Ordenacin . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

2.1.1.

Funcionamiento de Bubble Sort (Mtodo Burbuja) (10pts) . . . . . . . . . . .

26

2.1.2.

Algoritmo de Bubble Sort (10pts)

2.1.3.

Desventaja del mtodo burbuja (10pts)

2.1.4.

Funcionamiento de Insertion Sort (por insercin) (10pts)

2.1.5.

Algoritmo de Insertion Sort (10pts)

. . . . . . . . . . . . . . . . . . . . . . .

26

2.1.6.

Desventajas... (10pts) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

2.1.7.

El mejor (10pts) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

2.1.8.

Por qu es el mejor (20pts)

26

2.1.9.

Cmo funciona? (80pts) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

2.1.10. Ordenando cadenas (30pts) . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Apndice

26
26
26

27

3.1.

Sobre la criba de Eraststenes...

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

3.2.

Sobre el tringulo de Pascal... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

3.3.

El cdigo Prometido (ordenando caracteres) . . . . . . . . . . . . . . . . . . . . . . .

29

README.txt
Esta es la 2da parte, y contiene las secciones: 3.Vectores y Matrices y 4.Mtodos de Ordenacin.
Los ejercicios l33t h4x0r, que pretendan ser una seccin extra, estn fuscionados con la primera seccin
por falta de tiempo.
La 1ra parte de esta prctica est disponible en la fotocopiadora de estadstica y del CEFAC, y
contiene las instrucciones para resolver la prctica, es recomendable leer esas instrucciones antes de
comenzar a resolver, de lo contrario trabajars de ms, en vano.

H4PPY C0D1N6

1.

Vectores y Matrices

1.1.

Bienvenido al mundo de los Vectores!

1.1.1.

Leyendo vectores (1pt)

Haz un mdulo que lea varios nmeros, los almacene en un vector, y responda el vector que contiene
los

nmeros.

Se te dar un nmero
tamao

1.1.2.

n,

n,

seguido de

nmeros. Debes almacenar los

nmeros en un vector de

y devolverlo.

Mostrando vectores (1pt)

Haz un mdulo que, dado un vector, lo muestre.

1.1.3.

Leyendo matrices (1pt)

Haz un mdulo que lea varios nmeros, los almacene en un vector, y responda el vector que contiene
los

nmeros.

Se te dar un nmero

en una matriz de tamao

1.1.4.

m que indica
n m nmeros

que indica las columnas que tu matriz tendr, y otro nmero

las las que tu matriz debera tener, seguido de

nxm,

nm

nmeros. Debes almacenar los

y devolverla.

Mostrando matrices (1pt)

Haz un mdulo que, dado una matriz, la muestre.

1.1.5.

Shush repetidos! (3pts)

Haz un mdulo que, dado un vector

X,

devuelva un nuevo vector

sin repetir ninguno.

EJEMPLO:

PARAMETRO
{1 , 5 , 3 , 7 , 8 , 3 , 7 , 3 , 9 , 0 , 1 , 6 , 5}
RESPUESTA
{1 , 5 , 3 , 7 , 8 , 9 , 0 , 6}

con los elementos de

X,

pero

Conjunto Unin (3pts)

1.1.6.

Haz un mdulo que, dados dos vectores

conjunto resultante de realizar una unin entre

Y , devuelva
X y Y.

un nuevo vector

cuyo contenido sea el

Nota: Un conjunto no tiene elementos repetidos


Nota2: Los elementos de los vectores podran no estar ordenados
EJEMPLO:

PARAMETROS
X = {1 , 2 , 3 , 3 , 3 , 4 , 5 , 6 , 6 , 7}
Y = {1 , 2 , 3 , 9 , 0}
RESPUESTA
Z = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 9 , 0}
Cacera de ndices (3pts)

1.1.7.

Haz un mdulo que, dado un vector

que es igual a

y un nmero

a,

devuelva el ndice del primer elemento de

a.

NOTA: Debes asumir que el ndice del primer elemento de un vector es 0


EJEMPLO:

INPUT
X = {3 , 6 , 2 , 6 , 1 , 4}; a = 6
OUTPUT
1
La Diagonal (2pts)

1.1.8.

Haz un mdulo que, dada una matriz cuadrada


los elementos de la diagonal principal de la matriz

M,
M.

devuelva un vector

Z,

cuyos elementos sean

La diagonal principal de una matriz, son todos aquellos elementos que estn dentro de la gran
diagonal que comienza en la esquina superior izquierda de la matriz, y termina en la esquina inferior
derecha.

EJEMPLO:

PARAMETROS
M = {{1 , 4 ,
{6 , 3 ,
{4 , 7 ,
{0 , 0 ,
{1 , 3 ,

5,
7,
7,
7,
6,

8,
9,
4,
0,
3,

3} ,
5} ,
8} ,
5} ,
2}}

RESPUESTA
Z = {1 , 3 , 7 , 0 , 2}

Isimo vector la (2pts)

1.1.9.

Haz un mdulo que, dada una matriz


de la la con el ndice

M , y un nmero i, devuelva un vector hecho con los elementos

de la matriz.

NOTA: La primera la de la matriz tiene el ndice 0


EJEMPLO:

PARAMETROS
M = {{1 , 4 ,
{6 , 3 ,
{4 , 7 ,
{0 , 0 ,
{1 , 3 ,
3

5,
7,
7,
7,
6,

8,
9,
4,
0,
3,

3} ,
5} ,
8} ,
5} ,
2}}

RESPUESTA
Z = {0 , 0 , 7 , 0 , 5}

1.1.10.

Eliminar un elemento sin dejar rastro (3pts)

V , de tamao n, y un ndice i, elimine el elemento en el ndice i


V , y recorra todos los elementos que estn a la derecha de i, una posicin hacia la izquierda.

Haz un mdulo que, dado un vector


del vector

X
V.

El mdulo debera devolver un nuevo vector


eliminado al elemento con el ndice

del vector

de tamao

n 1,

que es el resultado de haber

EJEMPLO:

PARAMETROS
V = {1 , 4 , 7 , 3 , 7 , 3 , 2 , 5 , 3 , 7 , 0}
i = 4
RESPUESTA
X = {1 , 4 , 7 , 3 , 3 , 2 , 5 , 3 , 7 , 0}

1.1.11.

Eliminar un vector sin dejar rastro (3pts)

Haz un mdulo que, dada una matriz


con ndice

de la matriz

de tamao

M.

EJEMPLO:

nxm,

seguida de un ndice

i,

elimine la la

PARAMETROS
M = {{1 , 3 ,
{4 , 2 ,
{1 , 6 ,
{4 , 3 ,
0

7,
9,
3,
8,

3,
2,
7,
2,

0} ,
9}.
2} ,
1}} ;

RESPUESTA
M = {{4 , 2 , 9 , 2 , 9}.
{1 , 6 , 3 , 7 , 2} ,
{4 , 3 , 8 , 2 , 1}}

1.1.12.

Insertando un elemento (Vector) (2pts)

V,

Dado un vector

un ndice

recorrer todos los elementos, desde

y un nmero

n,

insertar el nmero

en el ndice

del vector, y

en adelante, una posicin hacia la izquierda.

EJEMPLO:

PARAMETROS
V = {1 , 0 , 5 , 9 , 4 , 9 , 8}
i = 2
n = 99
RESPUESTA
V = {1 , 0 , 99 , 5 , 9 , 4 , 9 , 8}

1.1.13.

Insertando un vector (Matriz) (2pts)

M de tamao mxn, un ndice i, y un vector V


i, y recorrer todas las las que estn debajo de

Dada una matriz


en la la con ndice

EJEMPLO:

PARAMETROS
M = {{1 , 6 , 4 , 8} ,
{5 , 7 , 9 , 0} ,
{3 , 6 , 4 , 2}}
i = 1
V = {8 , 8 , 8 , 8}
RESPUESTA
X = {{1 , 6 ,
{8 , 8 ,
{5 , 7 ,
{3 , 6 ,

4,
8,
9,
4,

8} ,
8} ,
0} ,
2}}

de tamao

m,

insertar el vector

la isima la un lugar hacia abajo.

1.1.14.

Agrandando vectores (10pts)

C++, Java, y muchos otros lenguajes de programacin ms, tienen en sus libreras estndar una
librera que permite crear vectores de tamao dinmico, es decir, el tamao puede cambiar a medida
que se vaya necesitando ms espacio.
Para conseguir esto, hay que hacer uso de un mtodo conocido como relocalizacin de datos.
Consiste en lo siguiente:
Se declara el vector con un tamao jo.
Se va llenando el vector con datos.
Cuando ya no hay espacio para ms datos, el vector con el que se est trabajando se destruye,
pero antes de ser destruido, todos sus datos son copiados a un nuevo vector, cuyo tamao es el
cuadrado del tamao del vector antiguo.
Se repiten los pasos 2 y 3 cuantas veces sea necesario.
Haz un algoritmo que, dado un vector
Es evidente que solo las primeras

n2 n
1.2.

posiciones de

V , de tamao n, devuelva un nuevo vector X de tamao n2 .


X estarn llenas. Debes dejar las siguientes

posiciones del vector

intactas.

Problemas sencillos (Ad-Hoc)

En esta seccin encontrars ejercicios sencillos que se pueden resolver utilizando matrices y vectores.
No est destinada para que pienses mucho, la solucin es sencilla, solamente para que te familiarices
con el uso de los vectores y las matrices.

1.2.1.

La criba de Eraststenes (10pts)

Haz un mdulo que, dado un nmero

n,

genere una criba de eraststenes de tamao

no sabes qu es la criba de Eraststenes? lee el apndice 3.1!

EJEMPLO

INPUT
50
OUTPUT
CRIBA = {F ,
V,
F,
F,
F,
F,
F,
F,
F,
F,

F,
F,
V,
F,
F,
F,
V,
F,
V,
F,

V,
V,
F,
V,
F,
F,
F,
V,
F,
V,

V,
F,
V,
F,
V,
F,
F,
F,
V,
F,

F,
F,
F,
V,
F,
V,
F,
F,
F,
F}

n.

1.2.2.

y tambin el bonacci? (8pts)

S, el algoritmo que conoces para encontrar nmeros bonaccis tambin es uno de los ms lentos.
Haz un algoritmo que genere un vector de tamao

n que contenga la secuencia de nmeros bonaccis

de forma rpida.
por qu el mtodo tradicional es lento? Porque al hacer esto:

a = b
b = f
f = a + b
hacemos, por cada nmero en la serie bonacci, 3 operaciones: asignar el valor de

a;

asignar el valor de

a la variable

En cambio, en un vector:

y asignar el valor de

fi = V [i 1] + V [i 2],

a+b

a la variablee

f.

solamente se realiza una operacin por cada

trmino de la serie bonacci.

1.2.3.

Rapidez o Memoria? (5pts)

El algoritmo que hiciste para el ejercicio anterior (y tambin el bonacci?) es ms rpido pero
ocupa ms memoria. En tu opinin, cul algoritmo es mejor? el tradicional? o el que utiliza vectores?

1.2.4.

Suma Mxima (5pts)

Te dan un vector

de tamao

con valores que oscilan entre

106

106 .

Imagina que estos

valores representan dinero, y que t puedes decidir si tomar o no el valor de cualquier ndice

i.

Cul

es la mayor cantidad de dinero que podras tomar?

EJEMPLO

PARAMETROS
V = {0 , 34 , -5 , 100 , -1000 , -1 , 3}
n

1.2.5.

RESPUESTA
137

Sumatoria del rango (5pts)

Dado un vector V de tamao n,


V [i] + V [i + 1] + ... + V [j]?

y dos nmeros

i<n

j < n.

Cul es el resultado de sumar

Suma de la pequea Matriz (10pts)

1.2.6.

Dada una matriz


comienza en

Mi,j

M,

y dos pares de nmeros:

y que termina en

i, j , k

l,

cul es la suma de la sub matriz que

Mk,l ?

Rango con la sumatoria ms grande (10pts)

1.2.7.

Dado un vector

de tamao

n, encuentra los dos nmeros i y j

cuya sumatoria sea la ms grande.

Submatriz con la suma ms grande (10pts)

1.2.8.

M cuadrada, de tamao nxn, cuyos nmeros oscilan entre 106 y 106 , encuentra
los 4 nmeros i, j, k, l, tal que la suma de todos los elementos de la submatriz que comienza en Mi,j
y termina en Mk,l , es ms grande que la suma de cualquier otra submatriz.
Dada una matriz

Vector de primos (10pts)

1.2.9.

Dado un vector
vector

X,

de tamao

1 n 1000,

cuyos valores oscilan entre

que contenga todos los elementos primos de

100,

devolver otro

V.

Utiliza la Criba de Eraststenes para resolver este problema

EJEMPLO

PARAMETROS
V = {3 , 6 , 8 , 7 , 9 , 13 , 7 , 15 , 6}
RESPUESTA
X = {3 , 7 , 13 , 7}

1.2.10.

Cuntos primos? (10pts)

Dados dos nmeros

b,

Cuntos primos hay en el rango

[a, b]?

Utiliza la Criba de Eraststenes para resolver este problema

1.3.

Dibujando en Matrices

Muchos de los ejercicios (si no son todos) que te plantearn en clases consisten en dibujar patrones
en una matriz. La siguiente seccin contiene ejercicios en los que debers dibujar matrices con patrones.

10

X (1pt)

1.3.1.

Haz un algoritmo que, dado un nmero

n,

genere una matriz cuadrada de tamao

con una gran

dibujada en su centro.

EJEMPLO

INPUT
5
6
OUTPUT
1 0 0 0
0 1 0 1
0 0 1 0
0 1 0 1
1 0 0 0

1
0
0
0
1

1
0
0
0
0
1

0
1
0
0
1
0

0
1
0
0
1
0

0
0
1
1
0
0

0
0
1
1
0
0

1
0
0
0
0
1

Y (2pts)

1.3.2.

Dado un nmero

n,

dibuja una matriz cuadrada, de tamao

medio.

EJEMPLO

INPUT
5
6
OUTPUT
1 0 0 0
0 1 0 1
0 0 1 0
0 0 1 0
0 0 1 0

1
0
0
0
0

1
0
0
0
0
0

0
1
0
0
0
0

0
1
0
0
0
0

0
0
1
1
1
1

0
0
1
1
1
1

1
0
0
0
0
0

11

n n,

con una gran Y dibujada en el

1.3.3.

Tablero de Ajedrez (5pts)

Dado un nmero

n, generar una matriz M

de tamao

n n con el patrn de un tablero de ajedrez,

representando el blanco con una 'O', y el negro con una 'X'

EJEMPLO

INPUT
5 7
OUTPUT
O X O X
X O X O
O X O X
X O X O
O X O X

1.3.4.

O
X
O
X
O

X
O
X
O
X

O
X
O
X
O

El tringulo de Pascal .(20pts)

Haz un algoritmo que, dado un nmero

n,

genere un tringulo de pascal con

Si no sabes qu es un tringulo de pascal, te recomiendo que leas el apndice

EJEMPLO

INPUT
8
OUTPUT
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 1
0 0 1 0
0 1 0 7
1 0 8 0

0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 1 0 2 0 1 0 0 0 0 0 0
0 1 0 3 0 3 0 1 0 0 0 0 0
1 0 4 0 6 0 4 0 1 0 0 0 0
0 5 0 10 0 10 0 5 0 1 0 0 0
6 0 15 0 20 0 15 0 6 0 1 0 0
0 21 0 35 0 35 0 21 0 7 0 1 0
28 0 56 0 70 0 56 0 28 0 8 0 1

12

niveles.
3.2.

1.3.5.

Rectngulos Concntricos (5pts)

Haz un algoritmo que, dado un nmero

y otro nmero

m,

dibuje una matriz de tamao

nm

hecha de caracteres, que contenga rectngulos concntricos, alternando los caracteres X y O entre
rectngulos vecinos.

EJEMPLO:

INPUT
10 , 5
OTPUT
X X X
X O O
X O X
X O O
X X X

1.3.6.

X
O
X
O
X

X
O
X
O
X

X
O
X
O
X

X
O
X
O
X

X
O
X
O
X

X
O
O
O
X

X
X
X
X
X

Espiral (5pts)

Haz un algoritmo que, dados dos nmeros

m,

nmeros naturales.

EJEMPLO:

INPUT
4, 5
OUTPUT
1 2 3
14 15 16
13 20 17
12 19 18
11 10 9

4
5
6
7
8

13

dibuje una matriz de

n m,

con la secuencia de

1.3.7.

Gusano (5pts)

Haz un algoritmo que, dado un nmero

n y otro nmero m,
n m.

dibuje un gusanito con la secuencia de

nmeros naturales, dentro de una matriz de

EJEMPLO

INPUT
4 5
OUTPUT
1 2 3
8 7 6
9 10 11
16 15 14
17 18 19
1.3.8.

4
5
12
13
20

Gusano Inclinado (10pts)

Haz un algoritmo que, dados dos nmeros


nmeros naturales, dentro de una matriz

de

y m, dibuje
n m.

un gusanito inclinado con la secuencia de

Para dibujar el gusano inclinado dentro de la matriz, debes poner los nmeros de la secuencia de
nmeros naturales, en la matriz

M,

en el orden en el que el gusanito de la imagen toca los cuadrados.

14

EJEMPLO

INPUT
4 5
OUTPUT
1 2 6
3 5 8
4 9 13
10 12 16
11 17 18

7
14
15
19
20

Diamantes (5pts)

1.3.9.

Dado un nmero

n,

dibuja un diamante dentro de una matriz de caracteres

de tamao

n n.

El diamante debe estar formado por el caracter X, y los espacios en blanco, con caracteres O.

INPUT
5
6
OUTPUT
O O X O
O X X X
X X X X
O X X X
O O X O

O
O
X
O
O

O
O
X
X
O
O

O
X
X
X
X
O

O
X
X
X
X
O

X
X
X
X
X
X

X
X
X
X
X
X

O
O
X
X
O
O

NOTA: En caso de que el nmero sea par, los picos del diamante, deberan ser dos Xs.

15

1.3.10.

Triforce (30pts)

1
Jugaste Zelda? Link (el personaje principal) est en bsqueda de la mstica Trifuerza.
Una trifuerza son tres tringulos equilteros del mismo tamao, repartidos de tal forma que, forman
un trangulo invertido en el centro (como se muestra en la imagen).

Haz un algoritmo que, dado un nmero


altura de

n,

dibuje una trifuerza, cuyos tringulos tengan la

caracteres. Utiliza la X para dibujar los tringulos, y la O para representar

espacios vacos.
EJEMPLO:

INPUT
3
5
OUTPUT
O O O O
O O O O
O O O X
O O X O
O X X X
X X X X

O
X
X
O
O
X

X
X
X
O
O
O

O
X
X
O
O
X

O
O
X
O
X
X

O
O
O
X
X
X

O
O
O
O
X
X

O
O
O
O
O
X

OJO: los tres tringulos formados con las Xs, tienen una altura de 3 las.

1 newfags can't...
2 Ten el
para buscar la

Valor

Sabidura que te conceder el Poder

16

I accidentally the whole city! (40pts)

1.3.11.

Ocurri un accidente nuclear en una ciudad cuadrada! tenan garrafas de uranio en ciertos lugares
de la ciudad, y accidentalmente todas estallaron al mismo tiempo...
El equipo de bomberos ha decidido representar la ciudad como una matriz cuadrada, y tiene en su
base de datos

n tricas de nmeros, que representan las coordenadas donde haba una garrafa de uranio,

y la cantidad de uranio almacenada en ese lugar.

El equipo de bomberos necesita saber qu lugares de la ciudad estn irradiados . Para ello, te han
enviado documentos ultrasecretos en los que te explican cmo funciona la radiacin que despide una
garrafa de uranio al estallar:
La radiacin que queda luego de estallar una garrafa con
de

2n + 1

n kilos de uranio es un diamante cuadrado

kilmetros de altura y anchura, cuyo centro es la zona en la que se encontraba la garrafa de

uranio.
Imagina que la ciudad mide
centro (en

C2,2

55

kilmetros, y est representada por una matriz

C,

justo en el

haba una garrafa de uranio que pesaba 1 kilo. La zona irradiada, se representa con

Xs, y las zonas no afectadas con Os:

O
O
O
O
O

O
O
X
O
O

O
X
X
X
O

O
O
X
O
O

O
O
O
O
O

Se te dar un nmero entero


uacin, se te dar un nmero

n,

l,

que indica el alto y ancho (en kilmetros) de la ciudad. A contin-

seguido de

tricas de nmeros, que representan: la la y la columna

en la que se encontraba la garrafa, y la cantidad de uranio (en kilogramos) que haba en la garrafa.
Debes imprimir un mapa de los lugares irradiados en la ciudad. El mapa consiste en una matriz
de tamao

l l,

en la que cada cuadrito representa un kilmetro cuadrado de la ciudad. Los cuadritos

que contengan una X son zonas irradiadas, y los cuadritos que contengan una O, representan zonas
no afectadas.

3 No olvides que el Uranio es radioactivo!

17

EJEMPLO

10
4
0 0
9 9
5 5
7 4
X
X
X
X
X
X
X
O
O
O

1.4.

5
2
2
3
X
X
X
X
X
O
O
O
O
O

X
X
X
X
X
X
O
O
O
O

X
X
X
O
O
X
O
O
O
O

X
X
O
O
X
X
X
O
O
O

X
O
O
X
X
X
X
X
O
O

O
O
X
X
X
X
X
O
O
O

O
X
X
X
X
X
X
X
O
X

O
O
X
X
X
X
X
O
X
X

O
O
O
X
X
X
O
X
X
X

Razonamiento y Lgica

Esta seccin consiste en ejercicios que te harn pensar. Todos se resuelven utilizando vectores o
matrices. Aqu encontrars los primeros problemas l33t h4x0r!
ADVERTENCIA: Algunos de estos ejercicios

podran

necesitar mtodos de ordenacin... los ejerci-

cios l33t h4x0r podran (deberan?) necesitar algo ms

1.4.1.

El Telefrico (10pts)

Se te dar un vector

de tamao

que representa una supercie. Cada dato de

altura de la supercie en ese punto, como en la imagen

18

V,

representa la

Tu deber es indicar de qu punto a qu punto se podra construir el telefrico que abarque ms


extensin de terreno en el eje x. Ten en cuenta que no puedes construir un telefrico de un punto a
otro, si existe algn punto de la supercie que choque con su ruta.

NOTA: debes asumir que

i < n,

se cumple que la distancia en el eje x entre

Vi

Vi+1

es siempre

la misma.
NOTA2: La respuesta al ejemplo del grco es: desde 1 hasta 6. Porque es el telefrico ms largo
(en extensin en eje x) que se puede formar

1.4.2.

OVNI (10pts)

Con el mismo mtodo que se utiliz en el problema 1.4.1, un extraterrestre te dar un vector
tamao

n,

de

que representa la supercie inferior de su nave espacial.

A continuacin, te dar un vector

T,

que representa la supercie superior del terreno en el que

quiere aterrizar.
Debes indicarle al extraterrestre en qu punto del terreno puede aterrizar, indicndole el ndice del
vector terreno

en el que el primer ndice del vector

tendra que posarse para que toda su nave

pueda aterrizar.
Ten en cuenta que el ovni puede aterrizar en un lugar, si y solo si, la gura que forma la supercie
inferior de su nave encaja a la perfeccin con la supercie en la que se posar. (como en la imagen).

19

NOTA: debes asumir que

i < n,

se cumple que la distancia en el eje x entre

Vi

Vi+1

es siempre

la misma.

1.4.3.

Estoy a dieta (20pts)

Harris Pilton est a dieta porque quiere participar en el concurso de belleza Las Anorxicas ms
Esbeltas de Azeroth. Para participar en este concurso, el requisito principal, es pesar menos de

n gramos.

A Harris Pilton le encantan los chocolates! pero cada vez que come un chocolate, su peso aumenta
la misma cantidad que el peso del chocolate. Su novio, Arthas le ha regalado una cajita de chocolates.
Harris Pilton quiere comer la mayor cantidad de chocolates posibles, pero que an pueda participar
en Las Anorxicas ms Esbeltas de Azeroth. Como nunca fue buena en matemtica ni en razonamiento,
no sabe qu chocolates comer, as que te ha pedido ayuda a t, con la promesa de que, si la ayudas, te
regalar un [agujero portable] ([Portable Hole])!
Le ayudas?
Se te dar un vector

V,

V [i] indica el peso en gramos del isimo chocolate de la caja, a


n, que indica el peso mximo que pueden tener las postulantes al
un nmero p, que indica el peso actual de Harris Pilton.

donde

continuacin, se te dar un nmero


concurso de belleza, y por ltimo,

Debes mostrar una serie de nmeros, que indican la posicin en la cajita de los chocolates que
Harris Pilton va a comer. Ten en cuenta que el peso de Harris Pilton, despus de comer los chocolates,
no debe exceder

gramos.

EJEMPLO

20

PARAMETROS
indice : 0 1 2 3 4 5 6 7 8 9 10 11
V =
{1 10 4 3 7 1 5 3 2 7 3 1}
n = 100
p = 90
RESPUESTA
0 5 11 8 7
NOTA: el orden en el que muestres la posicin de los chocolates es irrelevante

1.4.4.

Sembrando Semillas Mgicas (l33t h4x0r)

NOTA: Este problema ha sido adaptado de [MISSING]


Un cientco loco boliviano ha descubierto unas semillas mgicas que quitan el hambre! Las semillas
son muy caprichosas, y para que crescan correctamente, tienen que crecer en el centro de La Paz, y
necesitan que el terreno cumpla con todos estos requisitos:

en toda la la superior, no debe haber ninguna semilla.


en toda la la inferior, tampoco debe haber ninguna semilla.
en la celda que est a su derecha, tampoco deben haber semillas.
en la celda que est a su izquierda, tampoco deben haber semillas.

Si estas 4 condiciones se cumplen, la semilla crecer, de lo contrario, simplemente morir.

21

El cientco ha estudiado el terreno, y tiene una matriz

de

nm

llena con nmeros que indica

cunto dinero va a ganar si siembra una semilla en ese lugar ADVERTENCIA: el nmero puede ser
negativo, es decir, el cientco puede perder dinero al sembrar una semilla en esa posicin!.
El cientco quiere saber cul es la cantidad mxima de dinero que puede ganar, si decide utilizar
ese terreno para sembrar sus semillas. le ayudas?
Se te dar un nmero
matriz

T,

y otro nmero

m,

que indican la cantidad de las y columnas que tiene la

respectivamente.

A continuacin, se te darn

las, cada una con

nmeros separados entre s con un espacio,

que indican la ganancia estudiada por el cientco, representada por la matriz


Debes indicar un nmero

M.

g que indica la ganancia mxima que el cientco podra obtener al sembrar

sus semillas en ese terreno.

EJEMPLO

INPUT
5 7
2 5 6 7 5 4 7
1 2 7 0 8 6 -1
3 87 -3 4 -4 7 10
-87 1 3 65 3 7 2
-1 -3 -6 -8 -5 -3 1
OUTPUT
114

1.4.5.

Mi amigo superticioso (10pts)

Mi amigo es muy superticioso, y cree que pisar las rallas del piso es mala suerte.
Me dijo que ha registrado en un vector el largo de las baldozas que hay desde mi casa hasta su casa,
as que, si le digo cul es la longitud de mi paso, l me va a decir cuntas rayas he pisado solo por ir a
visitarlo.
l cree que, dicindome esto, har que yo recapacite y deje de pisar las rallas del piso tan despreocupadamente.
Yo no creo en esas superticiones, pero me intriga saber cmo hizo un algoritmo capaz de encontrar
tal respuesta... puedes hacer un algoritmo que haga lo mismo?
Se te dar un nmero

que representa la longitud de mi paso, seguido de un nmero

que indica

la cantidad de baldozas que hay en el camino.


A continuacin, se te darn

nmeros, que indican las medidas de las

camino, ordenadas, de derecha a izquierda, segn su aparicin.

EJEMPLO

22

baldozas que hay en el

En el grco, es como si hubiera puesto tinta en mis zapatos. Mi longitud de paso es de 2, y la


medida de las baldozas est escrita debajo de cada baldoza. Con estas especicaciones, pisara 3 veces
raya.

PARAMETROS
p = 2
n = 7
2 4 1 2 1 1 1
RESPUESTA
3

1.4.6.

Facebook (l33t h4x0r)

La persona

se ha enterado de un chisme! y se lo va a contar a todas las personas con las que

habitualmente habla. Todas estas personas, a su vez, se lo contarn a todas las personas con las que
suelen hablar.
Hay una persona

que no tiene que enterarse! pero con toda esa maraa de conexiones sociales, es

difcil predecir lo que pasar...


Se enterar la persona

b?

Cada persona est identicada por un caracter. Una cadena de texto, representa lo siguiente:

El primer caracter (x) de la cadena, es una persona.


Todos los siguientes caracteres de la cadena, representan las personas con las que

23

suele hablar.

Se te dar un nmero
darn

n,

que indica la cantidad de personas que debes considerar. Luego, se te

cadenas de texto, que representan las relaciones de las

A continuacin, se te dar un caracter


un caracter

a,

personas.

que indica la persona que comienza el chisme, seguido de

b.

Debes imprimir OH NOES! si la persona

se entera del chisme, y KTHXBYE! si la persona

no se entera del chisme.

EJEMPLO

INPUT :
6
adb
bcfe
cb
daf
eb
a
c
OUTPUT :
OH NOES !
en el ejemplo anterior, 'a' comienza el chisme, luego, 'a' le dice a 'b' y a 'd', y 'b' le dice a 'c', que
es la persona que no debera enterarse del chisme.

OTRO EJEMPLO

24

INPUT :
6
abd
bade
ce
dabf
ebc
fd
a
c
OUTPUT
OH NOES !
En el ejemplo anterior, 'a' le dice a 'b', y 'b' le dice a 'a', y 'a' le dice a 'b' (...)

4 'b' le dice a 'e', y

'e' le cuenta a 'c', que es la persona que no debera enterarse.

LTIMO EJEMPLO

INPUT
6
abd
ba
cef
da
efc
fec
a
c
OUTPUT
KTHXBYE !
No hay forma de que 'c' se entere del chisme.

4 looping forever and ever? cuidado con los ciclos innitos, necesitas llevar un registro de las conversaciones que ya
haz considerado para no enciclarte ;D

25

2.

Mtodos de Ordenacin

2.1.

Repaso de Mtodos de Ordenacin

En esta seccin, demostrars que entiendes los mtodos de ordenacin ms sencillos de entender.

2.1.1.

Funcionamiento de Bubble Sort (Mtodo Burbuja) (10pts)

Explica en palabras... cmo funciona el mtodo burbuja?

2.1.2.

Algoritmo de Bubble Sort (10pts)

Dado un vector

V,

de

datos, haz un algoritmo para ordenarlo ascendentemente, mediante el

mtodo burbuja.

2.1.3.

Desventaja del mtodo burbuja (10pts)

Qu desventaja puedes ver en el mtodo burbuja?

2.1.4.

Funcionamiento de Insertion Sort (por insercin) (10pts)

Explica con tus propias palabras cmo funciona el insertion sort.

2.1.5.

Algoritmo de Insertion Sort (10pts)

Dado un vector

2.1.6.

V,

con

elementos, ordnalo ascendentemente, utilizando el Insertion Sort.

Desventajas... (10pts)

Investiga: Qu desventaja le ves al insertion sort?

2.1.7.

El mejor (10pts)

Investiga: Cul es/son el/los mejor/es mtodo/s de ordenacin?

2.1.8.

Por qu es el mejor (20pts)

Por qu?

26

Cmo funciona? (80pts)

2.1.9.

Explica con tus palabras cmo funciona el mejor algoritmo de ordenacin


Haz un algoritmo que, dado un vector

de

datos, lo ordene mediante el mejor algoritmo de

ordenacin.

Ordenando cadenas (30pts)

2.1.10.

Haz un algoritmo que, dada una cadena


teres de

3.

C,

C,

devuelva una cadena

D,

que contenga todos los carac-

pero ordenados.

Apndice

3.1.

Sobre la criba de Eraststenes...

Cmo encuentras nmeros primos? tomas un nmero y vericas, uno a uno, si el nmero es divisible
entre cualquier otro nmero que no sea l mismo o uno.
Esta forma de encontrar primos es una de las ms inecientes de encontrar primos. Existe una forma
mejor, mediante la criba de Eraststenes, en este mtodo, en vez de enfocarnos en un solo nmero,
encontramos todos los primos dentro de un rango.
Sin embargo, para recordar todos estos primos, necesitamos guardarlos en algn lugar: un vector.
As que la criba de Eraststenes se guarda en un vector de booleanos, en el que, si el lugar con el
ndice

nmero

es verdadero, entonces el nmero

es primo; si el lugar con el ndice

es falso, entonces el

es falso.

Construyendo la criba
Inicializas el vector de booleanos a un tamao
(E[1]

= f alse),

n+1

(vector con ndice basado en 0). Tachas el 1

porque es un caso especial y no es primo. (Tambin tachas el 0)

i:
0 1 2 3 4 5 6 7 8 9 10 11 12 13
E = {F , F , V , V , V , V , V , V , V , V , V , V , V , V }
Comienzas con el 2, no lo tachas pero tachas a todos sus mltiplos (4, 6, 8, ...) hasta que se acabe
el vector.

i:
0 1 2 3 4 5 6 7 8 9 10 11 12 13
E = {F , F , V , V , F , V , F , V , F , V , F , V , F , V }
Partiendo del 2, buscas al siguiente nmero que no est tachado (ser el 3). No tachas al 3, pero
tachas a todos sus mltiplos

i:
0 1 2 3 4 5 6 7 8 9 10 11 12 13
E = {F , F , V , V , F , V , F , V , F , F , F , V , F , V }
27

Partiendo del 3, buscas al siguiente nmero que no est tachado (ser el 5). No tachas al 5, pero
tachas a todos sus mltiplos.

i:
0 1 2 3 4 5 6 7 8 9 10 11 12 13
E = {F , F , V , V , F , V , F , V , F , F , F , V , F , V }
Si te das cuenta, al enfocarnos en el 5 ya no tachamos nada. La raz cuadrada de 13 es aproximadamente 3. Y est demostrado que, despus del 3, al seguir repitiendo el procedimiento, ningn nmero
tachar nada.
En este punto, en el vector booleano, todos los ndices de

que estn en verdadero son nmeros

primos, y podra decirse que:

es primo

<=> E[a] = V erdadero

El algoritmo se reduce a lo siguiente:

Inicializas un vector de booleanos

de tamao

n.

Tachas el 1 y el 0 (caso especial).


Buscas la siguiente posicin
No tachas a

x,

x
3.2.

que no est tachada.

pero s al resto de sus mltiplos.

Buscas la siguiente posicin


Es

que no est tachada.

>sqrtn? Entonces la criba est completa! : de lo contrario, repetir repetir con

en vez de

desde el paso 4.

Sobre el tringulo de Pascal...

El tringulo de pascal es un trangulo que comienza con tres unos:

0
1

La siguiente lnea se genera de la siguiente forma: el 1er y ltimo nmero son unos. El 2do nmero,
se genera sumando a los dos nmeros que estn arriba de l:

0
1
2

1
2

Las siguientes lneas tambin se generan de la misma forma:

0
1
2
3
4

1
4

1
3

1
2
6

1
3

1
4

Esta ltima, es un tringulo de pascal de 4 niveles.

28

3.3.

El cdigo Prometido (ordenando caracteres)

En la 1ra parte de la gua de ejercicios, faltaba una porcin de cdigo en la que se muestre cmo
ordenar los caracteres de una cadena de texto en Java utilizando la librera estndar.
He aqu el cdigo prometido... el poder est en tus manos! salo con prudencia... y no olvides que
es muy importante entender cmo funcionan los mtodos de ordenacin, porque habrn problemas ms
complicados, que requerirn que t entiendas estos principios!

import java . util . Arrays ;


public class Sorting {
public static void main ( String [] args ) {
String x = " FIRST SOLVE THE PROBLEM ! THEN WRITE THE CODE !! : P ";
char [] y = x . toCharArray ();
Arrays . sort ( y );
x = String . copyValueOf ( y );
System . out . println ( x );
}
}

29

You might also like