Egy társaságban többen vannak, akik különböző helyekről ismerik egymást, de vannak szép számmal olyanok is, akik még sohasem találkoztak. Az ismeretségek kölcsönösek.

Zoltán nagyon érdeklődik a gráfok iránt, ezért gyorsan feltérképezi a társaságot az ismeretségek alapján. Egy papírra feljegyzi az egymást ismerők monogramját (pl. KP NZ JJ SA …).

A leírásban párok fordulnak elő, tehát KP és NZ ismeri egymást, JJ és SA is ismeri egymást. A monogramok minden esetben az angol ABC két nagybetűjéből állnak, és nincs két azonos monogrammal jelölt személy. Minden ismeretség csak egyszer kerül feljegyzésre, és teljesen véletlenszerű, hogy melyik fél szerepel azon elsőként vagy másodikként.

Zoltán később több kérdést is megfogalmazott, amely az ismeretségekre vonatkozik. Mivel a társaság elég nagy, ezért úgy gondolta, hogy a kérdésekre előbb választ kaphat, ha számítógépes programot készít. Segítsünk neki, oldjuk meg a következő feladatokat, a kiírás a minta alapján történjen.

  1. A párok monogramjai a parok.txt szöveges állomány egy sorában vannak egy-egy szóközzel elválasztva, legföljebb 500 monogram, azaz 250 ismeretség. Olvassuk be és tároljuk el a további feldolgozáshoz a monogramokat és az ismertségeket.
  2. Adjuk meg, hogy hány személy szerepel az állományban.
  3. Adjuk meg, hogy melyik személynek van a legtöbb ismerőse a társaságban. Ha több ilyen személy van, akkor elegendő az egyiket megadni: írjuk ki a monogramját és ismerőseinek számát.
  4. Kérjük be egy személy monogramját, és adjuk meg a monogramjaik ABC-sorrendjében az ismerőseit.
  5. Kérjük be egy másik személy monogramját, és adjuk meg, hogy hány közös ismerőse van az előző feladatban bekért személlyel.
  6. Határozzuk meg, hogy kik azok, akik nem ismerik az előbb bekért személyt és annak egyetlen ismerősét sem. Az eredményt írd ki egy szövegfájlba, aminek a fájlneve az 5. feladatban bekért személy, vagyis ha pl. FR volt a bekért személy, akkor txt a fájl neve.

Letöltés: parok.txt

 

Minta:

1. feladat
A parok.txt állományt beolvastam.

 

2. feladat
Az állományban 193 személy szerepel.

 

3. feladat
A legtöbb ismerőse MH személynek van, szám szerint 11

 

4. feladat
Adja meg egy személy monogramját: CV
CV ismerősei: FR HG KM OG QP TM VE

 

5. feladat
Kérem adja meg egy másik személy azonosítóját: HG
CV és HG közös ismerőseinek a száma 2

 

6. feladat
HG.txt fájl elkészült.

 

A HG.txt mintája

LE US VL XH VO FQ CG PM DD SA BZ MV …

 

 

Megoldás

# 1. feladat
with open('parok.txt') as fajl:
     forras = fajl.read().splitlines()[0].split(' ')
# a forras listában egyenként vannak az emberek
adatok = [forras[i:i+2] for i in range(0,len(forras),2)]
print('1. feladat\nA parok.txt állományt beolvastam.')

# 2. feladat
print('\n2. feladat\nAz állományban',len(set(forras)),'személy szerepel.')

# Mivel többször előfordul az ismerősök kutatása, érdemes készíteni egy függvényt
# ismerosok() bemenete: kinek az ismerőse, kimenete: az ismerősök listája, mindenki csak egyszer
def ismerosok(kinek):
     ismeretsegek = []
     for adat in adatok:
          if adat[0]==kinek:
               ismeretsegek.append(adat[1])
          if adat[1]==kinek:
               ismeretsegek.append(adat[0])
     ismeretsegek = list(set(ismeretsegek))
     return ismeretsegek

# 3. feladat
max_ismerettseg, max_ember = 0, ''
for ember in set(forras):
     lista = ismerosok(ember)
     if len(lista) > max_ismerettseg:
          max_ismerettseg = len(lista)
          max_ember = ember
print('\n3. feladat\nA legtöbb ismerőse',max_ember,'személynek van, szám szerint',max_ismerettseg)

# 4. feladat
print('\n4.feladat')
szemely = input('Adja meg egy személy monogramját: ')
lista1 = ismerosok(szemely)
print(szemely,'ismerősei:',' '.join(sorted(lista1)))
#print(lista1)

# 5. feladat
print('\n5.feladat')
szemely1 = input('Kérem adja meg egy másik személy azonosítóját: ')
ism1 = ismerosok(szemely1)
#print(ism1)
kozos = []
for ember in ism1:
     if ember in lista1:
          kozos.append(ember)
#print(kozos)
print(szemely,'és',szemely1,'közös ismerőseinek a száma',len(kozos))

# 6. feladat
# lista1-ben vannak az előbb bekért személy ismerősei; bővíteni kell az ismerősök ismerőseivel
lista2 = [ember for ember in ism1] # ebbe gyűjtjük az ismerősöket és az ismerősök ismerőseit
for ember in ism1: # összegyűjtjük az ismerősök ismerőseit
     lista2.extend(ismerosok(ember))
lista2 = set(lista2) # hátha van benne ismétlődés…
nem_ismeros = set([ember for ember in forras if ember not in lista2])
fajl = open(szemely1+'.txt','w')
print(' '.join(nem_ismeros),file=fajl)
fajl.close()
print('\n6. feladat\n'+szemely1+'.txt fájl elkészült.')

 

News Reporter
situs bandar togel terbesar terpercaya nama 10 situs togel terpercaya situs totoslot hoki gacor 4d situs bandar togel macau terpercaya toto slot hoki gacor 4d situs totoslot gacor 4d bandar togel resmi terbesar situs toto togel 4d terpercaya situs toto togel macau 4d hadiah 10 juta terbesar situs tototogel totoslot hadiah macau 10 juta toto slot 4d hoki gacor situs toto slot gacor hoki 4d situs togel 4d toto slot 4d toto togel 4d demo akun slot pragmatic gacor 2022 https://hoteles.udg.mx/clubdeportivo/wp-includes/ situs tototogel 4d bandar macau terpercaya slot hoki gacor 4d Daftar Situs Toto Slot Hoki Gacor 4D Deposit Pulsa 10RB SITUS TOTO SLOT HOKI GACOR 4D Deposit Pulsa Dana 10rb situs bandar togel hadiah 4d 10 juta terbesar terpercaya 10 situs bandar togel hadiah 4d terbesar resmi http://adn.fcm.uncu.edu.ar/plugins/ TOTO SLOT 4D > Daftar Situs Judi Slot Online Hoki Gacor Terpercaya Deposit Dana situs tototogel 4d rdtoto https://udc.go.ug/toto-togel https://sfmu.edu.bd/wp-includes situs tototogel 4d situs slot toto hoki gacor 4d situs toto slot hoki gacor 4d Daftar Situs Toto Slot Hoki Gacor 4D Deposit Pulsa 10rb Tanpa Potongan Situs Toto Togel 4D Terpercaya Bandar Toto Slot Hadiah Terbesar Resmi 2022 TOTOTOGEL > Daftar Situs Toto Togel Toto Slot 4D Gacor Hadiah 10 Juta Bandar Macau Bet 100 Perak TOTOTOGEL > Daftar Situs Toto Togel Toto Slot 4D Gacor Hadiah 10 Juta Bandar Macau Bet 100 Perak Situs Slot Joker123 TOTO SLOT GACOR 4D Terpercaya Gampang Menang Maxwin JOKER123 > Daftar Situs Toto Slot Hoki Gacor 4D Gampang Maxwin 2022 Situs Toto Slot Gacor 4D Judi Slot Joker123 Terpercaya Gampang Menang Maxwin Situs Toto Slot Joker123 Deposit Pulsa 10rb Tanpa Potongan Resmi Terpercaya JOKER123 > Daftar Situs Judi Toto Slot Gacor 4D Deposit Pulsa 10rb JOKER123 Situs Toto Slot Hoki Gacor 4D Deposit Pulsa 10rb TOTO SLOT > Daftar Situs Judi Slot Joker123 Terpercaya Gacor Deposit Pulsa 10RB TOTO TOGEL TOTO SLOT Hoki Gacor 4D Situs Resmi Terpercaya TOTOTOGEL Daftar Situs Toto Slot Hoki Gacor 4D Bandar Hadiah Terbesar Resmi Terpercaya TOTO TOGEL 4D > Situs Bandar Togel Resmi Hadiah 10 Juta Resmi Terpercaya https://class.cjps.ntpc.edu.tw/storage/totoslot/index.php TOTO SLOT 4D > Daftar Situs Judi Hoki SLot Gacor 4D Resmi Gampang Maxwin Daftar Situs Toto Togel 4D Bandar Togel Hadiah 10 Juta Resmi Terpercaya Terbesar TOTOSLOT > Daftar Situs Slot Toto Hoki Gacor 4D Resmi Terpercaya 2022 TOTOSLOT > Daftar Situs Slot Toto Hoki Gacor 4D Resmi Terpercaya 2022 TOTOSLOT > Daftar Situs Slot Toto Hoki Gacor 4D Resmi Terpercaya 2022 Daftar SItus Slot Toto Gacor 4D Hoki Deposit Pulsa Dana 10rb TOTO SLOT HOKI GACOR 4D > Daftar Situs Judi Slot Online Gacor 2022 Terpercaya HOKI SLOT GACOR 4D > Situs Toto Slot Gacor Terpercaya Resmi 2022 SITUS TOTO SLOT HOKI GACOR 4D DEPOSIT PULSA 10RB TANPA POTONGAN situs slot deposit pulsa 10rb tanpa potongan
Situs Toto Slot Hoki Gacor 4D 2022 Gampang Menang Maxwin situs nexus slot hoki gacor 4d slot4d gacor deposit pulsa 10rb tanpa potongan nexus slot 4d situs slot deposit dana tanpa potongan resmi 2022 situs slot deposit dana pulsa tanpa potongan 10rb situs slot deposit dana pulsa tanpa potongan 10rb situs bandar togel terbesar terpercaya situs bandar togel terbesar terpercaya situs bandar togel terbesar terpercaya