Informatika1-2010/Zh1
Tartalomjegyzék |
Informatika 1, 1. zárthelyi, mintamegoldásokkal
2010. október 15.
1. Numerikus gyökkeresés
Feladat
Írjunk Sage kódot, ami numerikus közelítőértéket számol a 10 = 3x/x egyenlet azon gyökére, amire 2 < x < 4.
Mintamegoldás
(3^x/x == 10).find_root(2, 4)
2. Mit ír ki?
Feladat
Mit válaszol a Sage, ha a következőt futtatjuk le?
(x / 2^x).subs(x = 3).n()
Mintamegoldás
0.375000000000000
3. Rajzolás
Feladat
Rajzoljunk a Sage segítségével köröket, melyeknek középpontjai az y = x egyenesen helyezkednek el, vízszintesen 1-1 távolságra egymástól, a (-5, -5)-től kezdve az (5, 5)-ig. A körök sugara legyen 2. A körök színe legyen kezdetben fekete, a végén kék.
Mintamegoldás
abra = []
for k in range(11):
abra.append(circle((k - 5, k - 5), 2, color=(0, 0, k/10)))
show(sum(abra), aspect_ratio = 1)
4. Váltott előjelű összeg
Feladat
Írjunk függvényt, aminek a bemenete egy számokból álló páratlan hosszú lista, eredménye pedig a számok váltakozó előjelű összege. Például
valtott_osszeg([18, 17, 4, 13, 7, 20, 6])
eredménye legyen -15,
mivel -15 = 18 - 17 + 4 - 13 + 7 - 20 + 6.
1. mintamegoldás
def valtott_osszeg(sor):
ossz = 0
for el in sor:
ossz = el - ossz
return ossz
2. mintamegoldás
def valtott_osszeg(sor):
ossz = sor[0]
for fel in range((len(sor) - 1) / 2):
ossz = ossz - sor[1+2*fel] + sor[2+2*fel]
return ossz
3. mintamegoldás
def valtott_osszeg(sor):
return sum([(-1)^k * sor[k] for k in range(len(sor))])
4. mintamegoldás
def valtott_osszeg(sor):
return 2 * sum(sor[::2]) - sum(sor)
5. Egyszerű ciklus
Feladat
Mit válaszol a Sage, ha a következőt futtatjuk le?
n = 0
while n < 10:
if n < 5:
n = n + 3
else:
n = n + 2
print n
Mintamegoldás
8 10
6. Relatív prímek
Feladat
Írjunk függvényt, ami eldönti, hogy két szám relatív prím-e. A függvény bemenete két természetes szám, kimenete 1, ha ezek relatív prímek; 0, ha a két számnak van 1-nél nagyobb közös osztója. Például
relativ_prim(9, 12)
eredménye 0.
1. mintamegoldás
def relativ_prim(bal, jobb):
eredm = 1
if 0 == bal and 1 != jobb:
eredm = 0
for oszto in range(2, bal + 1):
if 0 == bal % oszto and 0 == jobb % oszto:
eredm = 0
return eredm
2. mintamegoldás
def relativ_prim(bal, jobb):
while 0 != jobb:
mar = bal % jobb
bal = jobb
jobb = mar
if 1 == bal:
return 1
else:
return 0
7. Listák
Feladat
Legyen
lista = ['a', 1, 2, 3, 'b', 4]
A fenti utasítás kiadása után mit válaszol a Sage?
lista[1] lista[1:3] lista[-1] lista.count(1) tuple(lista) 'b' in lista
Mintamegoldás
1
[1, 2]
4
1
('a', 1, 2, 3, 'b', 4)
True