From 7453ea7efdfa4cc6cd69f5b776d2c023203150b7 Mon Sep 17 00:00:00 2001 From: KrystianPlackowski Date: Thu, 26 May 2016 03:08:13 +0200 Subject: [PATCH 1/4] Add files via upload prosze o dokladna specyfikacje wyjscia w zadaniu 5.!!!! : 1) ile miejsc po przecinku wypisac? 2) czy liczy sie kolejnosc wypisywanych punktow (gdy sa 2)? 3) czy wyniki sa zawsze liczbami calkowitymi? 4) co jesli okregi sa wspolsrodkowe? --- solution.py | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 solution.py diff --git a/solution.py b/solution.py new file mode 100644 index 0000000..90a77c0 --- /dev/null +++ b/solution.py @@ -0,0 +1,126 @@ +# autor: Krystian Plackowski + +def Triangle(N): + + trojkat = [[1]] + + list_Prev = [1] + + for j in range(N): + + list_New = [1] + + for i in range( len( list_Prev)-1): + list_New.append( list_Prev[i] + list_Prev[i+1]) + + list_New.append(1) + list_Prev = list_New + + trojkat.append(list_New) + + return trojkat + + +# zadanie 1 +def Pascal(N): + print Triangle(N-1) + + +# zadanie 2 +def Newton(N,M): + trojkat = Triangle(N) + print trojkat[N][M] + + +#zadanie 3 +def LotOfHash(N): + trojkat = Triangle(N-1) + + + for i in range(len(trojkat)): + string = "" + + for j in range(len(trojkat[i])): + + if trojkat[i][j] % 2 == 1: + string += "#" + else: + string += " " + + print string + + + +#zadanie 4 +def PowerModulo(a,b,n): + wynik = 1 + + list = [] + while b: + list.append(b % 2 == 1) + b /= 2 + + i = len(list) + while i: + i -= 1 + wynik *= wynik + if list[i]: + wynik *= a + wynik %= n + + print wynik + + + +#zadanie 5 +def Intersect( (x1,y1,r1), (x2,y2,r2)): + + # A - srodek okregu 1 + # B - srodek okregu 2 + # alfa to kat <(P1, A, B) = <(P2, A, B) ; gdzie P1 i P2 to pkty przeciecia + + odl_srodkow = ( (x1-x2)**2 + (y1-y2)**2)**0.5 + + if(odl_srodkow == 0.): # wspolsrodkowe! + print "przemysl to jeszcze raz" + return -1 + if odl_srodkow > r1 + r2 or odl_srodkow < abs( r1 - r2): # rozlaczne + print "[ ]" + return + + + wektor = ( (x2-x1)*r1/odl_srodkow, (y2-y1)*r1/odl_srodkow) # wektor o kierunku wektora_AB i dlugosci r1 + + cos_alfa = (r1**2 - r2**2 + odl_srodkow**2 ) / (2 * r1 * odl_srodkow) # tw. cosinusow + sin_alfa = (1 - cos_alfa**2)**0.5 # alfa e ( 0*, 180* ) -> sin(alfa) > 0 + + if odl_srodkow == r1+r2 or odl_srodkow == abs(r1-r2): # styczne wew. lub zew. + print ( x1+wektor[0], y1+wektor[1]) + return + + + # obroc wektor o kat alfa w prawo: + P1 = (x1 + wektor[0]*cos_alfa - wektor[1]*sin_alfa , y1 + wektor[1]*cos_alfa + wektor[0]*sin_alfa) + + + # obroc wektor o kat alfa w lewo: + P2 = (x1 + wektor[0] * cos_alfa + wektor[1] * sin_alfa, y1 + wektor[1] * cos_alfa - wektor[0] * sin_alfa) + + print (P1, P2) + + + + + + +# Newton(200,2) +# Pascal(4) +# LotOfHash(6) +# PowerModulo(2,3,10) +# PowerModulo(2,4,10) +# PowerModulo(2,5,10) +# Intersect( (0,0,5), (6,0,5) ) +# Intersect( (0,0,5), (10,0,5) ) +# Intersect( (0,0,5), (15,0,5) ) +# Intersect( (0,0,2), (3,1,4) ) +# Intersect( (0,0,2), (1,0,1) ) From 06f8b5ebf9a8f16663d9806f0a591d35779d6875 Mon Sep 17 00:00:00 2001 From: KrystianPlackowski Date: Thu, 26 May 2016 03:41:28 +0200 Subject: [PATCH 2/4] Add files via upload --- test.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 test.py diff --git a/test.py b/test.py new file mode 100644 index 0000000..f3a2359 --- /dev/null +++ b/test.py @@ -0,0 +1,17 @@ +from solution import Pascal +from solution import Newton +from solution import LotOfHash +from solution import PowerModulo +from solution import Intersect + +# Newton(200,2) +# Pascal(4) +# LotOfHash(6) +# PowerModulo(2,3,10) +# PowerModulo(2,4,10) +# PowerModulo(2,5,10) +# Intersect( (0,0,5), (6,0,5) ) +# Intersect( (0,0,5), (10,0,5) ) +# Intersect( (0,0,5), (15,0,5) ) +# Intersect( (0,0,2), (3,1,4) ) +# Intersect( (0,0,2), (1,0,1) ) \ No newline at end of file From ba69b27cbe6456733a09eaa73a8f15434abdf027 Mon Sep 17 00:00:00 2001 From: KrystianPlackowski Date: Wed, 29 Jun 2016 20:40:06 +0200 Subject: [PATCH 3/4] Update solution.py zamiana print na return --- solution.py | 33 ++++++++------------------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/solution.py b/solution.py index 90a77c0..05572e4 100644 --- a/solution.py +++ b/solution.py @@ -23,13 +23,13 @@ def Triangle(N): # zadanie 1 def Pascal(N): - print Triangle(N-1) + return Triangle(N-1) # zadanie 2 def Newton(N,M): trojkat = Triangle(N) - print trojkat[N][M] + return trojkat[N][M] #zadanie 3 @@ -68,7 +68,7 @@ def PowerModulo(a,b,n): wynik *= a wynik %= n - print wynik + return wynik @@ -82,11 +82,11 @@ def Intersect( (x1,y1,r1), (x2,y2,r2)): odl_srodkow = ( (x1-x2)**2 + (y1-y2)**2)**0.5 if(odl_srodkow == 0.): # wspolsrodkowe! - print "przemysl to jeszcze raz" return -1 + if odl_srodkow > r1 + r2 or odl_srodkow < abs( r1 - r2): # rozlaczne - print "[ ]" - return + return "[ ]" + wektor = ( (x2-x1)*r1/odl_srodkow, (y2-y1)*r1/odl_srodkow) # wektor o kierunku wektora_AB i dlugosci r1 @@ -95,8 +95,7 @@ def Intersect( (x1,y1,r1), (x2,y2,r2)): sin_alfa = (1 - cos_alfa**2)**0.5 # alfa e ( 0*, 180* ) -> sin(alfa) > 0 if odl_srodkow == r1+r2 or odl_srodkow == abs(r1-r2): # styczne wew. lub zew. - print ( x1+wektor[0], y1+wektor[1]) - return + return [ ( x1+wektor[0], y1+wektor[1]) ] # obroc wektor o kat alfa w prawo: @@ -106,21 +105,5 @@ def Intersect( (x1,y1,r1), (x2,y2,r2)): # obroc wektor o kat alfa w lewo: P2 = (x1 + wektor[0] * cos_alfa + wektor[1] * sin_alfa, y1 + wektor[1] * cos_alfa - wektor[0] * sin_alfa) - print (P1, P2) - - - - - -# Newton(200,2) -# Pascal(4) -# LotOfHash(6) -# PowerModulo(2,3,10) -# PowerModulo(2,4,10) -# PowerModulo(2,5,10) -# Intersect( (0,0,5), (6,0,5) ) -# Intersect( (0,0,5), (10,0,5) ) -# Intersect( (0,0,5), (15,0,5) ) -# Intersect( (0,0,2), (3,1,4) ) -# Intersect( (0,0,2), (1,0,1) ) + return [P1, P2] From 221f80aa9f4ee094eaa2cff5579ac2d8735882cf Mon Sep 17 00:00:00 2001 From: KrystianPlackowski Date: Wed, 29 Jun 2016 20:58:37 +0200 Subject: [PATCH 4/4] Update solution.py poprawa wypisywania w zad5 --- solution.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/solution.py b/solution.py index 05572e4..c80878d 100644 --- a/solution.py +++ b/solution.py @@ -79,13 +79,15 @@ def Intersect( (x1,y1,r1), (x2,y2,r2)): # B - srodek okregu 2 # alfa to kat <(P1, A, B) = <(P2, A, B) ; gdzie P1 i P2 to pkty przeciecia + wynik = [] + odl_srodkow = ( (x1-x2)**2 + (y1-y2)**2)**0.5 if(odl_srodkow == 0.): # wspolsrodkowe! return -1 if odl_srodkow > r1 + r2 or odl_srodkow < abs( r1 - r2): # rozlaczne - return "[ ]" + return wynik @@ -95,7 +97,8 @@ def Intersect( (x1,y1,r1), (x2,y2,r2)): sin_alfa = (1 - cos_alfa**2)**0.5 # alfa e ( 0*, 180* ) -> sin(alfa) > 0 if odl_srodkow == r1+r2 or odl_srodkow == abs(r1-r2): # styczne wew. lub zew. - return [ ( x1+wektor[0], y1+wektor[1]) ] + wynik.append( ( x1+wektor[0], y1+wektor[1])) + return wynik # obroc wektor o kat alfa w prawo: @@ -105,5 +108,6 @@ def Intersect( (x1,y1,r1), (x2,y2,r2)): # obroc wektor o kat alfa w lewo: P2 = (x1 + wektor[0] * cos_alfa + wektor[1] * sin_alfa, y1 + wektor[1] * cos_alfa - wektor[0] * sin_alfa) - - return [P1, P2] + wynik.append(P1) + wynik.append(P2) + return wynik