Ir al contenido principal

Ligas de Competencias, problemas, desafíos o retos de programación para resolver

En este espacio me gusta invitarlos a empezar a programar o aprender a nuevos lenguajes de programación, hoy más que nunca se ha visto la necesidad de evolución digital o transformación digital.  Por lo que quiero compartirles en este post donde pueden encontrar ejercicios para empezar a programar porque como cualquier cosa en esta vida, la practica es lo que te va ayudar a mejorar tus habilidades de programación y empezar a resolver problemas.
Existen varias paginas donde plantean problemas de programación y que de acuerdo a los resultados de los programas de cada usuario te va una calificación y se van registrando rackings, o que te pueden dar retroalimentación de tus programas.


Hay otros que son concursos que proponen retos de programación por ejemplo:

En esta publicación veremos un reto o problema de programación de la pagina de UVA, para que puedan practicar su programación, les voy a explicar como lo hice desde cero.

Primer paso tener su cuenta en   https://onlinejudge.org/

problemas de computación

problemas de computación

Una ve creada su cuenta les llegara un correo (vea la carpeta de SPAM) para verificar la cuenta.
Ya dentro lo que vamos hacer es buscar que problemas hay para resolver

Después elijan uno de la lista


Al entrar en uno les mostrara la descripción del problema, les dirá cuales son los datos de entrada y cual debe ser la salida y les muestra un ejemplo de como poder probar su programa y el tiempo en que debe ejecutarse su programa. Las instrucciones están en Inglés.

problemas de computación

Una vez tengan el programa deben comenzar a realizar el análisis del problema. Este es el paso más importante de hacer cualquier programa, entender bien el requerimiento, cuales son los datos de entrada y cuales son los datos de salida esperados.
El problema que yo elegí dice que se van a recibir como entrada el numero de lados de la figura, las coordenadas de las equinas de 2 polígonos separados por espacios por ejemplo


Y al ver esto en un plano cartesiano se vería así, las primeras coordenadas son la figura en rojo y las segundas coordenadas son la figura en verde


Después nos dice calcula el área de todo menos en donde se unen las figuras y esto nos lo dicen textual Calcula el área de la función Exclusive OR 

Ahora debemos pensar como lo vamos a resolver, primero manualmente, por favor no traten de programar primero, es mucho mejor siempre pensar como hacerlo a mano, para poder comprobar los resultados que nos genere el programa.
Entonces para resolver el calculo de un área de esta forma recuerdo que es con formulas de Geometría la siguientes ligas, me gusta compartirles varias porque no siempre entendemos con una forma de explicar 


Ahora vamos a resolverlo a mano, primero calcular el área de todas las figuras y luego voy a restar el área de la parte en que se unen 

  • Área del Rectángulo es igual a 8 unidades
  • Área del Hexágono Irregular 6.5 unidades
  • Área del Triangulo que es la figura que se unen .5 unidades
  • Por lo que resultado es 13.50 esa es el área de la función XOR para ese ejemplo.

Realice el cálculo por medio de determinantes, les muestro mis hojas de mis cálculos





Ahora el siguiente paso es pensar en que lenguaje lo van a programar en mi caso seleccione Python 3.7 ahora hay que traducir en pasos o en un algoritmo lo que hice en papel.

  • Leer datos 2 líneas no mas 
  • Separar mis valores primero en una variable para saber cuantos lados tiene mi figura 
  • Mis siguientes campos en un arreglo por cada figura
  • Después realizar el calculo de área de la primer figura
  • realizar el calculo de área de la segunda figura
  • Obtener los puntos en que se interceptan
  • realizar el calculo del área in que se interceptan
  • Calcular el resultado final
  • Mostrar el resultado en el formato de cadena de largo de 8 con 5 números enteros o espacios y 2 decimales , el punto cuenta como el octavo carácter.

Después de probarlo vamos a subirlo a la página para ello presionamos el botón de submmit en la parte superior derecha y deben seleccionar el lenguaje que utilizaron para programar y copiar su programa o pueden subir el archivo. 



Les dirá que su código de envió
Después cuando los haya calificados los jueces les darán su calificación y verán en que parte del racking están, en mi caso este ejercicio aun no lo resuelvo al 100 pero esta muy entretenido. 



Espero que les haya gustado esta publicación a mi en lo personal me pareció muy entretenida y divertida, además de que es un ejemplo de como pueden aprender a programar ustedes mismo, la práctica les va ir ayudando a plantearse mejor los problemas y a desarrollar mejor o más rápido.

Programa en Python 

Les comparto parte de mi programa para que puedan empezar por ahi e irlo mejorando
lista = []
coordenadas = []
ciclos = 0
ciclos2 = 0
contador = 0
contador2 = 0
contador3 = 0
fig1 = ''
Operacion1 = 0
Operacion2 = 0
resultado = ''
Area1 = 0
Area2 = 0
while fig1 != "0" :
    fig1 = input()
    lista.append(fig1)
ciclos = len(lista) // 2
ciclos2 = ciclos * 2
print(ciclos2)
while contador < ciclos2:
     coordenadas = lista[contador].split(' ')
     coordenadas.append(coordenadas[1])
     coordenadas.append(coordenadas[2])
     contador2 = 1
     Operacion1 = 0
     Operacion2 = 0
     print(coordenadas)
     while contador2 < len(coordenadas) - 2:
           Operacion1 = Operacion1 + int(coordenadas[contador2]) * int(coordenadas[contador2 + 3])
           contador2 = contador2 + 2
     print('Operacion1', Operacion1)
     contador3 = len(coordenadas) - 2 
     while contador3 > 2:
            # print('contador3',contador3)
            Operacion2 = Operacion2 + int(coordenadas[contador3]) * int(coordenadas[contador3 - 1])
            contador3 = contador3 - 2 
     print('Operacion2', Operacion2)
     if (contador % 2) == 0:
        Area2 = (Operacion2 - Operacion1) / 2
     else:
        Area1 = (Operacion2 - Operacion1) / 2
     print('Area1', Area1)
     print('Area2', Area2)
     contador = contador + 1
     Area1 = 0
     Area2 = 0
     
Si ya eres un programador avanzado o te gusta plantear problemas también en esta pagina puedes subirlos o también puedes ser juez.

Espero les haya gustado esta publicación, nos compartan y pueden seguirnos aquí en el blog o en Facebook https://www.facebook.com/Programacionparatodosmsg/

Comentarios

Entradas más populares de este blog

Graficar funciones en Python con dataframes

Bienvenidos a un nuevo post, en esta semana, en esta ocasión les quiero platicar acerca de una librería en Python que se llama  matplotlib  que nos sirve para gráfica funciones de  matemáticas. Habitualmente en Python existen muchas librerías, lo que hay que hacer es primero investigar si ya existe alguna que nos ayude y entenderla antes de inventar el hilo negro, en mi caso encontré la librería  Matplotlib Para instalar deben utilizar el comando PIP en 2.7 Instalando en Python 3.7 Si tienen Python 2.7 deben realizar la ejecución de estos 2 comandos desde consola python -m pip install -U pip python -m pip install -U matplotlib Aunque lo más recomendable es utilizar la versión 3.7 o superior de Python. Programa para graficar en Python import matplotlib.pyplot as plt import numpy as np import math as mt def move_spines():     """Esta funcion divide pone al eje y en el valor      0 de x para dividir claramente los valores positivos y     negativos.&quo

Ejemplo Macro en Word

Hola: ¿Sabían que no solo en Excel pueden hacer Macros?  ¡¡¡También en Outlook, Word, Power Point,Access  es posible hacer Macros!!!  ☺️ Ya que Word, Excel, Power Point,Access son de familia Microsoft y Visual Basic también es que podemos programar nuestras macros en esta paquetería. Como hemos visto antes, para poder programar nuestras macros, necesitamos primero configurar la Barra de tareas de Developer o Desarrollador Seleccionan el Menu File>Options>Customize Ribbon o en Español Archivo>Opciones>barra de tareas Despues la parte de seguridad de las macros Menu File>Options>Trus Center o Archivo>Opciones>Centro de Seguridad y marcamos como se ve en la imagen, la cuarta opción y el combo Ejemplo Vamos hacer un ejemplo donde, tengamos que generar varios diplomas de fin de curso, pero con una lista de Nombres , entonces vamos a crear un nuevo archivo en Word y le vamos a guardar como tipo Macro  Tenemos una plantill

Macro de Excel para abrir archivo csv

Hay veces que quieres abrir un archivo de Excel pero está separado por comas, punto y coma o por un pipe. Hay formas de hacerlos desde Excel. Les quiero compartir algunas opciones de como hacerlo y espero que les sean de utilidad. 1.Es abrir el archivo en Excel y utilizar la función de separar por columnas y seleccionar el delimitador, por ejemplo ";" 2. Es colocar "sep=;" en el primer renglón del archivo que quieres abrir y guardar en formato CSV y abrirlo en Excel y te lo abrirá separado en columnas. 3. Otra forma es con una macro, esté en mi gusto es la que más me funciona porque si hay alguna coma en la descripción o en alguna columna, si lo abres desde Excel te va a desacomodar las columnas.  Este botón te abrirá un pantalla para abrir el archivo que quieres separar y te lo abrirá en una hoja de excel ya separado. El código de la macro es el siguiente  Private Sub CommandButton1_Click() Dim sht As Worksheet Dim fnd As Variant Dim rplc As Variant Dim