Info 2 ötödik házi feladat: "minimum", legolcsóbb termék kiválasztása

Utolsó módosítás: 2009. április 16.

Ez a program a vásárlásban fog segíteni. A program bemenete megadja egy sor termék árát négy különböző boltban. A kimenetben meg kell mondani, melyik terméket melyik boltban a legolcsóbb megvenni.

A bemenet első sora a négy különböző üzlet nevét adja meg. Minden további sor első szava a termék neve, a következő négy szó az egyes termékek ára a négy üzletben. Egy lehetséges bemenet például a következő (letöltés: hfabe0).

          piac    cba     spar   tesco   
liszt     140     140     130    120
kenyér    190     210     210    230
parizer   900     1500    1400   1200
margarin  200     220     135    180

Az árak legfeljebb hatjegyű pozitív egészek, forintban értendők. A sorokban az egyes szavak akárhány üreshely karakterrel el lehetnek választva. Az egyszerűség kedvéért feltesszük, hogy minden terméket mind a négy boltban meg lehet kapni, és ezek felcserélhetőek, vagyis az áron kívül másban nem különböznek. A termékek számát nem adom meg előre, a programnak a bemenet végéig kell olvasni a sorokat.

A program kimenetében minden termékhez egy-egy sor tartozik, ugyanolyan sorrendben, mint a bemenetben. Minden sor két szóból áll, az első szó a termék neve, a második szó annak az üzletnek a neve, ahol a termék ára a legalacsonyabb. (Ha több ilyen üzlet van, ahol ugyanannyiba kerül az adott termék, akkor ezek közül bármelyiket kiírhatja, de csak egyet írjon ki.)

Például a fenti bemenet esetén a kimenet a következő lesz (letöltés: hfaki0).

liszt tesco
kenyér piac
parizer piac
margarin spar

Tehát a lisztet a Tesco áruházban érdemes megvenni, mert ott 120 forintba kerül egy kiló, de a kenyeret a piacon.

A programot ruby nyelven írja meg. A bemenetet a standard bemenetről olvassa be, vagyis például ha a forráskódot a hfa.rb nevű fájlba mentette el, és letöltötte a fenti bemenetet, akkor a ruby -w hfa.rb < hfabe0 parancs a fenti kimenetet írja ki.

Segítségként azt javaslom, hogy a bemenet sorait a gets függvénnyel olvassa be, majd a .split metódussal szedje szét az egyes szavakat tartalmazó tömbbé. Egy számot leíró sztringből, mint például "42" az Integer függvénnyel olvassa ki a számot, pl. Integer("42") eredménye a 42 szám. Ha elakad a programmal, akkor a p függvénnyel írassa ki a változók tartalmát.

A megoldást e-mailben küldje el az ambrus@@mmaatthh..bbmmee..hhuu (a dupla karaktereket csak egyszer kell beírni) címre. Az emailben csatolmányként küldje el a megoldáshoz használt forráskódot, és írhat bármilyen megjegyzéseket, amit a megoldással kapcsolatban lényegesnek talál. Az emailben feltétlenül adja meg a nevét, nem szeretnék névtelen házi feladatokat azonosítani. Írja továbbá az emailbe az "info2" szöveget, valamint a feladat rövid nevét, jelen esetben azt, hogy "minimum", hogy könnyebben szét tudjam válogatni a feladatokat.

Ha a feladathoz bármilyen kérdése van, vagy elakad a megoldással, akkor keressen meg emailben vagy személyesen, akár a gyakorlaton, akár azon kívül.

A feladatot 2009. április 16-án illetve 17-én tűzom ki. A megoldás határideje ehhez képest két hét, május 4., hétfő (aznap még be lehet küldeni; a két hét május 1-én járna le, de az munkaszüneti nap).