Informatika2-2018/Gyakorlat3
(→Fő) |
|||
(egy szerkesztő 5 közbeeső változata nincs mutatva) | |||
9. sor: | 9. sor: | ||
Írjunk függvényt, mely a kapott valós számokat tartalmazó listában megkeresi a lista elemeinek átlagához legközelebbi számot és ezzel tér vissza. | Írjunk függvényt, mely a kapott valós számokat tartalmazó listában megkeresi a lista elemeinek átlagához legközelebbi számot és ezzel tér vissza. | ||
− | === | + | === ''n'' hosszú növekvő részek === |
Írjunk függvényt, mely kap egy listát és egy egész számot (n). Megkeresi az összes olyan n hosszú részintervallumot, amire igaz, hogy az elemei növekvő sorrendben vannak. Ezeket a listákat beteszi egy fő listába és ezt adja vissza. Segítség: bontsuk részfeladatokra! | Írjunk függvényt, mely kap egy listát és egy egész számot (n). Megkeresi az összes olyan n hosszú részintervallumot, amire igaz, hogy az elemei növekvő sorrendben vannak. Ezeket a listákat beteszi egy fő listába és ezt adja vissza. Segítség: bontsuk részfeladatokra! | ||
== Fő == | == Fő == | ||
+ | === Névkonfliktus === | ||
+ | Egy házibuliban sok új ismeretlen emberrel találkozunk, ezért felírjuk a neveiket egy listába. Ha két új ismerősünket is ugyanúgy hívják, abból probléma lehet, ezért szeretnénk egy <tt>python</tt> függvényt, ami szól ilyen esetben. | ||
− | == | + | A függvény neve legyen <code>nevkonfliktus</code>, és egy paramétere legyen: |
+ | * ''nevek'', egy lista, amiben a buliban levő emberek beceneve szerepel. | ||
+ | * A függvény <tt>True</tt>-val térjen vissza ha van két ember akinek ugyanaz a beceneve, és <tt>False</tt>-al egyébként. | ||
+ | |||
+ | '''Segítség:''' | ||
+ | |||
+ | Vigyázzunk, hogy akkor ne jelezzünk ha valakinek önmagával ugyanaz a neve (ami mindenkire igaz), hanem csak akkor ha két különböző embernek ugyanaz a neve. | ||
+ | |||
+ | === Kiejtés === | ||
+ | A föld bizonyos nyelvei a magyarok számára elég nehezen beszélhetőek, például azért, mert az ő szavaikban sokkal több a mássalhangzó mint a mienkben. Magyarok számára például nehéz lehet kiejteni a szlovák ''zmrzlina'' szót, ami magyarul azt jelenti hogy ''fagylalt''. | ||
+ | |||
+ | Írjunk <tt>python</tt> függvényt, ami megpróbálja megállapítani hogy egy szót nehéz-e kiejteni, a benne levő mássalhangzók száma alapján. | ||
+ | * A függvény neve legyen <tt>kiejtes</tt>, | ||
+ | * egy paramétere legyen: ''szo'', egy idegen nyelvű szó. Az egyszerűség kedvéért az itt leírt változat csak angol kis betűket fog tartalmazni. | ||
+ | * A függvény <tt>True</tt>-val térjen vissza, ha legalább kétszer annyi mássalhangzó van a szóban mint magánhangzó, és <tt>False</tt>-al egyébként. A lehetséges betűk közül az ''a, e, i, o, u'' számít magánhangzónak. | ||
+ | |||
+ | === Fogások === | ||
+ | A diétánk szigorúan meghatározza hogy hány kalóriás ebédet kell fogyasztanunk, így kicsit gondban vagyunk amikor étteremben eszünk és nem magunknak állítjuk össze az ételt. Szerencsére az étlapon mindenhez oda van írva a kalóriaértéke, így egy kicsit könnyebb a dolgunk. Azonban még mindig ki kell választanunk a megfelelő első és második fogást ami megfelel a diétánknak. | ||
+ | |||
+ | A függvény neve legyen <tt>fogasok</tt>, és három paramétere legyen: | ||
+ | * ''kaloria'', egy természetes szám, hogy hány kalóriát kell fogyasztanunk | ||
+ | * ''elso'', egy lista, amiben a különböző lehetséges első fogások kalóriaértéke van, tehát természetes számokat tartalmaz | ||
+ | * ''masodik'', szintén egy lista, ami a második fogások kalóriaértékét tartalmazza. | ||
+ | * A függvény <tt>True</tt>-val vagy <tt>False</tt>-al térjen vissza attól függően, hogy lehet-e olyan első és második fogást választani amelyek összege pontosan a ''kaloria''. | ||
+ | |||
+ | === Pascal === | ||
+ | A Pascal-háromszög a binomiális együtthatók háromszög formában való elrendezése. Részletes leírás található pl. a magyar [https://hu.wikipedia.org/wiki/Pascal-h%C3%A1romsz%C3%B6g wikipédián]. | ||
+ | A lényeg az, hogy az ''n.'' sor ''k.'' eleme az az ''"n alatt a k"'' binomiális együttható, és minden elem a felette levő kettő összege. | ||
+ | Írjuk meg a <tt>pascal</tt> nevű függvényt, ami visszaadja a Pascal-háromszög első néhány sorát listák listájaként. A függvény paramétere: | ||
+ | * ''n'', hogy hány sort számoljunk ki | ||
+ | |||
+ | Így tehát pl. <tt>pascal(4)</tt>-nek a következőt kell visszaadnia: | ||
+ | |||
+ | [[1], | ||
+ | [1, 1], | ||
+ | [1, 2, 1], | ||
+ | [1, 3, 3, 1]] | ||
+ | |||
+ | Az elemek kiszámolásához ne a binomiális együttható általános (faktoriálisos) képletét használjuk, hanem azt, hogy a felette levő két elem összege! | ||
+ | |||
+ | === Cserebere === | ||
+ | A bemenetünk egyrészt egy szó a ''szo'' nevű változóban, másrészt cserék egy sorozata, amit végre kell hajtani a szón, a ''cserek'' nevű változóban. | ||
+ | Így ''szo'' egy karakterlánc, ''cserek'' pedig egy lista, melynek minden eleme egy pár, ami a csere helyét, és az új betűt tartalmazza. | ||
+ | |||
+ | Ezeket a cseréket kell elvégezni a ''szo''-n és az így kapott sztringet visszaadni. | ||
+ | |||
+ | === Név generátor === | ||
+ | Egy olyan számítógépes játékon dolgozunk, amiben rendszeresen találkozunk más, a számítógép által megszemélyesített, karakterekkel. | ||
+ | Ezeknek a karaktereknek számítógép véletlenszerűen választ nevet, azonban szeretnénk elkerülni hogy ugyanazt a nevet sokszor lássa a játékos. | ||
+ | Ezért ahelyett hogy egy listányi nevet megadtunk volna a játék készítésekor, inkább külön-külön egy listányi előtagot és utótagot adtunk meg, hogy ezekből rakja össze a karakterek neveit. | ||
+ | |||
+ | Írjuk meg a függvényt, ami az összes lehetséges nevet összerakja az adott elő és utótagok listája alapján. | ||
+ | * A függvény neve legyen <tt>nev_generator</tt>, és két paramétere legyen | ||
+ | * ''elotagok'', egy lista, amiben az előtagok szerepelnek karakterláncokként | ||
+ | * ''utotagok'', egy lista, amiben az utótagok vannak hasonlóan. | ||
+ | * A adja vissza az összes lehetséges összerakott nevet egy listában. | ||
+ | |||
+ | == Záró == | ||
[https://ccweb.math.bme.hu/cloudcoder cloudcoder]-en a feladatok ajánlott sorrendje: | [https://ccweb.math.bme.hu/cloudcoder cloudcoder]-en a feladatok ajánlott sorrendje: | ||
A lap jelenlegi, 2018. február 21., 10:34-kori változata
Tartalomjegyzék |
Feladatok
Kezdő
Átlaghoz legközelebbi
Írjunk függvényt, mely a kapott valós számokat tartalmazó listában megkeresi a lista elemeinek átlagához legközelebbi számot és ezzel tér vissza.
n hosszú növekvő részek
Írjunk függvényt, mely kap egy listát és egy egész számot (n). Megkeresi az összes olyan n hosszú részintervallumot, amire igaz, hogy az elemei növekvő sorrendben vannak. Ezeket a listákat beteszi egy fő listába és ezt adja vissza. Segítség: bontsuk részfeladatokra!
Fő
Névkonfliktus
Egy házibuliban sok új ismeretlen emberrel találkozunk, ezért felírjuk a neveiket egy listába. Ha két új ismerősünket is ugyanúgy hívják, abból probléma lehet, ezért szeretnénk egy python függvényt, ami szól ilyen esetben.
A függvény neve legyen nevkonfliktus
, és egy paramétere legyen:
- nevek, egy lista, amiben a buliban levő emberek beceneve szerepel.
- A függvény True-val térjen vissza ha van két ember akinek ugyanaz a beceneve, és False-al egyébként.
Segítség:
Vigyázzunk, hogy akkor ne jelezzünk ha valakinek önmagával ugyanaz a neve (ami mindenkire igaz), hanem csak akkor ha két különböző embernek ugyanaz a neve.
Kiejtés
A föld bizonyos nyelvei a magyarok számára elég nehezen beszélhetőek, például azért, mert az ő szavaikban sokkal több a mássalhangzó mint a mienkben. Magyarok számára például nehéz lehet kiejteni a szlovák zmrzlina szót, ami magyarul azt jelenti hogy fagylalt.
Írjunk python függvényt, ami megpróbálja megállapítani hogy egy szót nehéz-e kiejteni, a benne levő mássalhangzók száma alapján.
- A függvény neve legyen kiejtes,
- egy paramétere legyen: szo, egy idegen nyelvű szó. Az egyszerűség kedvéért az itt leírt változat csak angol kis betűket fog tartalmazni.
- A függvény True-val térjen vissza, ha legalább kétszer annyi mássalhangzó van a szóban mint magánhangzó, és False-al egyébként. A lehetséges betűk közül az a, e, i, o, u számít magánhangzónak.
Fogások
A diétánk szigorúan meghatározza hogy hány kalóriás ebédet kell fogyasztanunk, így kicsit gondban vagyunk amikor étteremben eszünk és nem magunknak állítjuk össze az ételt. Szerencsére az étlapon mindenhez oda van írva a kalóriaértéke, így egy kicsit könnyebb a dolgunk. Azonban még mindig ki kell választanunk a megfelelő első és második fogást ami megfelel a diétánknak.
A függvény neve legyen fogasok, és három paramétere legyen:
- kaloria, egy természetes szám, hogy hány kalóriát kell fogyasztanunk
- elso, egy lista, amiben a különböző lehetséges első fogások kalóriaértéke van, tehát természetes számokat tartalmaz
- masodik, szintén egy lista, ami a második fogások kalóriaértékét tartalmazza.
- A függvény True-val vagy False-al térjen vissza attól függően, hogy lehet-e olyan első és második fogást választani amelyek összege pontosan a kaloria.
Pascal
A Pascal-háromszög a binomiális együtthatók háromszög formában való elrendezése. Részletes leírás található pl. a magyar wikipédián. A lényeg az, hogy az n. sor k. eleme az az "n alatt a k" binomiális együttható, és minden elem a felette levő kettő összege. Írjuk meg a pascal nevű függvényt, ami visszaadja a Pascal-háromszög első néhány sorát listák listájaként. A függvény paramétere:
- n, hogy hány sort számoljunk ki
Így tehát pl. pascal(4)-nek a következőt kell visszaadnia:
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]]
Az elemek kiszámolásához ne a binomiális együttható általános (faktoriálisos) képletét használjuk, hanem azt, hogy a felette levő két elem összege!
Cserebere
A bemenetünk egyrészt egy szó a szo nevű változóban, másrészt cserék egy sorozata, amit végre kell hajtani a szón, a cserek nevű változóban. Így szo egy karakterlánc, cserek pedig egy lista, melynek minden eleme egy pár, ami a csere helyét, és az új betűt tartalmazza.
Ezeket a cseréket kell elvégezni a szo-n és az így kapott sztringet visszaadni.
Név generátor
Egy olyan számítógépes játékon dolgozunk, amiben rendszeresen találkozunk más, a számítógép által megszemélyesített, karakterekkel. Ezeknek a karaktereknek számítógép véletlenszerűen választ nevet, azonban szeretnénk elkerülni hogy ugyanazt a nevet sokszor lássa a játékos. Ezért ahelyett hogy egy listányi nevet megadtunk volna a játék készítésekor, inkább külön-külön egy listányi előtagot és utótagot adtunk meg, hogy ezekből rakja össze a karakterek neveit.
Írjuk meg a függvényt, ami az összes lehetséges nevet összerakja az adott elő és utótagok listája alapján.
- A függvény neve legyen nev_generator, és két paramétere legyen
- elotagok, egy lista, amiben az előtagok szerepelnek karakterláncokként
- utotagok, egy lista, amiben az utótagok vannak hasonlóan.
- A adja vissza az összes lehetséges összerakott nevet egy listában.
Záró
cloudcoder-en a feladatok ajánlott sorrendje:
- nevkonfliktus
- ismetles
- kiejtes
- szorzotabla
- fogasok
- pascal
- cserebere
- nev_generator