jueves, 24 de noviembre de 2011

Paginas copadas + Ultimos entrenamientos

Hola a todos!

Les cuento que, para ir cerrando el año, me gustaría mostrarles algunas páginas muy copadas de donde van a poder aprender muchas cosas y, de paso, competir.

Algunas tienen competencias más divertidas, con Ranking y Premios, y otras menos. Algunas son todas las semanas, otras una vez al año. Pero todas sirven :) Hay de Google, de Facebook, de TopCoder, etc.

Para esto, los invito los siguientes días:

Viernes 25 de Noviembre, 14.30 hs, labo de al lado de la maqueta (donde siempre).
Viernes 2 de Diciembre, 14.30 hs, labo de al lado de la maqueta (donde siempre).
Lunes 5 de Diciembre, 16 hs, labo de TIC.

La idea es que vengan en cualquiera de esos horarios. Los que no puedan venir en ningún momento, van a poder encontrar toda la info en el blog. Y si les queda alguna duda (lo cual seguramente pase), me consultan por mail, o en algún otro horario de entrenamiento.

Saludos a todos, y los espero, así de paso nos despedimos,
Nico

miércoles, 3 de agosto de 2011

Problemas CyM - 10 problemas para 10 días!

Bueno, como ya sabrán el viernes 12 de Agosto (es decir el viernes próximo)es la primer ronda de CyM.

Les dejo problemas para practicar (por su cuenta y en los entrenamientos). Es muy importante que los hagan, porque realmente son muy parecidos los problemas que aparecen año a año en CyM y tenerlos hechos les va a dar una gran ventaja.

Pista: En todos los problemas va a ser necesario meter un for dentro de otro.

1. Encontrar dos números enteros positivos A y B, tales que uno de ellos sea par y el otro sea múltiplo de 3 (no necesariamente en ese orden) y que cumplan
207 · A + 208 · B = 66935

2. Hallar todas las soluciones, con A y B enteros, de la ecuación
4 · A^2 + 2 · B^2 = 2008
Aclaración: A^2 es A al cuadrado

3. Encontrar dos números enteros positivos X e Y tales se cumplan las siguientes dos ecuaciones simultáneamente:
X^2 + Y^2 = 999297
72 · X + 27 · Y = 76869

4. Encontrar tres números enteros positivos X; Y; Z, todos distintos, tales que
646 · X + 2006 · Y = 39 · Z

5. Encontrar cuatro números enteros X; Y; Z; W, todos entre 10 y 20, tales que
X · Y + Z · W = 539

6. Hallar un número entero mayor que 1 que sea divisor de 24272 y que también sea divisor de 25461.

7. Encontrar todas las soluciones de la ecuación
74 · X + 58 · Y - 47 · Z = 12004 tales que X, Y y Z son números enteros positivos menores o iguales que 100

Un poco más difíciles:

8. Encontrar tres números enteros positivos X, Y y Z tales que sean todos divisores de 20077002 y su suma sea 299.

9. Buscar un número entero positivo D mayor que 1, que sea divisor de 2070 y tal que además D+1 sea divisor de 2071.

10. Encontrar todos los números enteros positivos D entre 1000 y 10000 tales que D es múltiplo de 23 y D es divisor de 480861

Practiquen mucho que ya falta poco!
Saludos!

EDIT: En comentarios pueden encontrar los links a un par de códigos hechos por alumnos!

miércoles, 6 de julio de 2011

Primer competencia!

Atentos todos, que la semana próxima tenemos nuestra primer competencia. Ya les voy a dar más información, pero por ahora practiquen mucho!

Aviso: este viernes 8/7 NO hay entrenamiento. Nos reencontramos la semana próxima!

viernes, 1 de julio de 2011

Desafíos pre-competencias

Acá les dejo algunos desafíos que son muy similares a los que se toman en algunas competencias. Después de hacerlos, ¡ya van a estar listos para atacar sus primeros problemas de competencia!

1. El usuario ingresa 2 números. Deben decir si uno es divisible por el otro (recuerden el operador '%')
2. El usuario ingresa un número. Deben decir todos los divisores de ese número.
3. El usuario ingresa un número. Deben decir si ese número es o no primo (un número es primo si sus únicos divisores son 1 y sí mismo).
4. EL usuario ingresa 2 números. Deben sacar todos los primos entre esos 2 números. Después, digan cuántos son (¡sin contar!).
5. Encuentren 2 números enteros cuya multiplicación de como resultado 12709189 (no vale 1*12709189!!)
6. Encuentre cuatro números enteros X Y Z W, todos entre 10 y 20, tales que
X · Y + Z · W = 539

Disfruten y practiquen!
Nico

jueves, 23 de junio de 2011

Introducción a la Programación Dinámica - Nivel Avanzado

El día de ayer vimos un problema clásico de programación dinámica, pero que tiene relación con otras técnicas:http://www.blogger.com/img/blank.gif

Máxima subsecuencia creciente
Explicación en Algorithmist
Explicación en Wikipedia

El problema consiste en, dada una secuencia de números, encontrar la subsecuencia más larga de números ordenados en forma creciente (no necesariamente consecutivos).

Ejemplo:
En la secuencia 3 1 4 5 2 17 8 11
La secuencia más larga es 3 4 5 8 11, con longitud 5.

Ayer vimos una solución sencilla que tarda o(n^2)
También vimos una solución que usa busqueda binaria, o trucos equivalentes, para reducir la complejidad a o(n*logn).

Si alguno se anima, puede dejar en los comentarios un programa que resuleva el problema!

Nico

viernes, 17 de junio de 2011

Desafíos 3 - Nivel Inicial

Acá van los desafíos del tercer encuentro. Son para practicar la estructura de repetición "for".

1.Mostrar en la pantalla los números del 1 al 100
2.Mostrar en la pantalla los números del 100 al 1 (en ese orden)
3.Mostrar en la pantalla los números del 100 al -100 en ese orden.
4.El usuario ingresa dos números a y b. Deben mostrar todos los números entre a y b inclusive.
5.Hallar la suma de todos los números entre 1 y 100 inclusive.
6.El usuario ingresa dos número a y b. Deben hallar el valor de la suma y de la multiplicación de todos los números entre a y b inclusive.
7.Calcular y mostrar en la pantalla las primeras 30 potencias de 2.



Pongan en comentarios sus programas con la solución a los desafíos!
Saludos!

miércoles, 15 de junio de 2011

Desafíos 2 - Nivel Inicial

A continuación, los desafíos correspondientes al segundo encuentro.
Temas: Entrada y Salida por pantalla, variables, estructura condicional ( if ), operadores (>, >=, ==, !=, etc)
  1. Deben elegir un número. El usuario tiene que adivinarlo, ingresándolo . Si lo adivina, pongan que ganó. Si no, que perdió.
  2. El usuario debe ingresar 2 números. Deben devolver cuál es el mayor.
  3. El usuario debe ingresar 2 números. Deben devolver cuál es el mayor, y si son iguales, decir que son iguales.
  4. El usuario debe ingresar 3 números y ustedes devolver cuál es el mayor de ellos.
  5. El usuario debe ingresar 3 números y ustedes deben devolverlos ordenados (de menor a mayor o viceversa).
  6. Hacer una calculadora!! Es decir, el usuario ingresa 3 numeros: los primeros 2 son los números a operar. El tercero es: 1 si quiere sumar, 2 para restar, 3 para multiplicar, 4 para dividir.
    Ej: 4 6 3 devuelve 4*6=24
Saludos a todos, y practiquen!