Facebook
From Beige Agouti, 4 Years ago, written in Python.
This paste is a reply to Re: zadanie from Denim Marmoset - view diff
Embed
Download Paste or View Raw
Hits: 259
  1. # -*- coding: cp1250 -*-
  2.  
  3. import random
  4. import math
  5. import turtle
  6. import time
  7. class punkt(object):
  8.     def __init__(self,x,y):
  9.         self.__x=x
  10.         self.__y=y
  11.  
  12.     def getxy(self):
  13.         return(self.__x,self.__y)
  14.  
  15.     def draw(self):
  16.         turtle.speed(0)
  17.         turtle.up()
  18.         turtle.goto(self.__x,self.__y)
  19.         turtle.dot()
  20.         turtle.write(turtle.pos())
  21.  
  22. class wektor(object):
  23.     def __init__(self,start,koniec):
  24.         self.__start=start
  25.         self.__koniec=koniec
  26.  
  27.     def getwektor(self):
  28.         return(self.__start.getxy(),self.__koniec.getxy())
  29.  
  30.     def draww(self,px,py):
  31.         turtle.up()
  32.         turtle.goto(self.__start.getxy()[0]+px,self.__start.getxy()[1]+py)
  33.         turtle.write(str(self.__start.getxy()[0])+"; "+str(self.__start.getxy()[1]))
  34.         turtle.down()
  35.         turtle.goto(self.__koniec.getxy()[0]+px,self.__koniec.getxy()[1]+py)
  36.         turtle.write(str(self.__koniec.getxy()[0])+"; "+str(self.__koniec.getxy()[1]))
  37.         turtle.up()
  38.  
  39.     def dlugosc(self):
  40.         a = math.sqrt((self.__start.getxy()[0]+self.__koniec.getxy()[0])**2+(self.__start.getxy()[1]+self.__koniec.getxy()[1])**2)
  41.         return a
  42.  
  43. def sortuj(list1):
  44.     for i in range(1,len(list1)):
  45.         key=list1[i]
  46.         j=i-1
  47.         while j>=0 and (list1[j].getxy()[0]>key.getxy()[0]) or (list1[i].getxy()[0]==key.getxy()[0] and list1[i].getxy()[1]>key.getxy()[1]):
  48.             list1[j+1]=list1[j]
  49.             j=j-1
  50.         list1[j+1]=key
  51.  
  52. przypadki = []
  53. turtle.speed(0)
  54. for r in range(0,10):
  55.     listap = []
  56.     for x in range(5):
  57.         a = punkt(random.randint(-300,300),random.randint(-300,300))
  58.         listap.append(a)
  59.  
  60.     wektory = []
  61.     dl = 0
  62.     for x in range(0,len(listap)-1):
  63.         a = wektor(listap[x],listap[x+1])
  64.         dl = dl + a.dlugosc()
  65.         wektory.append(a)
  66.     for x in wektory:
  67.         x.draww(-400,0)
  68.  
  69.  
  70.     sortuj(listap)
  71.     dl2 = 0
  72.     wektoryp = []
  73.     for x in range(0,len(listap)-1):
  74.         a = wektor(listap[x],listap[x+1])
  75.         dl2 = dl2 + a.dlugosc()
  76.         wektoryp.append(a)
  77.  
  78.     for x in wektoryp:
  79.         x.draww(400,0)
  80.  
  81.     turtle.goto(-300,-320)
  82.     turtle.write("dlugosc = " + str(dl))
  83.     turtle.goto(300,-320)
  84.     turtle.write("dlugosc = " + str(dl2))
  85.     przypadki.append((r,dl,dl2))
  86.    
  87.    
  88.     turtle.clear()
  89. turtle.done()
  90.  
  91. print(przypadki)
  92. print("Liczba przypadkow: " + str(len(przypadki)))
  93. for x in range(0,len(przypadki)):
  94.     licznika = 0
  95.     licznikb = 0
  96.     if przypadki[x][1]>przypadki[x][2]:
  97.         licznika = licznika+1
  98.     elif przypadki[x][1]<przypadki[x][2]:
  99.         licznikb = licznikb+1
  100.     else:
  101.         print("Nieznany blad")
  102.         break
  103.  
  104. print("Przypadki w ktorych nieposortowane wektory byly dłuzsze " + str(licznika))
  105. print("Przypadki w ktorych nieposortowane wektory byly krotsze " + str(licznikb))
  106.  
  107.      
  108.  
  109.  
  110.