def lenstra(numero, k, a): ''' * Factoriza un número por el método de Lenstra en k iteraciones. ''' inicial = punto.Punto() t = punto.Punto() inicial.setX(1) inicial.setY(1) i = 2 for i in range(i, k): t = mult_escalar(i, inicial, numero) print "t = ", i, "*(1,1)= (", t.getX(), ",", t.getY( ), "), y^2 = x^3 + ", a, "x - ", a, " mod ", numero # Calculamos el mcd del denominador de la pendiente y el numero mcd1 = mcd(t.getDen(), numero) print "Con ", i, "*(1,1) tenemos mcd(r = ", t.getDen( ), ", n = ", numero, ") = ", mcd1, "\n" print "-----------------\n" # Caso donde son primos relativos if (mcd1 != 1): print "", mcd1, " es factor de ", numero, " usando a = ", a, " en la iteración ", i, "!\n" print "No se encontró factor de ", numero, " con a = ", a, " y en k (k =", k, ") iteraciones." print "Intenta con una k más grande u otro valor de a con y^2 = x^2 + ax - a\n"
def funcionArea(): p = Punto() p.x = coord_x1.get() p.y = coord_y1.get() q = Punto() q.x = coord_x2.get() q.y = coord_y2.get() rta = 0.0 tip = "" if variable.get() == "4": f = Rectangulo() f.setPuntos(p, q) f.areaR() rta = f.area tip = "rectángulo" elif variable.get() == "3": f = Triangulo() f.setPuntos(p, q) f.areat() rta = f.area tip = "triángulo" elif variable.get() == "2": f = Circulo() f.setPuntos(p, q) f.areac() rta = f.area tip = "círculo" else: f = Cuadrado() f.setPuntos(p, q) f.areaCu() rta = f.area tip = "cuadrado" respuesta = tk.Label(root, text="El área del " + tip + " es " + str(rta)) respuesta.grid(row=9, column=0, columnspan=2)
def mult_escalar(k, p, num): ''' * Función que calcula R = P+P+...+P (k veces), es decir, R = kP en y^2 = x^3 + ax + B ''' r = punto.Punto() t = punto.Punto() r.setX(0) r.setY(0) for i in xrange(k): t = suma_puntos(p, r, num) r = t return r
def funcionPerimetro(): p = Punto() p.x = coord_x1.get() p.y = coord_y1.get() q = Punto() q.x = coord_x2.get() q.y = coord_y2.get() if variable.get() == "4": f = Rectangulo() f.setPuntos(p, q) f.perimetroR() print "El perímetro del rectángulo es: " + str(f.perimetro) elif variable.get() == "3": f = Triangulo() f.setPuntos(p, q) f.perimetrot() print "El perímetro del triángulo es: " + str(f.perimetro) elif variable.get() == "2": f = Circulo() f.setPuntos(p, q) f.perimetroc() print "El perímetro del círculo es: " + str(f.perimetro) else: f = Cuadrado() f.setPuntos(p, q) f.perimetroCu() print "El perímetro del cuadrado es: " + str(f.perimetro)
def funcionArea(): p = Punto() p.x = coord_x1.get() p.y = coord_y1.get() q = Punto() q.x = coord_x2.get() q.y = coord_y2.get() if variable.get() == "4": f = Rectangulo() f.setPuntos(p, q) f.areaR() print "El área del rectángulo es: " + str(f.area) elif variable.get() == "3": f = Triangulo() f.setPuntos(p, q) f.areat() print "El área del triángulo es: " + str(f.area) elif variable.get() == "2": f = Circulo() f.setPuntos(p, q) f.areac() print "El área del círculo es: " + str(f.area) else: f = Cuadrado() f.setPuntos(p, q) f.areaCu() print "El área del cuadrado es: " + str(f.area)
class Main: puntoOrigen = Punto() puntoFin = Punto() Figura = f print('1.Circulo\n2.Cuadrado\n3.Triangulo\n4.Rectangulo\n5.Elipse') print('Elija una opcion: ') int(input(opc)) if opc == 1: print('Trabajando con Circulo: ') f = Circulo() puntoOrigen.setX(0) puntoOrigen.setY(0) puntoFin.setX(5) puntoFin.setY(0) mostrar(f, puntoOrigen, fin) elif opc == 3: print('Trabajando con Triangulo: ') f = Triangulo() puntoOrigen.setX(0) puntoOrigen.setY(0) puntoFin.setX(5) puntoFin.setY(0) mostrar(f, puntoOrigen, puntoFin) elif opc == 2: print('Trabajando con Cuadrado: ') f = Cuadrado() puntoOrigen.setX(0) puntoOrigen.setY(0) puntoFin.setX(5) puntoFin.setY(0) mostrar(f, puntoOrigen, puntoFin) elif opc == 4: print('Trabajando con Rectangulo: ') f = Rectangulo() puntoOrigen.setX(0) puntoOrigen.setY(0) puntoFin.setX(5) puntoFin.setY(0) mostrar(f, puntoOrigen, puntoFin) elif opc == 5: print('Trabajando con Elipse: ') f = Elipse() puntoOrigen.setX(0) puntoOrigen.setY(0) puntoFin.setX(5) puntoFin.setY(0) mostrar(f, puntoOrigen, puntoFin)
def suma_puntos_diferentes(p, q, num): ''' * Suma puntos de la curva eliptica y^2 = x^3 + ax + B con la operacion intuitiva * en el caso que p != q , tiene 3 subcasos * a) si p = 0 * b) si q = 0 * c) si p = -q ''' r = punto.Punto() if ((p.getX() == 0) and (p.getY() == 0)): return q if ((q.getX() == 0) and (q.getY() == 0)): return p if ((p.getX() == q.getX()) & (q.getY() == (-1 * p.getY()))): r.setX(0) r.setY(0) return r r.setLambda( modn((q.getY() - p.getX()) * inverso_modular(q.getX() - p.getX(), num), num)) r.setNum(modn(q.getY() - p.getY(), num)) r.setDen(modn(q.getX() - p.getX(), num)) r.setX( modn( modn(r.getLambda() * r.getLambda(), num) + modn( (-1 * p.getX()), num) + modn((-1 * q.getX()), num), num)) r.setY(modn((r.getLambda() * (p.getX() - r.getX())) - p.getY(), num)) return r
def calcularArea(self): temp = p.Punto() temp.setX(self.origen.getX()) temp.setY(self.fin.getY()) a = temp.calcularDistancia(self.fin) b = self.origen.calcularDistancia(temp) self.area = math.pi * a * b
def calcularPerimetro(self): temp = p.Punto() temp.setX(self.origen.getX()) temp.setY(self.fin.getY()) a = temp.calcularDistancia(self.fin) b = self.origen.calcularDistancia(temp) self.perimetro = (2 * math.pi) * (math.sqrt(((a**2) + (b**2)) / 2))
def calcularArea(self): temp = p.Punto() temp.setX(self.origen.getX()) temp.setY(self.fin.getY()) base = temp.calcularDistancia(self.fin) altura = self.origen.calcularDistancia(temp) self.area = base * altura
def calcularPerimetro(self): temp = p.Punto() temp.setX(self.origen.getX()) temp.setY(self.fin.getY()) base = temp.calcularDistancia(self.fin) altura = self.origen.calcularDistancia(temp) self.perimetro = (base + altura) * 2
def base(self): if self.P1.X == self.P2.X: print("No se puede formar un rectangulo.") return P3 = Punto.Punto(self.P2.X, self.P1.Y) base = self.P1.distancia(P3) print(f"La base mide {base}") return base
def altura(self): if self.P1.X == self.P2.X: print("No se puede formar un rectangulo.") return P3 = Punto.Punto(self.P2.X, self.P1.Y) altura = self.P2.distancia(P3) print(f"La altura mide {altura}") return altura
def __init__(self): self.punto1 = pt.Punto() self.punto2 = pt.Punto() self.ventana1 = tk.Tk() self.ventana1.geometry("800x600") self.ventana1.title("Distancias") self.labelframe1 = tk.LabelFrame(self.ventana1, text="Punto 1:") self.labelframe1.grid(column=0, row=0, padx=5, pady=10) self.label1 = tk.Label(self.labelframe1, text="x1:") self.label1.grid(column=0, row=0, padx=4, pady=4) self.descripcioncarga = tk.StringVar() self.entrydescripcion = tk.Entry(self.labelframe1, textvariable=self.descripcioncarga) self.entrydescripcion.grid(column=1, row=0, padx=4, pady=4) self.label2 = tk.Label(self.labelframe1, text="y1:") self.label2.grid(column=0, row=1, padx=4, pady=4) self.x1 = tk.StringVar() self.entryx1 = tk.Entry(self.labelframe1, textvariable=self.x1) self.entryx1.grid(column=1, row=1, padx=4, pady=4) self.labelframe2 = tk.LabelFrame(self.ventana1, text="Punto 2:") self.labelframe2.grid(column=1, row=0, padx=5, pady=10) self.label1 = tk.Label(self.labelframe2, text="x1:") self.label1.grid(column=0, row=0, padx=4, pady=4) self.descripcioncarga = tk.StringVar() self.entrydescripcion = tk.Entry(self.labelframe2, textvariable=self.descripcioncarga) self.entrydescripcion.grid(column=1, row=0, padx=4, pady=4) self.label2 = tk.Label(self.labelframe2, text="y1:") self.label2.grid(column=0, row=1, padx=4, pady=4) self.x1 = tk.StringVar() self.entryx1 = tk.Entry(self.labelframe2, textvariable=self.x1) self.entryx1.grid(column=1, row=1, padx=4, pady=4) self.boton1 = tk.Button(self.ventana1, text="Confirmar", command=self.agregar) self.boton1.grid(column=1, row=2, padx=4, pady=4) self.ventana1.mainloop()
def suma_puntos_iguales(p, num): ''' * Función que calcula R = P+P = 2P en la curva y^2 = x^3 + ax + B ''' r = punto.Punto() r.setLambda( modn(((3 * (p.getX() * p.getX())) + a) * inverso_modular(p.getY() * 2, num), num)) r.setNum(modn((3 * (p.getX() * p.getX()) + a), num)) r.setDen(modn(p.getY() * 2, num)) r.setX( modn( modn((r.getLambda() * r.getLambda()), num) - modn(2 * p.getX(), num), num)) r.setY(modn((r.getLambda() * (p.getX() - r.getX())) - p.getY(), num)) return r
def funcionPerimetro(): p = Punto() p.x = coord_x1.get() p.y = coord_y1.get() q = Punto() q.x = coord_x2.get() q.y = coord_y2.get() rta = 0.0 tip = "" if variable.get() == "4": f = Rectangulo() f.setPuntos(p, q) f.perimetror() rta = f.perimetro tip = "rectángulo" elif variable.get() == "3": f = Triangulo() f.setPuntos(p, q) f.perimetroTri() rta = f.perimetro tip = "triángulo" elif variable.get() == "2": f = Circulo() f.setPuntos(p, q) f.perimetroc() rta = f.perimetro tip = "círculo" else: f = Cuadrado() f.setPuntos(p, q) f.perimetroCu() rta = f.perimetro tip = "cuadrado" respuesta = tk.Label(root, text="El perímetro del " + tip + " es " + str(rta)) respuesta.grid(row=9, column=2, columnspan=2)
def testdeterminarDentro(self): p1 = Punto(0, 0) c3 = Circulo(3, p1) p2 = Punto(1, 2) self.assertEqual(True, c3.determinarDentro(p2))
def __init__(self, p1=Punto.Punto(0, 0), p2=Punto.Punto(0, 0)): self.P1 = p1 self.P2 = p2
def calcularDistancia(self): p1 = Punto(2, 0) p2 = Punto(-3, 0) d = int(p1.calcularDistancia(p2)) self.assertEqual(5, d)
from Punto import * punto = Punto(2, 3) punto.muestraPunto()
def __init__(self): self.p1 = Punto() self.p2 = Punto() self.area = 0
def perimetroTri(self): p3 = Punto() p3.x = self.p1.x p3.y = self.p2.y self.perimetro = p3.Distancia(self.p1) + p3.Distancia( self.p2) + self.p1.Distancia(self.p2)
def __init__(self): self.origen = p.Punto() self.fin = p.Punto() self.area = 0 self.perimetro = 0
def areat(self): p3 = Punto() p3.x = self.p1.x p3.y = self.p2.y self.area = p3.Distancia(self.p1) * p3.Distancia(self.p2) / 2
def __init__(self): self.area = 0 self.perimetro = 0 self.p1 = Punto() self.p2 = Punto()
def test(self): p1=Punto(1,0) p2=Punto(-1,0) distancia=p1.hallarDistancia(p2) self.assertEqual(2,distancia)
from Punto import * from Rectangulo import * from Circulo import * from Triangulo import * from Cuadrado import * p1 = Punto() p2 = Punto() p1.x = input("Ingrese la coordenada en x del primer punto: ") p1.y = input("Ingrese la coordenada en y del primer punto: ") p2.x = input("Ingrese la coordenada en x del segundo punto: ") p2.y = input("Ingrese la coordenada en y del segundo punto: ") r = Rectangulo() r.setPuntos(p1, p2) r.areaR() r.perimetror() c = Circulo() c.setPuntos(p1, p2) c.areac() c.perimetroc() t = Triangulo() t.setPuntos(p1, p2) t.areat() t.perimetrot() cu = Cuadrado() cu.setPuntos(p1, p2) cu.areaCu()
import unittest import sys sys.path.append("src") import Punto import Rectangulo from math import sqrt A = Punto.Punto(2, 3) B = Punto.Punto(-5, 5) C = Punto.Punto(-3, -1) D = Punto.Punto(1, -1) E = Punto.Punto(0, 0) class TestPunto(unittest.TestCase): def test_cuadrante(self): self.assertEqual(E.cuadrante(), "Origen de coordenadas.") self.assertEqual(A.cuadrante(), "Primer cuadrante.") self.assertEqual(B.cuadrante(), "Segundo cuadrante.") self.assertEqual(C.cuadrante(), "Tercer cuadrante.") self.assertEqual(D.cuadrante(), "Cuarto cuadrante.") def test_distancia(self): self.assertAlmostEqual(A.distancia(B), sqrt(53)) def test_mas_lejos(self): mas_alejado = max([A, B, C, D], key=lambda p: p.distancia(E)) self.assertIs(mas_alejado, B) self.assertEqual(mas_alejado.distancia(D), B.distancia(D))
def testPerimetro(self): p1 = Punto(0, 0) c = Circulo(3, p1) self.assertEqual(6 * math.pi, c.hallarPerimetro())
def testArea(self): p1 = Punto(0, 0) c2 = Circulo(3, p1) self.assertEqual(9 * math.pi, c2.hallarArea())