[Mat08] ezt a hétfői infócsoportnak szól , Barna küldi
Podonyi Aniko
podonyia at math.bme.hu
2008. Okt. 13., H, 21:03:25 CEST
Szia!
igen, így nem lehet leröviditeni az egyenlõséget. Sajnos muszáj kiírni,
hogy l[i] mod 7=3 or l[i] mod 7=4,
mert a megoldásodban két számot hasonítottál össze logikailag, majd ezt a
true/false/fail értéket hasonlítod össze, hogy egyenlõ-e egy 0 és 7 közötti
számmal...
A for-os próbálkozással magadat szivattad csak, és jellemzõen - a jobb
programoknál/gépeknél legalábbis -
a for-os megoldás lassabb, mert pl. nem futtatható párhuzamosan.
Ha magyar mondatban olyat látsz, hogy válasszuk ki, akkor az biztos, hogy
select lesz,
a csináljunk ilyen vagy olyan sorozatot, az -majdnem- tuti map, kivéve, ha
olyan függvény kell, ami csak
kiválasztós logikával mûködik, pl. 1-tõl százig a prímek
=select(isprime,[$1..100]). Bár ebben a prímes példában a
selectre az utal, hogy nem tudod elõre, milyen hosszú listát fogsz kapni,
ha map-pel meg lehet oldani egy (rész)feladatot, akkor mindenképpen elõre kell
tudnod, milyen hosszú listát kell kapnod.
Persze olyan is van, h tudjuk a lista hosszát, mégsem lehet használni a
map-et - ilyenkor általában a select sem megy :D
erre példa: az elsõ száz prímszámmal csináljunk ezt vagy azt. Mivel asszem
nincs olyan beépített függvény, ami rögtön az n-edik prímet adja, a map nem
mûködik, és a select azért nem, mert ott meg honnan tudnánk, [$1..?] ? helyére
mennyit kell írni ahhoz, hogy pont az elsõ száz prímet kapjuk vissza, listában.
Na ilyenkor lehet erõlködni (pl. van egy foldl nevû eljárás, amit érdemes
tanulmányozni... (foldl((p,k)->[op(p),nextprime(p[-1])],[0],$1..100)[2..-1]; -
szedjétek darabokra a parancsokat és értelmezzétek) ),
vagy most jöhet a for. :S :)
Küldd át lszi a levlistátokra a hétfõi csoportnak címezve! Kösz Barna
2008/10/13 László Árokszállási <aroklaci at gmail.com>
l:=[5,11,3];
for i to 3 do
if l[i] mod7=(3 or 4) then l(op(l) l2=
for i to nops(l) do if l[i] mod 7=3 or l[i] mod 7=4 then l2:=[op(l2),l[i]]
fi; od; #nem látszik elsõre, mirõl szól a program...
select(x->x mod 7=3 or x mod 7 = 4, l);
ja, és egyébként ez a feladat a wiki.math.bme.hu informatika gyakorlat
példái között meg van oldva...
szal mielõtt jöttök, érdemes megnézegetni az ottani új infókat.
More information about the Mat08
mailing list