# -*- coding: cp1250 -*-
import random
import math
import turtle
import time
class punkt(object):
def __init__(self,x,y):
self.__x=x
self.__y=y
def getxy(self):
return(self.__x,self.__y)
def draw(self):
turtle.speed(0)
turtle.up()
turtle.goto(self.__x,self.__y)
turtle.dot()
turtle.write(turtle.pos())
class wektor(object):
def __init__(self,start,koniec):
self.__start=start
self.__koniec=koniec
def getwektor(self):
return(self.__start.getxy(),self.__koniec.getxy())
def draww(self,px,py):
turtle.up()
turtle.goto(self.__start.getxy()[0]+px,self.__start.getxy()[1]+py)
turtle.write(str(self.__start.getxy()[0])+"; "+str(self.__start.getxy()[1]))
turtle.down()
turtle.goto(self.__koniec.getxy()[0]+px,self.__koniec.getxy()[1]+py)
turtle.write(str(self.__koniec.getxy()[0])+"; "+str(self.__koniec.getxy()[1]))
turtle.up()
def dlugosc(self):
a = math.sqrt((self.__start.getxy()[0]+self.__koniec.getxy()[0])**2+(self.__start.getxy()[1]+self.__koniec.getxy()[1])**2)
return a
def sortuj(list1):
for i in range(1,len(list1)):
key=list1[i]
j=i-1
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]):
list1[j+1]=list1[j]
j=j-1
list1[j+1]=key
przypadki = []
turtle.speed(0)
for r in range(0,10):
listap = []
for x in range(5):
a = punkt(random.randint(-300,300),random.randint(-300,300))
listap.append(a)
wektory = []
dl = 0
for x in range(0,len(listap)-1):
a = wektor(listap[x],listap[x+1])
dl = dl + a.dlugosc()
wektory.append(a)
for x in wektory:
x.draww(-400,0)
sortuj(listap)
dl2 = 0
wektoryp = []
for x in range(0,len(listap)-1):
a = wektor(listap[x],listap[x+1])
dl2 = dl2 + a.dlugosc()
wektoryp.append(a)
for x in wektoryp:
x.draww(400,0)
turtle.goto(-300,-320)
turtle.write("dlugosc = " + str(dl))
turtle.goto(300,-320)
turtle.write("dlugosc = " + str(dl2))
przypadki.append((r,dl,dl2))
turtle.clear()
turtle.done()
print(przypadki)
print("Liczba przypadkow: " + str(len(przypadki)))
for x in range(0,len(przypadki)):
licznika = 0
licznikb = 0
if przypadki[x][1]>przypadki[x][2]:
licznika = licznika+1
elif przypadki[x][1]<przypadki[x][2]:
licznikb = licznikb+1
else:
print("Nieznany blad")
break
print("Przypadki w ktorych nieposortowane wektory byly dłuzsze " + str(licznika))
print("Przypadki w ktorych nieposortowane wektory byly krotsze " + str(licznikb))
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}