Első megoldás[]
Tesztelve a 3..6.1 verzióban.
# -*- coding: utf-8 -*-
"""
A 2018. tavaszi Társalgó feladat megoldása klasszikus, "iskolás" módon
"""
def f(i):
print('%d. feladat:' % i)
# 1. feladat
inp = open('ajto.txt')
ajto = []
for line in inp.readlines():
line = line.replace('\n', '')
sor = line.split(' ')
ajto.append([int(sor[0]), int(sor[1]), int(sor[2]), sor[3]])
print('%d sor beolvasva.' % len(ajto))
f(2)
print('Az első belépő: %d' % ajto[0][2])
i = len(ajto) - 1
while i >= 0 and ajto[i][3] != 'ki':
i -= 1
if i >= 0:
print('Az utolsó kilépő: %d' % ajto[i][2])
# 3. feladat
azonositok = set()
for adat in ajto:
azonositok.add(adat[2])
lista = sorted(list(azonositok))
athaladasok = [a[2] for a in ajto]
with open('athaladas.txt', 'w') as ath:
for tag in lista:
ath.write('%d %d\n' % (tag, athaladasok.count(tag)))
f(4)
bent = []
for tag in lista:
athaladasok = [a[3] for a in ajto if a[2] == tag]
if athaladasok[-1] == 'be':
bent.append(str(tag))
print('A végén a társalgóban voltak: ' + ' '.join(bent))
f(5)
max = 0
ido = ''
akt = 0
for adat in ajto:
akt += (1 if adat[3] == 'be' else -1)
if akt > max:
max = akt
ido = '%d:%d' %(adat[0], adat[1])
print('Például %s-kor voltak a legtöbben a társalgóban.' % ido)
f(6)
ember = int(input('Adja meg a személy azonosítóját! '))
# Ez a 8. feladathoz kell
def perc(adat):
return 60 * adat[0] + adat[1]
vege = 15 * 60
# 7-8. feladat egyben
f(7)
percek = 0
for adat in ajto:
if adat[2] == ember:
if adat[3] == 'be':
bentvan = True
ido = '%d:%d-' %(adat[0], adat[1])
kezdet = perc(adat)
else:
bentvan = False
ido += '%d:%d' %(adat[0], adat[1])
print(ido)
percek += perc(adat) - kezdet
if bentvan:
print(ido)
percek += vege - kezdet
f(8)
holvan = 'a társalgóban volt' if bentvan else 'nem volt a társalgóban'
s = 'A(z) %d. személy összesen %d percet volt bent, a megfigyelés végén %s.'
print(s % (ember, percek, holvan))
Második megoldás[]
Tesztelve a 3..6.1 verzióban.
# -*- coding: utf-8 -*-
"""
A 2018. tavaszi Társalgó feladat megoldása pythonosabb, trükkösebb módon
"""
def f(i):
print('%d. feladat:' % i)
# 1. feladat
ajto = [line.replace('\n', '').split(' ') for line in open('ajto.txt').readlines()]
print('%d sor beolvasva.' % len(ajto))
f(2)
print('Az első belépő: %s' % ajto[0][2])
visszajto = ajto[::-1]
kilepok = [v[2] for v in visszajto if v[3] == 'ki']
try:
print('Az utolsó kilépő: %s' % kilepok[0])
except IndexError:
print('Senki nem jött ki élve. :-O')
# 3-4. feladat (Bent van, aki pártlanszor haladt át.)
athaladok = [a[2] for a in ajto]
bent = []
with open('athaladas.txt', 'w') as ath:
for tag in sorted(list(set(athaladok)), key = lambda x:int(x)):
ath.write('%s %d\n' % (tag, athaladok.count(tag)))
if athaladok.count(tag) % 2:
bent.append(tag)
f(4)
print('A végén a társalgóban voltak: ' + ' '.join(bent))
f(5)
idok = []
letszamok = []
for i in range(len(ajto)):
adat = ajto[i]
idok.append('%s:%s' %(adat[0], adat[1]))
eddigi = [a[3] for a in ajto[:i+1]]
letszamok.append(eddigi.count('be') - eddigi.count('ki'))
mikor = idok[letszamok.index(max(letszamok))]
print('Például %s-kor voltak a legtöbben a társalgóban.' % mikor)
f(6)
ember = input('Adja meg a személy azonosítóját! ')
# Ez a 8. feladathoz kell
def perc(adat):
return 60 * int(adat[0]) + int(adat[1])
vege = 15 * 60
# 7-8. feladat egyben
f(7)
percek = 0
emberadatai = [a for a in ajto if a[2] == ember]
for adat in emberadatai:
if adat[3] == 'be':
bentvan = True
ido = '%s:%s-' %(adat[0], adat[1])
kezdet = perc(adat)
else:
bentvan = False
ido += '%s:%s' %(adat[0], adat[1])
print(ido)
percek += perc(adat) - kezdet
if bentvan:
print(ido)
percek += vege - kezdet
# Számít a vezető 0?
f(8)
holvan = 'a társalgóban volt' if bentvan else 'nem volt a társalgóban'
s = 'A(z) %s. személy összesen %d percet volt bent, a megfigyelés végén %s.'
print(s % (ember, percek, holvan))
Érettségi feladatok programozásból |
---|
2004 Személyazonosító jel
2005 Lottó • Vigenère-tábla 2006 Telefonszámla • Fehérje • Zenei adók 2007 SMS-szavak • Foci 2008 SMS • Robot 2009 Lift • Automata • Útépítés 2010 Helyjegy • Telek • Anagramma 2011 Szójáték • Rejtvény • Pitypang 2012 Futár • Törtek • Szín-kép 2013 Választások • Számok • Közúti ellenőrzés 2014 IPv6 • Céllövészet • Nézőtér 2015 Expedíció • Latin táncok • Fej vagy írás 2016 Ötszáz • Zár • Telefonos ügyfélszolgálat 2017 Tesztverseny • Fürdő • Hiányzások 2018 Társalgó • Fogadóóra • Kerítés 2019 Céges autók • Tantárgyfelosztás • eUtazás 2020 Meteorológiai jelentés • Menetrend • Sorozatok 2021 Gödrök • Bányató |