Vous êtes sur la page 1sur 21

.

INF-111

2da Gua de Ejercicios


Ejercicios de Modularidad y Cadenas

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

2 de mayo de 2014

ndice

1. Programacin Modular
1.1.

(4pts)

4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.1.

Primos: Siguiente y anterior . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.2.
1.2.

Analizando Algoritmos

Serie de factoriales

Primeros Pasos

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

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

1.2.4.

(2 pts)
(2 pts) . . . .
Eliminando Dgitos (2 pts) . . .
Insertando Dgitos (2 pts) . . . .

1.2.5.

Eliminar y devolver el ensimo dgito

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

1.2.6.

Cohesin y Acoplamiento:

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

Caminando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.1.

Es bonacci?

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

1.3.2.

Es primo?

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

TIMTOWTDI (AKA: TimTowdy)

(6 pt)

1.3.3.

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

Shush impares!

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

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

1.2.1.

El bonacci ms cercano

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

1.2.2.

El ensimo dgito

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

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

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

1.2.3.

1.3.

1.3.4.
1.3.5.
1.3.6.
1.3.7.
1.3.8.
1.3.9.
1.3.10.
1.3.11.
1.4.

(2 pt)
(2 pt) . .

(2 pts)
Preguntas (6 pts)

(2 pt) . . . . . .
Shush pares! (2 pt) . . . . . . .
OH NOES! (10 pt) . . . . . . .
Shush ltimo dgito! (2 pt) . . .
Factoriales! (2 pt) . . . . . . . .
Optimizacin vs Mdulos (4 pt)
Conteo de dgitos (2 pt) . . . .
SWAP! (2 pt) . . . . . . . . . .

Corriendo

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

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

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

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

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

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

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

10

1.4.1.

El signicado de la vida

1.4.2.

El examen

(32 pt)

(15 pt)

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

10

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

10

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

10

(48 pts)

1.4.3.

Ordenando Dgitos

1.4.4.

Ms series?! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.4.5.

Poblacin de primos entre factoriales

11

(10 pt)

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

2. Cadenas
2.1.

12

Fciles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

2.1.1.

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

12

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

12

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

12

2.1.2.
2.1.3.
2.1.4.
2.1.5.
2.2.

(4pt) .
Cuntas veces? (4pt)
.
Conteo de A en B (4pt) .
Eliminando (4pt) . . . .
Buscando palabras (4pts)

Sencillo pero til

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

13

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

13

Que comiencen los juegos... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

2.2.1.

Es consonante?

13

2.2.2.

es vocal?

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

13

2.2.3.

Juego de Nios

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

14

2.2.4.
2.2.5.

(4pts)

(4pts) . . .
(10pts)
Balanza (4 pt) . . . . .
Palndromes (4pt) . . .

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

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

14

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

14

(10pts)
(20pts) .

2.2.6.

Podra ser palndrome?

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

14

2.2.7.

Forma un palndrome!

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

15

2.2.8.
2.2.9.
2.2.10.
2.2.11.
2.2.12.
2.2.13.
2.2.14.

(4pts) . . .
(10pts) . . .
Anagramas (10pts) . . . . . .
Arrays.sort() (15pts) . . . . .
Concursos por sms (10pts) . .
Qu es Criptoanlisis? (20pts)
El cifrado del Csar (20pts) . .
Mensajes Ocultos

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

15

Contando Cercas

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

15

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

16

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

16

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

17

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

18

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

19

README.txt
Es importante que leas esto antes de empezar, de lo contrario, trabajars de ms, en vano.
En cada seccin debers juntar 100 puntos. Si juntas ms de 100 puntos en una seccin, el exceso
se pierde (no se acumula). Por ejemplo, si haces el ejercicio 1.4.5 (10 puntos), 1.4.4.frankenstein (15
puntos), el 1.4.3 (48 puntos) y el 1.4.2 (32 puntos), tendrs 100 puntos en la seccin 1. Modularidad,
y los otros 5 puntos se perdern.
Esta prctica tiene ms de 40 ejercicios, no te preocupes, no tienes que hacerlos todos: elije estratgicamente los problemas que resolvers, de modo que por seccin, tus puntos sumen 100.
El puntaje nal, ser un promedio de los puntos que tienes en cada seccin. Esta prctica tiene 4
secciones, y una seccin nal que contiene ejercicios l33t h4x0r.
Por el momento, solo las primeras dos secciones estn disponibles. Las otras dos estarn disponibles
a partir del lunes a medio da.

Qu son los ejercicios l33t h4x0r?


A lo largo de la prctica, encontrars algunos ejercicios etiquetados con esta medalla:

Estos son ejercicios l33t h4x0r. Si haces uno de estos ejercicios, ya no tienes que hacer el resto de
ejercicios de la prctica, y automticamente tienes el 100 % de los puntos de esta prctica.
Ten en cuenta que, si haces uno de estos ejercicios, tendrs que defenderlo ante tu auxiliar. Si resulta
tener algn error lgico (o si no entiendes tu algoritmo), el ejercicio quedar anulado y tendrs 0 %.

1.

Programacin Modular

1.1.

Analizando Algoritmos

(4pts)

A continuacin se te darn varios ejemplos de algoritmos en los que se usa modularidad... por cada
problema propuesto, habrn dos o ms soluciones "propuestas", puedes asumir (est garantizado) que
toda solucin propuesta es correcta (es decir, da con la respuesta correcta), por esta razn no deberas
preocuparte en veriricar si el cdigo tiene bugs lgicos, no gastes tus fuerzas en eso, concntrate en:
Analiza las soluciones a los problemas que se te proponen a continuacin, y elige la que ms te
guste (si ninguna solucin te convence, puedes proponer una solucin nueva) indicando:

por qu te parece una buena solucin


y por cada solucin descartada, indica: por qu no te parece que sea una buena solucin.

Nota 1:

Los diagramas de ujo fueron creados con Dia

Nota 2:

los mdulos que usan los modelos se encuentran en el Apndice

1.1.1. Primos: Siguiente y anterior


Los siguientes algoritmos leen un nmero

n:

Si

grande que sea menor que n (el anterior primo de


que sea mayor que

(el siguiente primo de

n es primo, entonces muestra al nmero primo ms


n ); de lo contrario, muestra al primo ms pequeo

1.1.2. Serie de factoriales


Generar la serie para los primeros

trminos:

1 + 2 + 6 + 24 + 120 + 720 + ...

1.2.

(1)

Primeros Pasos

En esta seccin crears mdulos extremadamente sencillos, pero que probablemente necesitars en
las siguientes secciones ;)

1.2.1. El bonacci ms cercano

(2 pts)

Haz un mdulo que, dado un nmero cualquiera, devuelva al ltimo nmero bonacci que sea menor
o igual que el nmero dado.

SERIE FIBONACCI :
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584
4181 6765 10946 ...

EJEMPLOS

PARAMETROS 1
RESULTADO 1
Porque el ltimo nmero bonacci que es menor o igual que 1 es el mismo 1.

PARAMETROS 2
RESULTADO 2
Como el 2 tambin pertenece a la serie bonacci, el ltimo nmero bonacci que es menor o igual que
2, es el mismo 2.

PARAMETROS 42
RESULTADO 34
el 9no nmero de la serie bonacci es el 34, y el 10mo trmino de la serie bonacci es el 55. Como 55
>42 y 34 <42, entonces la respuesta es 34, ya que 34 es el ltimo nmero de la serie bonacci que es
menor o igual que 42.

PARAMETROS 88
RESULTADO 55
Porque 55 es el ltimo trmino de la serie bonacci que es menor o igual que 88. El siguiente trmino
de la serie bonacci es el 89, pero el 89 no cumple la condicin (89 <= 88 es falso)

1.2.2. El ensimo dgito

(2 pts)

Haz un mdulo que, dado un nmero x, y otro nmero n, te indique cul es el ensimo dgito del
nmero x.

Nota: Si n es mayor que la cantidad de dgitos en x, el mdulo debera devolver 0.

1.2.3. Eliminando Dgitos

(2 pts)

Haz un mdulo que, dado un nmero x y otro nmero n, convierta en 0 el dgito en la posicin n,
y devuelva el x modicado.

Nota: si n es mayor que la cantidad de dgitos en x, entonces el nmero que el mdulo devuelve no
debera ser distinto de x

1.2.4. Insertando Dgitos

(2 pts)

Haz un mdulo que, dado un nmero x, otro nmero n y un dgito a, inserte el dgito a en el ensimo
dgito de x.

EJEMPLO
PARAMETROS : x = 643 , n = 5 , a = 9.
RESULTADO : 90643
PARAMETROS : x =643 , n =1 , a =7.
RESULTADO : 647

1.2.5. Eliminar y devolver el ensimo dgito

(2 pts)

Haz un mdulo que, dado un nmero n, y otro nmero x, elimine el ensimo dgito de x, y devuelva
el dgito eliminado.

HINT: si reusas los mdulos que diseaste para solucionar el problema 2.2 y 2.3 evitas duplicar
cdigo.

1.2.6. Cohesin y Acoplamiento: Preguntas

(6 pts)

Dos criterios importantes que se deben tener en cuenta al usar la modularidad son: La cohesin y
el Acoplamiento.

El mdulo que se te pidi en el ejercicio 2.5 est bien acoplado?


tiene alta cohesin?
El mdulo que creaste para 2.5, en realidad, debera devolver dos valores: el primero es el dgito
que eliminaste del nmero, y el 2do es el nmero con el dgito eliminado... Explica: es esto
posible?
El ejercicio en 2.5 podra no tener una buena cohesin, sin embargo, es una rutina que se usa
muy seguido. En tu opinin... Crees que es bueno sacricar un poco de cohesin para evitar la
duplicidad de cdigo?

NOTA: pide ayuda a tu auxiliar, o lee la gua sobre modularidad si tienes problemas respondiendo
las preguntas de 2.6.

1.3.

Caminando

Estos ejercicios no son muy difciles, pero te introducen al uso de mdulos en un algoritmo. En esta
seccin, probablemente utilices los mdulos que creaste para la seccin 2.
No olvides, que puedes utilizar todos los mdulos que creaste para resolver los problemas pasados,
tambin puedes usar los mdulos del apndice. No olvides que duplicar cdigo no solo te har trabajar
extra, sino que tambin es una mala prctica de programacin que te dar pesadillas a la hora de
modicar y darle mantenimiento a tu cdigo.

1.3.1. Es bonacci?

(2 pt)

Haz un mdulo que indique si un nmero pertenece a la secuencia bonacci o no.

1.3.2. Es primo?

(2 pt)

Haz un mdulo que indique si un nmero es primo o no.

1.3.3. TIMTOWTDI (AKA: TimTowdy)

(6 pt)

TIMTOWTDI son las siglas de There Is More Than One Way To Do It, que en espaol signica
"Hay ms de una forma para hacerlo", tambin es conocido como "TimTowdy", y es el slogan de Perl.
El problema 3.2 es un claro ejemplo de TimTowdy, porque hay varias formas de resolverlo.
Explica: Por qu crees que la solucin que elegiste es la mejor?

1.3.4. Shush impares!

(2 pt)

Haz un mdulo que elimine los dgitos impares de un nmero.

1.3.5. Shush pares!

(2 pt)

Haz un mdulo que elimine los dgitos pares de un nmero.

1.3.6. OH NOES!

(10 pt)

3.4 y 3.5 son problemas muy parecidos, pero es muy difcil (o an no haz aprendido cmo) evitar
la duplicidad de cdigo en este tipo de rutinas. Se te ocurre alguna forma de evitarla? Cul?

HINT: No sera genial poder enviar otro mdulo como parmetro?


HINT2: Talvez sera buena idea formularle esta pregunta a algn experto en el internet (algn foro
de Stackexchange, o Quora podra ayudarte)
ERES AUTODIDACTA?: En INF-121 te ensearn: Polimorsmo (herencia de templates), Genericidad(templates) y Herencia (heredar mtodos y generar interfaces), estos tres pilares te permiten
eliminar por completo la duplicidad de cdigo... Cuando llegues a INF-121, no olvides presionar a tu
docente o auxiliar para que te ensee a evitar la duplicidad de cdigo mediante estos tres pilares!
8

1.3.7. Shush ltimo dgito!

(2 pt)

Haz un mdulo que elimine el ltimo dgito de un nmero.

1.3.8. Factoriales!

(2 pt)

La secuencia de nmeros factoriales, est compuesta por nmeros que son el factorial de algn
nmero.

SECUENCIA DE NUMEROS FACTORIALES


1 2 6 24 120 720 5040 40320 362880 ...
Haz un mdulo que indique si un nmero pertenece a la secuencia de nmeros factoriales.

HINT:
4! = 1*2*3*4 = 24. 24 % 4 es 0 , 6 % 3 es 0 , 2 % 2 es 0.

Pero tambin hay un mdulo en el apndice que calcula el factorial de un nmero :O.

1.3.9. Optimizacin vs Mdulos

(4 pt)

En el ejercicio 3.8 haban varias formas de resolverlo... preferiste usar mdulos? o preferiste
optimizar tu algoritmo? por qu?

1.3.10. Conteo de dgitos

(2 pt)

Haz un mdulo que, dado un nmero


aparece en el nmero

1.3.11. SWAP!

y un dgito

d,

devuelva la cantidad de veces que el dgito d

x.

(2 pt)

Haz un mdulo que, dado un nmero x, y dos nmeros: i y j, que devuelva el nmero x con los
dgitos en la posicin i y j intercambiados.

EJEMPLO:
PARAMETROS : 12345 3 1
RESULTADO : 32145
PARAMETROS : 375932 5 2
RESULTADO : 335972

1.4.

Corriendo

En esta seccin encontrars ejercicios de dicultad ms alta, practicars la modularidad.

1.4.1. El signicado de la vida (15 pt)


Haz un algoritmo que, dado un nmero n, devuelva un nmero con la misma cantidad de dgitos
que n, y cuyos dgitos son solo 4 2, intercalados. (El 1er dgito de derecha a izquierda siempre es el
2).

EJEMPLO:
INPUT : 12345
OUTPUT : 24242
INPUT 74938
OUTPUT : 424242
INPUT : 7
OUTPUT : 2

1.4.2. El examen (32 pt)


Dado un nmero n, seguido de un lote de n nmeros, rota sus ltimos dgitos (de derecha a izquierda)
hacia la izquierda.

EJEMPLO:
INPUT : 5 123 456 789 321 654
OUTPUT : 423 756 389 621 154

Nota: Este fue el primer ejercicio del primer parcial de I/2014, a muchos les pareci difcil, sin
embargo el problema se hace muy fcil si utilizas los mdulos que creaste para la seccin 3.caminando

1.4.3. Ordenando Dgitos

(48 pts)

Dado un nmero n, ordena sus dgitos en orden ascendente de izquierda a derecha (el dgito menor
va a la izquierda del nmero).

HINT: los nmeros estn compuestos de dgitos, y los dgitos solo pueden ser 1, 2, 3, 4, 5, 6, 7, 8,
90
HINT2: El mtodo "ms sencillo"de ordenacin, se llama bubble sort (en espaol: Mtodo burbuja)
HINT3: Hay una forma orta"de resolver este ejercicio ;)
10

1.4.4. Ms series?!
Recuerdas antes del primer parcial? la pizarra llena de series... con nmeros primos aqu, bonaccis
por all, factoriales por este otro lado, patrones por todas partes... y t, escribiendo echas de ujo por
todas partes en tu hoja, intentando no perderte dentro de todos esos cuadritos, valos, rombos de tu
diagrama de ujo... intentando seguirle el hilo a tu lgica... muchas veces te equivocabas, pero no era
porque no sabas cmo resolver el problema, sino porque te perdas, y cerrabas los bucles y condiciones
en lugares en los que no deberas...
Pues eso se acab con la modularidad! A continuacin se te darn algunos ejercicios de series, solo
para que veas que los problemas son ms fciles de resolver, si modularizas (partes el problema) de
forma correcta ;)

Primos

(5pt)

Intermitente

Haz un algoritmo para generar la siguiente serie:

(5pt)

x2 + x3 + x5 + x7 + ...

Haz un algoritmo para generar la siguiente serie:

1 2 + 3 4 + 5 6 + 7 8 + ...

HINT: (1)1 = 1.(1)2 = +1.(1)3 = 1...


Frankenstein

(15pt)

Haz un algoritmo para generar la siguiente serie

x /(1 + 2) + x /(1 4) x5 /(2 + 6) + x7 /(3 8) x1 1/(5 + 10)

NOTA: La potencia es la serie de los nmeros primos. El denominador se compone de un nmero


bonacci, sumado o restado (intermitentemente) con un mltiplo de 2. Los trminos de la serie
se suman y restan ntermitentemente"(es decir: suma, resta, suma, resta, suma, resta, ...)

1.4.5. Poblacin de primos entre factoriales

(10 pt)

Se ha demostrado un teorema matemtico que indica que, s o s, tiene que haber un primo en

[n, n!]. (link: http://es.wikipedia.org/wiki/Nmero_primo#Primos_primoriales_y_


primos_factoriales )

el rango

Haz un algoritmo que, dado un nmero n, indique cuntos nmeros primos hay en el rango

11

[n, n!].

2.

Cadenas

2.1.

Fciles

Los ejercicios de esta parte son muy fciles. Probablemente necesites los mdulos que programes
para esta seccin, en ejercicios ms avanzados (como los de la siguiente parte). Si an no entiendes las
cadenas, te aconsejo que hagas unos cuantos de estos ejercicios.

2.1.1. Sencillo pero til

(4pt)

Haz un mdulo que, dada una cadena X, y un caracter a, responda con un nmero que indique la
posicin de la cadena en la que est la primera ocurrencia del caracter a. Si el caracter a no est en la
cadena, el nmero retornado debe ser negativo.

EJEMPLO:
PARAMETROS : X = " huehuehuehuehue " , a = 'e '
RESPUESTA : 3
PARAMETROS : X = " HUEHUEHUEHUEHUE " , a = 'e '
RESPUESTA : -1

2.1.2. Cuntas veces?

(4pt)

Haz un mdulo que, dada una cadena X, y un caracter a, responda con un nmero que indique la
posicin de la cadena en la que est la primera ocurrencia del caracter a. Si el caracter a no est en la
cadena, el nmero retornado debe ser negativo.

EJEMPLO:
PARAMETROS : X = " huehuehuehuehue " , a = 'e '
RESPUESTA : 3
PARAMETROS : X = " HUEHUEHUEHUEHUE " , a = 'e '
RESPUESTA : -1

2.1.3. Conteo de A en B

(4pt)

Haz un mdulo que, dada una cadena X, y un caracter a, responda un nmero que indique la
cantidad de veces que el caracter a aparece en la cadena X.

EJEMPLO:
PARAMETROS : X = " Kerrigan " , a = 'r '
RESPUESTA : 2

12

2.1.4. Eliminando

(4pt)

Haz un mdulo que, dada una cadena A y un caracter b, elimine de la cadena A todos los caracteres
iguales a b, y devuelva la nueva cadena.

EJEMPLO:
PARAMETROS : A = " can i haz cheeseburger ? :3" b = 'e '
RESPUESTA : " can i haz chsburgr ? :3"

2.1.5. Buscando palabras

(4pts)

Haz un mdulo que, dada una cadena A y otra cadena B, indique cuntas veces la cadena A aparece
en B

EJEMPLO:
PARAMETROS : A = " THE " B = " FIRST SOLVE THE PROBLEM ,
THEN WRITE THE CODE "
RESPUESTA : 3

2.2.

Que comiencen los juegos...

Esta seccin contiene una mezcla de ejercicios muy fciles, fciles, medianos, difciles y muy difciles...
en esta seccin aplicars todos tus conocimientos de cadenas.

And may the odds be always with you

2.2.1. Es consonante?

(4pts)

Haz un mdulo que, dado un caracter devuelva VERDADERO si el caracter es una letra consonante,
y FALSO de lo contrario.

HINT: Conteo de A en B
NOTA: las letras consonantes, son todas aquellas letras pertenecientes a nuestro alfabeto de 28
letras, incluyendo la '' que no son vocales. Las vocales son: a, e, i, o, u.

2.2.2. es vocal?

(4pts)

Haz un mdulo que, dado un caracter devuelva VERDADERO si el caracter es una letra vocal, y
FALSO de lo contrario.

13

2.2.3. Juego de Nios

(10pts)

Hay un juego que juegan los nios de prvulos para aprender las vocales: Su maestra les ensea una

cancin, y despus de cantar la cancin, la maestra dice .ahora con 'a' !", y todos los nios cantan la
misma cancin, pero sustituyen todas las vocales de la cancin con la letra 'a'.
Haz un algoritmo que, dada una ancin"(cadena de texto), sustituya todas las vocales con una
letra x que leers por input.

EJEMPLO:
INPUT :
Vinci Vinci arana subio la telarana
a
OUTPUT :
Vanca Vanca arana sabaa la talarana

2.2.4. Balanza

(4 pt)

Imagina que las x son pesos de 1 Kg y las o son pesos de 2 Kg. Se te darn dos cadenas de texto
cuyos caracteres nicamente son o x. Tu deber es aadirle caracteres a cualquiera de las cadenas de
texto con el objetivo de que "pesen"lo mismo, agregando la menor cantidad de caracteres posible.

EJEMPLO:
INPUT :
xoxoxxx xx
OUTPUT :
xoxoxxx xxooox

2.2.5. Palndromes

(4pt)

Haz un mdulo que verique si una cadena de texto es palndrome (una palabra palndrome, es
aquella que se lee igual al derecho y al revs, por ejemplo: aibophobia).

2.2.6. Podra ser palndrome?

(10pts)

Haz un algoritmo que indique si se puede armar una palabra palndrome moviendo los caracteres de
una cadena dada.

NOTA: no puedes eliminar ni aadir nuevos caracteres de la cadena

14

2.2.7. Forma un palndrome!

(20pts)

Haz un algoritmo que, dada una cadena de letras, forme la palabra palndrome ms grande, utilizando
nicamente los caracteres de la cadena de letras dada.

NOTA: No puedes aadir ni eliminar caracteres de la cadena, por ejemplo si la cadena solamente
tiene una letra a, el palndrome no puede tener dos letras a
NOTA 2: Si existen varias palabras palndromes que se podran formar a partir de la cadena dada,
imprimir cualquiera de ellas

EJEMPLO:

INPUT :
aabbccdd
aabbccddf
aaabbbccc
maythena ' arublessingsbeuponyou
OUTPUT :
cbaabc
dcbafabcd
cbaaabc
ounsebaymyabesnuo

2.2.8. Mensajes Ocultos

(4pts)

Algunos textos contienen mensajes ocultos, una de las formas de ocultar un mensaje en un texto es
poner cada letra del mensaje en la primera letra de cada palabra del texto.
Para encontrar este tipo de mensajes ocultos dentro de texto, hay que tener en cuenta que el mensaje
oculto se compone de la primera letra de las palabras del texto. Por ejemplo:
en la cadena de texto ompete online design event rating", el mensaje oculto es oder".
Haz un algoritmo que, dada una cadena de texto, encuentre este tipo de mensajes ocultos.

2.2.9. Contando Cercas

(10pts)

Llamamos cerca a una sucesin de caracteres que contienen los smbolos

en forma alternada.

Haz un algoritmo que, dada una cadena de texto, indique cul es la cerca ms grande.

EJEMPLO:

INPUT :
| -| -| -| -| -| -| | - -|| | -| - - - - -| -| -| -| -||| OUTPUT :
6
9
2
10

15

2.2.10. Anagramas

(10pts)

Se dice que una cadena de texto A es un anagrama de otra cadena de texto B, cuando, utilizando
todas las letras de la cadena A, y aumentando, o eliminando espacios en blanco, se puede obtener la
cadena B.
Haz un algoritmo que, dadas dos cadenas de texto A y B, indique si son anagramas o no.

EJEMPLO:
INPUT :
ray magini
imaginary
diavole in dracon limala asno
leonardo da vinci la mona lisa
mar azul
armymen
OUTPUT :
son anagramas
son anagramas
no son anagramas

2.2.11. Arrays.sort()

(15pts)

Imagina que tienes un mdulo llamado

cadena ordenar ( cadena a )


que, dada una cadena de texto a, ordena sus letras en orden alfabtico, poniendo todos los espacios
y caracteres que no son letras al principio de la cadena, por ejemplo:

print ( ordenar (" explicito es mejor que implicito ") )


imprimir:

cceeeeiiiiijllmmoooppqrsttux
ojo que antes de la primera c, hay 4 espacios en blanco.
Imagina que un programador genial ya program para t este mdulo, y puedes usarlo sin programarlo.
Cmo resolveras el problema 2.11 Anagramas con este mdulo?

NOTA: revisa el apndice para ver cmo usar el mdulo cadena ordenar(cadena a) en Java ;)

16

2.2.12. Concursos por sms

(10pts)

Alguna vez participaste en un concurso mediante SMSs? Consisten en enviar un mensaje de texto
con alguna palabra, a un nmero 'x'. El nmero 'x' suele tener 4 dgitos.
Las empresas que realizan estos concursos, suelen elegir nmeros que sean fciles de recordar. Para
conseguir esto, aprovechan el hecho de que el teclado de los celulares y de los telfonos, le asigna a
cada nmero 3 4 letras, como en la imagen, e intentan que las letras del nmero que eligen, armen
una palabra.

Por ejemplo, para formar la palabra UMSA, elegiran el nmero 8672.


Haz un algoritmo que, dada una palabra de 4 letras, te indique el nmero que la empresa eligira
para dicha palabra.

EJEMPLO:
INPUT :
CODE
LIVE
DAMN
UMSA
MONO
OUTPUT :
2633
5483
3266
8672
6666

17

2.2.13. Qu es Criptoanlisis?

(20pts)

Este algoritmo ha sido traducido del problema 10008 - What's Cryptoanalysis? del juez virtual UVa.
El tiempo lmite es 3.000 segundos
Se le llama Criptoanlisis al proceso utilizado para romper"la encriptacin de alguna informacin
que ha sido encriptada por alguien ms. Este proceso, muchas veces, envuelve una especie de anlisis
estadstico del texto encriptado. Tu deber es escribir un programa que hace un anlisis sencillo de un
texto dado.

INPUT
Se te dar un nmero n, seguido de n lneas, cada lnea contendr una cadena de texto que podra
o no tener espacios en blanco.

OUTPUT
Por cada letra t en el texto, debes escribir en una lnea: esa letra t (en maysculas), seguida de un
nmero x que indica cuntas veces la letra t ha aparecido en cualquiera de las lneas que leste.

EJEMPLO:
INPUT
3
This is a test .
Count me 1 2 3 4 5.
Wow !!!! Is this question easy ?
OUTPUT
S 7
T 6
I 5
E 4
O 3
A 2
H 2
N 2
U 2
W 2
C 1
M 1
Q 1
Y 1
INPUT
1
iuuq :// ujuboqbe . dpn / sftfobt - jogpsnbujdb - vntb ; GVDL UIF TATUFN !
OUTPUT
18

B
T
U
F
N
D
J
O
G
P
S
V
E
I
L
Q
Z

6
5
5
4
4
3
3
3
2
2
2
2
1
1
1
1
1

NOTA: Si quieres que el juez virtual UVa te acepte este problema, debers imprimir las letras en
orden descendente segn su aparicin, y solo debers contar las letras que pertenezcan al alfabeto ingls
(27 letras, sin contar la ). Adems, debera considerar las maysculas y las minsculas como iguales.

2.2.14. El cifrado del Csar

(20pts)

Uno de los mtodos de encriptacin ms sencillos del cifrado clsico, es el cifrado de Csar, en el
que se recorre el alfabeto n posiciones.
Por ejemplo, el INPUT del ejercicio 2.13, est encriptado con el cifrado de Csar, con 1 posicin.
La siguiente tabla muestra las letras del abecedario (primera lnea), y su equivalente en el cifrado
de Csar.

ESTA LETRA : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
EQUIVALE A : Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
Haz un algoritmo que, dada una cadena de texto 'A', que es un mensaje encriptado con el cifrado
de Csar, y un nmero 'n', que indica las posiciones que se recorrer el alfabeto, que criptoanalise la
cadena 'A', indicando el mensaje oculto.
NOTA puedes asumir que...
Puedes utilizar el cdigo ASCII de los caracteres de la siguiente forma:
(int) 'a' = 97 (int) 'A' = 65 (int) 'f ' = 102 'f ' - 'a' = 5 ADVERTENCIA: pregntale a tu docente
qu opina sobre utilizar ste mtodo antes de utilizarlo en tu examen ;)

19

Apndice

20

Vous aimerez peut-être aussi