La rama se llama programación competitiva, pero esto no significa que vayamos a centrarnos únicamente en cómo afrontar este tipo de competiciones, sino que también nos servirá para pensar una posible solución a un problema, el que sea, da igual si es un problema pequeño o uno grande, estos tienen muchos tipos de soluciones. Una vez que veamos como tenemos que afrontar los problemas entonces pasaremos a programar dicha solución y probarla para ver si de verdad nuestro algoritmo funciona. Por último, incrementaremos la profundidad, SI, la vamos a aumentar a lo máximo que sería un problema en el que necesitamos una solución que ocupe como máximo X espacio en memoria e Y tiempo de compilación. Por supuesto, esta rama os servirá para cualquier tipo de problema, incluso en los exámenes de programación donde tendréis que pensar en un algoritmo.

Q: ¿Cuál es el alcance de esta rama?

  • Aprenderás sobre algunas ED (Estructuras de Datos)
  • Aprenderás a saber cómo afrontar los problemas
  • Te acostumbrarás a la resolución de problemas parecidos
  • Reutilizaremos código de otros problemas realizados
  • Se os enseñará el orden básico de la complejidad de los algoritmos, algo que os servirá de mucho y también un empujón para la asignatura de 2º de carrera.
  • Se espera que al menos se llegue a hacer problemas de 1500-2000 puntos para arriba en la plataforma Codeforces y de manera ágil, que no se tarde mucho en afrontarlos.

Todo hay que decir, depende de cómo vaya funcionando el grupo se verán más cosas o menos.

Q: ¿Qué aprenderás?

Ya lo he comentado antes, pero lo que vas a aprender en esta rama es sobre todo a pensar, que es algo obvio, sí, pero a pensar bien, a enfocarte en lo que te piden y no irte por las ramas, también a intentar sacar todos los casos posibles del problema y de esta manera conseguir un algoritmo que te resuelva todos los casos de una, de esta manera en las competiciones evitamos que nos quiten puntos por cada “submit” del código que se ha hecho y falla.

Q: ¿Qué herramientas usaremos?

Usaremos páginas web donde vienen problemas, al inicio del programa usaremos Hakerrank, donde los problemas son más asequibles al principio porque los problemas vienen mucho más contextualizados y definidos, por supuesto que los problemas dependen del tiempo y espacio X e Y, pero no es lo mismo que la plataforma Codeforces, está la iremos introduciendo poco a poco, desde la mitad del programa (si todo va bien, por supuesto se puede atrasar o adelantar), y esto es debido a que en dicha plataforma, los problemas son más jugosos y algunas veces un poco liosos, donde te tienes que dar cuenta de cada detalle y son muy estrictos con el tiempo y el espacio de memoria que no se puede superar para el problema (lo veremos en el programa).

Q: ¿Qué lenguaje usaremos?

Esta es la pregunta de oro, porque se que la mayoría sois de 1er curso, lo que significa que estáis dando pasitos con C y como no quiero que os empecéis a liar entre lenguajes, empezaremos con dicho lenguaje en un principio, pero dependiendo de cómo os vayáis desenvolviendo con C avanzaremos a C++ que nos trae unas librerías que nos servirán de mucho. Pero esto lo decidiremos según avanzamos.

Q: ¿Por qué usaremos C/C++??

En todas las competiciones siempre hay 3 lenguajes que nunca fallan, que son C, C++ y Java. El caso de usar C es que nos da la ventaja de que es rápido y de que vostr@s podéis practicar para FP o TP, o cualquiera. Pero su inconveniente es que habría que hacerse algunos algoritmos a mano. Por otro lado, si usamos C++ iremos un poco más rápidos porque hay librerías ya hechas, la desventaja es que os tendréis que adecuar a algunas cosillas diferentes.

Repito, esta decisión se tomará dependiendo del grupo.

Q: ¿Requisitos?

SABER PENSAR.

Q: ¿Quién lidera la rama?

De momento solo estoy yo, Blitty (@blittyN en Telegram, blit12#6664 en discord), cualquier pregunta que tengas sobre esta rama me puedes hablar, preguntar, lo que sea.

 

Por último, la frase mítica de mi profesor de prácticas de AL

“Nos pagan para pensar” – David Camacho (AL)