|
|
1. sor: |
1. sor: |
− | Írj Sage függvényt, ''max_szomszed'' néven. A bemenete egy lista, a kimenete egy szótár, mely tartalmazza minden a listában elõforduló elemhez (mint kulcshoz) a szomszédainak maximális összegét. Az elsõ és utolsó elemét a listának hagyjuk figyelmen kívül, tehát csak az 1-tõl a lista hossz-1-ig kell vizsgálnunk az elemeket.
| + | Í |
− | | + | |
− | Például, a [3,2,2,3,2,5,3,3,2,2,5,2,5,2] bemenetre a {2: 10, 3: 8, 5: 5} szótárat kapjuk, mivel a 2-es szerepel 2 darab 5-ös között az utolsó elõtti elõtti helyen, a 3-as szerepel 1 darab 5-ös és 1 darab 3-as között a közepe felé, és az 5-ös legnagyobb szomszédianak az összege is csak 5 (ez is a közepe felé).
| + | |
− | | + | |
− | Ha máshogy nem megy, akkor feltételezhetjük hogy a listában csak nemnegatív elemek vannak.
| + | |
− | | + | |
− | | + | |
− | A házit most .sws (Sage worksheet) formátumban kérjük. (A Worksheet-ed tetején bal oldalt a 'File...' menüben 'Save worksheet to a file...', és persze T<tankör>_HF3_<userneved>.sws legyen a levélhez csatolt file neve.)
| + | |
− | | + | |
− | | + | |
− | | + | |
− | Segítség:
| + | |
− | * for ciklusban használjátok a range függvényt, hogy a lista indexein tudjatok végigmenni
| + | |
− | * hasznos lehet a len függvény
| + | |
− | * üres szótárat a következõ módon definiálhattok: d = {}
| + | |
− | * az i. indexû elemét az L listának L[i]-vel érjük el, a szomszédai az i-1. és i+1. indexû elemek
| + | |
− | * két ötlet a szótár 0-kal való feltöltésére (ekkor már csak nemnegatív elemekre lesz jó a függvény):
| + | |
− | ** for ciklus fusson a lista megfelelõ elemein, és a szótár megfelelõ kulcshoz tartozó értékét állítsuk 0-ra
| + | |
− | ** használjuk ki, hogy a halmazban nincsenek ismételt elemek, és rajta is végig lehet menni for ciklussal
| + | |