1 park=[]2 3 #------------------------------------------------------------------------------4 # 1. Olvassa be a felajanlas.txt állomány tartalmát, tárolja el a felajánlások5 # adatait, és annak felhasználásával oldja meg a következő feladatokat!6 #------------------------------------------------------------------------------7 def F1(fnev):8 global N9 f=open(fnev,'r')10 N=int(f.readline().strip())11 for sor in f:12 sor=sor.strip().split()13 sor[0]=int(sor[0])14 sor[1]=int(sor[1])15 park.append(sor)16 f.close()17 #------------------------------------------------------------------------------18 # 2. Írja ki, hány felajánlást tartalmaz az állomány!19 #------------------------------------------------------------------------------20 def F2():21 print('2. feladat')22 print('A felajánlások száma: %d' %len(park)) 23 #------------------------------------------------------------------------------24 # 3. Jelenítse meg a képernyőn azon felajánlások sorszámát, amelyek a bejárat25 # bal és jobb oldalán található ágyást is beültetnék! A sorszámokat egy-egy26 # szóközzel válassza el egymástól!27 #------------------------------------------------------------------------------28 def F3():29 print('3. feladat')30 print('A bejárat mindkét oldalán ültetők:',end=' ')31 for sorszam,ajanlat in enumerate(park,start=1):32 if ajanlat[0]>ajanlat[1]:33 print(sorszam,end=' ')34 print()35 #------------------------------------------------------------------------------36 # 4. Kérje be a felhasználótól egy ágyás sorszámát! A tesztelés során használ-37 # hatja az 1. ágyást, amelyet többen is beültetnének és a 269. ágyást,38 # amelynek beültetésére senki sem vállalkozik.39 #------------------------------------------------------------------------------40 def F4():41 print('4. feladat')42 sorszam=int(input('Adja meg az ágyás sorszámát! '))43 # 4.a) Írja a képernyőre, hogy hány felajánlásban szerepel ez az ágyás!44 agyas=[]45 for ajanlat in park:46 eltol=0 if ajanlat[0]<ajanlat[1] else N47 if ajanlat[0]<=sorszam<=ajanlat[1]+eltol:48 agyas.append(ajanlat[2])49 print('A felajánlók száma: %d' %len(agyas))50 # 4. b) Adja meg, milyen színű lesz ez az ágyás, ha mindenki a felajánlások51 # sorrendjében végzi el az ültetést, de nem ültet, ha másvalaki előtte52 # már ültetett oda! Ha nem ültetett oda senki, akkor „Ezt az ágyást nem53 # ültetik be.” szöveget jelenítse meg!54 s='A virágágyás színe, ha csak az első ültet: '55 valasz=s+agyas[0] if len(agyas)>0 else 'Ezt az ágyást nem ültetik be.'56 print(valasz)57 # 4. c) Adja meg, milyen színekben pompázna ez az ágyás, ha az eredeti58 # tervvel ellentétesen minden felajánló elültetné virágait! Minden59 # színt csak egyszer tüntessen fel! Az egyes színeket szóközökkel60 # válassza el egymástól! Ha nem ültettek oda virágot, ne jelenítsen61 # meg semmit!62 if len(agyas)>0:63 szinek=set(agyas)64 print('A virágágyás színei:',end=' ')65 for szin in szinek:66 print(szin,end=' ')67 print()68 #------------------------------------------------------------------------------69 # 5. A felajánlások alapján több eset lehetséges. Határozza meg, melyik70 # teljesül! Az idézőjelek közötti szöveget írja a képernyőre!71 # • „Minden ágyás beültetésére van jelentkező.”72 # • Ha nincs minden ágyásra jelentkező, de a felajánlásokban vállalt73 # ágyások számának összege nagyobb vagy egyenlő, mint, az ágyások74 # száma, akkor: „Átszervezéssel megoldható a beültetés.”75 # • Ha kevesebb ágyás beültetésére vállalkoztak, mint amennyi van:76 # „A beültetés nem oldható meg.”77 #------------------------------------------------------------------------------78 def F5():79 print('5. feladat')80 agyasok=[False]*N81 agyas_db=082 for ajanlat in park:83 84 kezd=ajanlat[0]-185 vege=ajanlat[1]86 if kezd<vege:87 agyas_db+=vege-kezd88 for i in range(kezd,vege,1):89 agyasok[i]=True90 else:91 agyas_db+=(N-kezd+1)+vege92 for i in range(kezd,N,1):93 agyasok[i]=True94 for i in range(0,vege,1):95 agyasok[i]=True96 true_db=agyasok.count(True) 97 if true_db==N:98 print('Minden ágyás beültetésére van jelentkező.')99 elif agyas_db>=N:100 print('Átszervezéssel megoldható a beültetés.')101 else:102 print('A beültetés nem oldható meg.')103 #------------------------------------------------------------------------------104 # 6. A beültetést a felajánlások sorrendjében végezték el. Ha egy ágyást valaki105 # már beültetett, akkor más már nem ültetett oda. A munka eredményét tárolja106 # el a szinek.txt fájlban! A fájlban soronként az ágyások sorszámának107 # sorrendjében két értéket, az ágyás színét jelző karaktert és az ültetéshez108 # tartozó felajánlás sorszámát írja ki. Amelyik ágyás virág nélkül maradt,109 # színként a # karaktert, a felajánlás sorszámának helyére pedig a 0-t írja!110 #------------------------------------------------------------------------------111 def F6():112 print('6.feladat')113 agyasok=[]114 for i in range(N):115 agyasok.append(['#',0])116 117 for sorszam,ajanlat in enumerate(park,start=1):118 kezd=ajanlat[0]-1119 vege=ajanlat[1]120 for i in range(N):121 if (kezd<=i+1<=vege):122 if agyasok[i][0]=='#': 123 agyasok[i][0]=ajanlat[2]124 agyasok[i][1]=sorszam125 elif (kezd>vege) and (kezd<=i+1 or i+1<=vege):126 if agyasok[i][0]=='#': 127 agyasok[i][0]=ajanlat[2]128 agyasok[i][1]=sorszam129 fki=open('szinek.txt','w')130 for agyas in agyasok:131 print(agyas[0],agyas[1],file=fki)132 fki.close()133 #******************************************************************************134 F1('felajanlas.txt')135 F2()136 F3()137 F4()138 F5()139 F6() 140 141