Bienvenidos

Acá encontrarán una serie de ejercicios que deben resolver. Pueden resolverlos en cualquier orden.

Los entregarán en línea de comandos usando un programín que yo escribí. Para instalarlo, simplemente escriban


  gem install learn

Una vez instalado ese programa, sólo tendrán que escribir learn exX.rb, donde X es el número de ejercicio que están entregando, que debería ser un archivo de ruby. Por ejemplo, si yo estuviera entregando el ejercicio número dos, escribiría

  
    learn ex2.rb
  
La primera vez que entreguen un ejercicio, les pedirá su número de cuenta. El programa está en inglés porque las tildes arruinan algunas terminales y ¡preferiría no programar a programar en español sin tildes!

Los ejercicios

Ejercicio #1

Números primos

Escriba un programa que use el test de primalidad de fermat para determinar si un número dado es primo o no.

Ejercicio #2

Mensajitos

En los viejos tiempos, los teléfonos tenían 10 teclas, y en nueve de ellas había letras, y estaban más o menos así: 2=ABC, 3=DEF, 4=GHI, 5=JKL, 6=MNO, 7=PQRS, 8=TUV, 9=WXYZ. Para escribir el mensajito "hola", uno tenía que apretar las siguientes teclas "44 666 555 2". Donde los espacios son pausas entre letra y letra. Escriba un programa que, dada una palabra o frase, imprima las secuencias de teclas que habría que imprimir. Para los espacios entre palabras, imagínese que se usa la tecla 0 (así, la frase "ho la" sería "44 666 0 555 2")

Ejercicio #3

Agenda

Escriba un programa que sirva para llevar una agenda semanal. El programa deberá consistir en un simple ciclo que espere que el usuario escriba los nombres de los días de la semana en inglés y, una vez ingresados, se guarden con la fecha de la semana actual. Si introduce un día más de una vez, se deberá acumular la actividad. Si el usuario escribe el nombre de un día seguido de un signo de interrogación, deberá decirle qué tiene ese día en la agenda (si hay algo).

Una sesión de uso de ejemplo:

agenda> monday
what are you doing on monday?> Ir a class

agenda> tuesday
what are you doing on tuesday?>   comer
agenda> monday?
on monday you have: Ir a class
agenda> tuesday
what else are you doing on tuesday? > Dormir

Cuando el usuario decida salir, deberá guardar la agenda en un archivo de texto con el siguiente formato:

2012-04-09: Ir a clases
2012-04-10: Comer, dormir

...

El archivo deberá llamarse <num-semana>.agenda, donde <num-semana> es el número de semana en el año (en el ejemplo anterior, el archivo se llamaría 15.agenda

Ejercicio #4

Escriba un programa que resuelva expresiones escritas en notación polaca inversa, escritas por un usuario.

Un ejemplo de sesión

RPN> 3 4 +
7
RPN> 5 1 2 + 4 * + 3 -
5 1 2 + 4 * + 3 -

Ejercicio #5

Dado un arreglo de cadenas de caracteres, escriba una función llamada longitudes que devuelva otro arreglo con la longitud de cada una de las cadenas.

Por ejemplo, si tuviera el arreglo ['Luis', 'ruby', '42'] una llamada a esa función debería devolver [4, 4, 2]

Ejercicio #6

Histograma de frecuencias

Dado un párrafo, haga una función que cuente la frecuencia de cada palabra en el párrafo e imprima un histograma de frecuencias con las palabras en orden alfabético. Al contar una palabra, no deberá importar la diferencia entre mayúsculas y minúsculas

Por ejemplo, si tuviéramos el párrafo "Ruby es el mejor lenguaje porque ruby es el MEJOR", el histograma podría verse así:

el: **
es: **
lenguaje: *
mejor: **
ruby: **