Skip to content

Commit 99674c8

Browse files
committed
Wprowadzenie plików z dzisiejszych zajęć, jeśli coś wymaga lepszego skomentowania piszcie
1 parent e4ee79f commit 99674c8

File tree

4 files changed

+152
-0
lines changed

4 files changed

+152
-0
lines changed

lab4/zad04-a.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
"""
4+
Created on Mon Oct 30 11:29:45 2017
5+
6+
@author: shinigami
7+
"""
8+
import time
9+
10+
def rek(n):
11+
if(n==0 or n==1):
12+
return 1;
13+
14+
return n*rek(n-1)
15+
16+
def itera(n):
17+
i=1
18+
19+
if(n>0):
20+
for j in range(1,n+1):
21+
i*=j
22+
return i
23+
24+
n = (int)(input())
25+
old = time.clock()
26+
r = rek(n)
27+
print("rekurenc n={} n!={} czas={}".format(n,r,(time.clock()-old)));
28+
old = time.clock()
29+
i = itera(n)
30+
print("iteracyjn n={} n!={} czas={}".format(n,i,(time.clock()-old)));

lab4/zad04-b.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# -*- coding: utf-8 -*-
2+
3+
#!/usr/bin/env python3
4+
# -*- coding: utf-8 -*-
5+
"""
6+
Created on Mon Oct 30 11:29:45 2017
7+
8+
@author: shinigami
9+
"""
10+
import time
11+
12+
def rek(n):
13+
if(n==0):
14+
return 0;
15+
if(n==1):
16+
return 1;
17+
18+
return rek(n-2)+rek(n-1)
19+
20+
def itera(n):
21+
if(n==0):
22+
return 0;
23+
if(n==1):
24+
return 1;
25+
26+
a=0
27+
b=1
28+
29+
for j in range(1,n):
30+
c=b
31+
b=a+b
32+
a=c
33+
return b
34+
35+
n = (int)(input())
36+
old = time.clock()
37+
r = rek(n)
38+
print("rekurenc n={} n!={} czas={}".format(n,r,(time.clock()-old)));
39+
old = time.clock()
40+
i = itera(n)
41+
print("iteracyjn n={} n!={} czas={}".format(n,i,(time.clock()-old)));

lab4/zad04-c.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
"""
4+
Created on Mon Oct 30 11:57:05 2017
5+
6+
@author: shinigami
7+
"""
8+
import math
9+
10+
def pascal(n):
11+
if(n==1):
12+
print("1")
13+
return [1]
14+
if(n ==2):
15+
pascal(n-1)
16+
print("1 1")
17+
return [1,1]
18+
19+
b = pascal(n-1)
20+
c = [1,1]
21+
for i in range(1,len(b)):
22+
c.insert(1,b[i]+b[i-1])
23+
for i in c:
24+
print(i,end=" ")
25+
print()
26+
return c
27+
28+
29+
i = (int)(input())
30+
pascal(i)

lab4/zad04-cb.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
"""
4+
Created on Mon Oct 30 11:57:05 2017
5+
6+
@author: shinigami
7+
"""
8+
import math
9+
10+
def pascal(n):
11+
#elemanty końcowe
12+
if(n==1):
13+
return [[1]] #zwrócenie tablicy tablic zawierającej tablicę pierwrzego rzędu
14+
if(n ==2):
15+
b = pascal(n-1) #pobranie tablicy tablic dla poprzedniego rzędu
16+
b.append([1,1]) #dopisanie do tablicy, 2 rzędu
17+
return b
18+
19+
#tu zaczynaja się rekurencyjne wywołanie
20+
b = pascal(n-1) #pobranie tablicy tablic dla poprzedniego rzędu
21+
c = [1,1]#utworzenie tablicy rozpoczętej i zakończonej jedynkami
22+
#b[n-2] tablica dla poprzedniego rzędu
23+
for i in range(1,len(b[n-2])): #przejście po wszyskich elementach poprzedniego rzędu
24+
c.insert(1,
25+
b[n-2][i]+b[n-2][i-1]) # wpisanie symu dwóch powyższych liczb do obecnego rzędu
26+
b.append(c); # dopisanie nowo utworzonej tablicy do tablicy tablic
27+
return b #zwrócenie tablicy tablic dla obecnego rzędu
28+
29+
def drawPascal(n):
30+
length = len(n); #pobranie ilości rzędów z wielkości tablicy
31+
maxWidth = len(n[length-1]) # pobranie długości ostatniego rzędu
32+
maxValue = max(n[length-1]) #pobranie maksymalnej wartości z ostatniego rzędu
33+
maxValueLength = len(str(maxValue)) #pobranie ilości cyfr jakich potrzebujemy do zapisania tej liczby
34+
35+
if(maxValueLength%2 ==0):
36+
maxValueLength+=1# dodanie 1 w celu wyśrodkowania
37+
38+
spaceWidth = maxWidth*(maxValueLength+1)/2 #obliczenie połowy długości maksymalnego rzędu
39+
40+
for row in n:
41+
pad = (int)(spaceWidth-(len(row)*(maxValueLength+1)/2)) # obliczenie różnicy między długością obecnego rzędu a maksymalnego
42+
print(" "*pad,end="")#wypełnienie róznicy spacjami
43+
for number in row:
44+
print("{:{width}d}".format(number,width=maxValueLength), end=" ")#wydrukowanie liczby na ekran
45+
print();#przejście do następnego wiersza
46+
47+
48+
i = (int)(input())
49+
drawPascal(pascal(i))#wywołanie funkcji pascal zwróci nam tablicę tablic,
50+
#zawierającą reprezentację trójkąta pascala, następnie wyprowadzimy ją na
51+
#ekran za pomocą funkcji drawPascal

0 commit comments

Comments
 (0)