lud202310info.py
1    def F1():
2        global osvenyek, dobasok
3        osvenyek=[]
4        fbe=open('osvenyek.txt','r')
5        for sor in fbe:
6            sor=sor.strip()
7            osvenyek.append(sor)
8        fbe.close()
9    
10       fbe=open('dobasok.txt','r')
11       sor=fbe.readline().strip().split()
12       dobasok=list(map(int,sor))
13       fbe.close()
14       
15   def F2():
16       print('2. feladat')
17       print(f'A dobások száma: {len(dobasok)}')
18       print(f'Az ösvények száma: {len(osvenyek)}')
19   
20   def F3():
21       print('3. feladat')
22       # PROGRAMOZÁSI TÉTEL - szélsőértékkeresés (max,min)
23       maxh=len(osvenyek[0])
24       ssz=1
25       for i in range(1,len(osvenyek)):
26           if len(osvenyek[i])>maxh:
27               maxh=len(osvenyek[i])
28               ssz=i+1
29       print(f'Az egyik leghosszabb a(z) {ssz}. ösvény, hossza: {maxh}')
30   
31       rendezett=sorted(osvenyek,key=lambda elem:len(elem),reverse=True)
32       maxh=len(rendezett[0])
33       ssz=osvenyek.index(rendezett[0])+1
34       # legn=max(osvenyek,key=lambda elem:len(elem))
35       print(f'Az egyik leghosszabb a(z) {ssz}. ösvény, hossza: {maxh}')
36   
37   def F4():
38       print('4. feladat')
39       global os,jsz
40       os=int(input('Adja meg egy ösvény sorszámát! '))
41       jsz=int(input('Adja meg a játékosok számát! '))
42   
43   def F5():
44       print('5. feladat')
45       osveny=osvenyek[os-1]
46       lista=list(osveny)
47       M=lista.count('M')
48       V=lista.count('V')
49       E=lista.count('E')
50       if M>0:
51           print(f'M: {M} darab')
52       if V>0:
53           print(f'V: {V} darab')
54       if E>0:
55           print(f'E: {E} darab')
56       
57   def F6():
58       fki=open('kulonleges.txt','w')
59       osveny=osvenyek[os-1]
60       for i in range(len(osveny)):
61           if osveny[i]!='M':
62               print(f'{i+1}\t{osveny[i]}',file=fki)
63       fki.close()
64   
65   def F7():
66       print('7. feladat')
67       kor=0                       # hányadik körben vagyunk
68       ukor=0                      # a játék vége ennél a körnél van
69       oh=len(osvenyek[os-1])      # ösvényünk hossza
70       szum=[0]*jsz                # jsz==5  [0,0,0,0,0]  dobások összegzése játékosonként
71       # dobasok 2 4 6 5 6 1 4 1 3 4 5 1 2 4 6 2 3 3 5 5 6 2 1 3 4 4 2 6 2 4 5 6 3 2 1 2 3 1 1 6 4
72       
73       for i in range(0,len(dobasok)-jsz,jsz):
74           adott_kor=dobasok[i:i+jsz]          # adott_kor   2 4 6 5 6
75           for j in range(jsz):
76               szum[j]+=adott_kor[j]
77           kor+=1
78           # valaki elérte-e az osvény végét
79           for j in range(jsz):
80               if szum[j]>=oh:
81                   ukor=kor
82                   jsorszam=j+1
83           if ukor!=0:
84               break
85   
86       print(f'A játék a(z) {ukor}. körben fejeződött be. A legtávolabb jutó(k) sorszáma: {jsorszam}')
87   
88   def F8():
89       print('8. feladat')
90       kor=0                       # hányadik körben vagyunk
91       ukor=0                      # a játék vége ennél a körnél van
92       oh=len(osvenyek[os-1])      # ösvényünk hossza
93       szum=[0]*jsz                # jsz==5  [0,0,0,0,0]  dobások összegzése játékosonként
94       nyertesek=[]
95       # dobasok 2 4 6 5 6 1 4 1 3 4 5 1 2 4 6 2 3 3 5 5 6 2 1 3 4 4 2 6 2 4 5 6 3 2 1 2 3 1 1 6 4
96       
97       for i in range(0,len(dobasok)-jsz,jsz):
98           adott_kor=dobasok[i:i+jsz]          # adott_kor   2 4 6 5 6
99           for j in range(jsz):
100              hozzaad=adott_kor[j]        # amekkorát dobott a j. játékos
101              szum[j]+=hozzaad
102              
103              if szum[j]<oh:
104                  holvan=osvenyek[os-1][szum[j]-1] # az a mező, amin éppen áll a játékos
105                  if holvan=='E':
106                      szum[j]+=hozzaad
107                  if holvan=='V':
108                      szum[j]-=hozzaad
109          kor+=1
110          # valaki elérte-e az osvény végét
111          
112          for j in range(jsz):
113              if szum[j]>=oh:
114                  ukor=kor
115                  nyertesek.append(j+1)
116          if ukor!=0:
117              break
118  
119      print('Nyertesek:',end=' ')
120      for i in range(len(nyertesek)):
121          print(nyertesek[i],end=' ')
122      print('\nA többiek pozíciója:')
123      for i in range(jsz):
124          if i+1 not in nyertesek:
125              print(f'{i+1}. játékos, {szum[i]}. mező')
126  
127  # ---------------------------------------------------------------------
128  F1()
129  F2()
130  F3()
131  F4()
132  F5()
133  F6()
134  F7()
135  F8()