Metszet

Mostantól olyan programozási tételekkel foglalkozunk, amelyek legalább két sorozathoz rendelnek egyet.

Metszet nem más mint két halmaz közös része, ha még emléxel rá matekból. Fontos, hogy halmazé, és nem listáé. Először mégis lista adattípussal oldjuk meg a metszetkészítés szép feladatát.

Vegyünk két listát: lista1 = [1, 2, 3, 4, 5], lista2 = [6, 4, 2, 0]. A metszetük: lista3 = [2, 4]. Hogy is kell ezt megcsinálni?

  • vegyük sorra lista1 elemeit
  • nézzük meg, hogy az adott elem benne van-e lista2-ben
  • amelyik igen, azt írjuk be lista3-ba, ha eddig még nem volt benne

A második pötty ugyebár egy eldöntés, azaz ilyen értelemben a metszet nem más, mint sok elemre alkalmazott eldöntés tétel.

Lényegében meg is vagyunk a tétellel, de azért nem ússzuk meg ilyen gyorsan. Az imént azt mondtam, hogy a metszetképzés valójában halmazokra értelmezett, úgyhogy ez remek alkalom arra, hogy megismerkedjünk a második gyűteményes adattípusunkkal: a halmazzal.

A halmaz adattípus és a metszetkészítés tétele

Amit a videó után tudunk a halmaz adattípusról:

  • elemei kapcsos zárójelek közé kerülnek, a programban csakúgy, mint ha az egéz halmazt kiíratjuk egy print()-tel
  • létrehozható a set() paranccsal
  • ha létrehozáskor megadjuk az elemeit, akkor létrehozható a halmaz = {1, 2, 3, 4} paranccsal, de nem lehet üres halmazt létrehozni a halmaz = {} paranccsal, mer az szótárat (dict) hoz létre – ez egy másik gyűjteményes adattípus
  • a halmazok bejárhatóak, csakúgy mint a lsiták
  • bennük az elemek sorrendje véletlenszerű
  • egy elem csak egyszer lehet bennük
  • így aztán jók arra, hogy listából kiszedjük a többször előforduló elemeket
  • lehet belőlük metszetet (&), uniót(|), különbséget(-) és szimmetrikus differenciát(^) képezni

Feladatok

F0037a: Vágd be a metszetkészítés tételét!

F0037b: A cikk elején van egy “hárompöttyös” megoldás két lista metszetének elkészítésére. Írj belőle kódot! (Megoldás itt.)

F0037c: A budapesti 105-ös busz megállói a következők: Apor Vilmos tér, Kiss János altábornagy utca, Nagy Jenő utca, Márvány utca, Királyhágó utca, Győri út, Ág utca, Krisztina tér, Clark Ádám tér, Széchenyi István tér, József nádor tér, Deák Ferenc tér, Bajcsy-Zsilinszky út, Opera, Oktogon, Vörösmarty utca, Kodály körönd, Bajza utca, Hősök tere, Vágány utca, Lehel utca, Hun utca, Lehel utca – Róbert Károly krt., Béke tér, Frangepán utca, Fiastyúk utca, Násznagy utca, József Attila tér, Cziffra György park, Gyöngyösi utca. A 102-es buszé pedig: Széll Kálmán tér, Maros utca, Maros utcai rendelőintézet, Déli pályaudvar, Kék Golyó utca, Királyhágó tér, Kiss János altábornagy utca, Apor Vilmos tér, Németvölgyi út. Hány olyan megálló van, ahol az egyikről átszállhatunk a másikra? (Megoldás itt.)

F0037d: A www.sttmedia.com oldal szerint az angol nyelvben a 10 leggyakrabban használt betű: E T A O N I S H R L, ugyanez a németre: E N I R S T A H D U, a franciára E A S T I R N U L O. Írd ki azokat a betűket, amelyek mindháromban nyelvben az első tízben vannak! (Megoldás itt.)

Múltkorjában rendeztünk. Legközelebb uniózunk.

Reklámok

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s