Informatika1-2010/Hazi5

A MathWikiből
A lap korábbi változatát látod, amilyen Ambrus (vitalap | szerkesztései) 2010. december 12., 17:52-kor történt szerkesztése után volt.
(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

Informatika 1, 2010 ősz, 5. házi feladat: hármasával

Ez a házi feladat a 5. gyakorlathoz tartozik. Beadandó az 6. gyakorlatig, vagyis október 22., 26., 27-ig. A megoldást az info1hazi kukac gmail.com címre kell elküldeni, a tárgyban a tankörrel, a feladat sorszámával (HF5), és a matematikai intézeti szerveren használt felhasználói nevével.

Olyan Sage függvényt kell írnia, amely egy számokból álló listát három hosszú blokkokra bont, kiszámolja minden egyes blokk szorzatát, és ezekből a szorzatokból épít egy új listát. A bemenet hossza mindig hárommal osztható, a kimenet hossza pedig a bemenet hosszának a harmada.

Ha például a bemenet [69, 7, 8, 28, 18, 92, 61, 41, 24, 9, 72, 56], akkor az első blokk a [69, 7, 8], a második blokk a [28, 18, 92], a harmadik blokk a [61, 41, 24], stb, így a kimenet [3864, 46368, 60024, 36288], mivel 3864 = 69·7·8, 46368 = 28·18·92.

Így tehát a harmasaval([69, 7, 8, 28, 18, 92, 61, 41, 24, 9, 72, 56]) eredménye legyen [3864, 46368, 60024, 36288], és másik példaként a

   harmasaval([64, 70, 22, 78, 88, 100, 36, 49, 53, 70, 53, 85, 35, 87, 18, 72, 99, 74, 30, 99, 19, 72, 10, 100, 59, 9, 99, 80, 27, 56, 42, 71, 94, 51, 64, 47, 12, 23, 9, 30, 13, 91, 71, 61, 18, 5, 4, 60]) 

eredménye legyen

   [98560, 686400, 93492, 315350, 54810, 527472, 56430, 72000, 52569, 120960, 280308, 153408, 2484, 35490, 77958, 1200]

Mintamegoldás

       def harmasaval(s):
           r = []
           for k in range(len(s)/3):
               r.append(s[3*k] * s[3*k+1] * s[3*k+2])
           return r
Személyes eszközök