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.
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
Comentarios
Publicar un comentario
Dejanos tus dudas y comentarios