Skip to content

Commit 828f5d7

Browse files
committed
Aktualizaja
1 parent fca9d6d commit 828f5d7

File tree

4 files changed

+195
-0
lines changed

4 files changed

+195
-0
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,8 @@ ENV/
9999

100100
# mypy
101101
.mypy_cache/
102+
103+
*.swo
104+
*.iml
105+
*.swp
106+
*.odt

lab7/01.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# -*- coding: utf-8 -*-
2+
import math
3+
def pierwsze(n):
4+
#deklaracja tablicy, pokazującej czy dana liczba jest pierwsza
5+
pierwsze = [False]*2 + [True]*(n-2)
6+
#Deklaracja tablicy do przechowywania końcowych liczb pierwszych
7+
ppierwsze =[0]*n
8+
ppi=0;# licznik liczb pierwszych
9+
d=math.sqrt(n) #obliczenie pierwiastka z n, musimy sprawdzić jedynie liczbymniejsze od tego pierwiastka
10+
11+
for (i,p) in enumerate(pierwsze):#przechodzimy przez listę liczbpierwszych (i - sprawdzana liczba, p - czy jest pierwsza)
12+
if(i>d):
13+
break #zakończenie sprawdzania jeżeli i > pierwiastka z n
14+
if(not p):
15+
continue # pominięcie jeśeli i nie jest liczbą pierwszą
16+
17+
for delete in range(i*i,n,i):
18+
pierwsze[delete]=False#usunięcie wszyskich wielokrotności liczby pierwszej
19+
for (i,p) in enumerate(pierwsze):
20+
if(p):
21+
ppierwsze[ppi]=i #dodanie liczby pierwszej do listy liczb pierwszych
22+
ppi+=1;#zwiększenie licznika liczb pierwszych
23+
return ppierwsze[0:ppi] #zwracamy wszyskie liczby pierwsze
24+
25+
26+
27+
d = ((input()).split(" "))
28+
d = [int(i) for i in d]
29+
print (d)
30+
counts = [0]*(max(d)+1)
31+
for i in d:
32+
counts[i]+=1;
33+
34+
print (counts)
35+
pierw = pierwsze(max(d));
36+
print (pierw)
37+
delete = []
38+
for i in d:
39+
if(i in pierw and not i in delete):
40+
if(counts[i]%2 != 0):
41+
delete.append(i);
42+
43+
for i in delete:
44+
while(i in d):
45+
d.remove(i)
46+
print(d);

lab7/02.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# -*- coding: utf-8 -*-
2+
3+
ceny = [ 1, 5, 8, 9,10,16,17,20,24,26]
4+
dlug = [ 1, 2, 3, 4, 5, 6, 7, 8, 9,10]
5+
dl = (int)(input())
6+
def cutToMoney(cut):
7+
money =0
8+
for c in cut:
9+
money+=ceny[(dlug.index(c))]
10+
return money;
11+
12+
def getKey(key):
13+
return (float)(key[0]/key[1])
14+
def greedy(dl):
15+
global ceny
16+
global dlug
17+
greedyTab =[];
18+
for i in range(len(ceny)):
19+
greedyTab.append((ceny[i],dlug[i]));
20+
print (greedyTab)
21+
greedyTab=(sorted(greedyTab, key=getKey,reverse=True))
22+
print (greedyTab)
23+
cut = []
24+
while(dl >0):
25+
for cd in greedyTab:
26+
if(cd[1]<=dl):#wybieramy lokalnie najlepszą cenę
27+
cut.append(cd[1])
28+
dl-=cd[1]#zmniejszamy pret
29+
break;#przechodzimy do kolejnego punktu cięcia
30+
return cut
31+
32+
33+
34+
backPackTab =[
35+
(0,0,[]),
36+
(1,1,[1]),
37+
(2,5,[2]),
38+
(3,8,[3])]
39+
backPackTabCount = 3;
40+
def backpack(dl):
41+
global ceny
42+
global dlug
43+
global backPackTab
44+
global backPackTabCount
45+
if(dl<=backPackTabCount):
46+
return backPackTab[dl];
47+
48+
for i in range(len(backPackTab),dl+1):
49+
for t_dlug in dlug:
50+
if(t_dlug> i):
51+
break;
52+
53+
if(i <= backPackTabCount):
54+
cached =backPackTab[i]
55+
else:
56+
cached = None
57+
new = (i,backPackTab[i-t_dlug][1]+ceny[t_dlug-1],backPackTab[i-t_dlug][2]+[t_dlug])
58+
59+
if(cached != None):
60+
if(new[1] >= cached[1]):
61+
backPackTab[i]=new;
62+
else:
63+
backPackTab.append(new)
64+
backPackTabCount=new[0]
65+
66+
return backPackTab[dl]
67+
68+
69+
70+
cut =greedy(dl)
71+
print(cut ,cutToMoney(cut))
72+
print(backPackTab)
73+
cut = backpack(dl)[2]
74+
print(backPackTab)
75+
print(cut ,cutToMoney(cut))

lab8/01.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import random
2+
random.seed()
3+
4+
def initTab(n):
5+
tab = [0]*n;
6+
#inicjalizujemy każdy element losową wartością
7+
for i in range(n):
8+
tab[i]=random.randint(1,100);
9+
10+
return tab
11+
12+
def selectonSort(n):
13+
for x in range(len(n)):
14+
#wybieramy najmniejszą wartość(jej index) w zakresie (x-końca tablicy)
15+
min = x
16+
for i in range(x,len(n)):
17+
if(n[min]>n[i]):
18+
min=i
19+
20+
#zamieniamy miejscami najmniejszy element z elementem x
21+
n[min],n[x] = n[x],n[min]
22+
23+
return n
24+
25+
def insertionSort(n):
26+
for i in range(1,len(n)):
27+
#pobieramy kolejny element
28+
insVal = n[i];
29+
#sprawdzamy czy jest mniejszy od już pobranych elementów
30+
j = i-1;
31+
while (j>=0 and n[j]>insVal):
32+
#przesówamy większe elementy w prawo
33+
n[j+1]=n[j]
34+
#przechodzimy do elementu j-1
35+
j-=1
36+
#w tym momencie jesteśmy nad elementem mniejszym od wstawianej wartości
37+
#mamy większewartości przesunięte w prawo
38+
# i bezpośrednio naprawo od nas jest skopiowany element od nas większy
39+
n[j+1]=insVal
40+
41+
return n
42+
43+
def bubbleSort(n):
44+
isSorted = False
45+
sortingCount = 1;
46+
size = len(n)
47+
while(not isSorted and sortingCount <=size):
48+
#Zmieniamy flage w nadzieji że posortowaliśmy tablice
49+
isSorted = True
50+
#sprawdzamy elementy od 0 do SortCount
51+
for i in range(size-sortingCount):
52+
if(n[i] > n[i+1]):#Jeżeli znaleźliśmy nieposortowane elementy zamieniamy je miejscami
53+
n[i], n[i+1] = n[i+1],n[i]
54+
#Ustawiamy flagę
55+
isSorted = False
56+
#zwiększamySortCount
57+
sortingCount+=1
58+
return n;
59+
60+
SIZE = 10
61+
n = initTab(SIZE)
62+
print(n)
63+
print(selectonSort(n))
64+
n = initTab(SIZE)
65+
print(n)
66+
print(insertionSort(n))
67+
n = initTab(SIZE)
68+
print(n)
69+
print(bubbleSort(n))

0 commit comments

Comments
 (0)