Csavarjunk egyet a feladaton - Megoldás
Bevezető
Legutóbbi IT feladványunkban egy első ránézésre kissé bonyolultnak tűnő fiktív helyzetet mutattunk be és tettünk fel nektek 3 kérdést. A feladat láttán minden bizonnyal sokan azt gondoltátok, hogy “na ne, megint egy idétlen szöveges feladat”.
A feladattal célunk az volt, hogy valamelyest szemléltessük a programozói látás- és gondolkodásmódot. A programozói léthez ugyanis az is hozzátartozik, hogy felismerjük, hogy az adott élethelyzethez mely funkciók létrehozása a legcélszerűbb annak érdekében, hogy a szoftver valódi segítséget adjon a felhasználónak. És amíg egy leendő programozó eljut oda, hogy megkapja első valódi feladatát, addig csak “mesterséges” mintafeladatotokon keresztül tudja pallérozni elméjét.
A feladatban vázolt helyzet lehetne akár egy gyártósor és az ahhoz kapcsolódó ellátási lánc viszonyának logikailag stilizált példája: A munkadarab a “K” objektum, a belső terület a munkafolyamat, a külső terület pedig a munkához szükséges nyersanyag beszállításának bemeneti pontjai, amelyek viszonya a munkadarabhoz és a gyártási folyamathoz rendkívül fontos az optimális idő- és energiafelhasználás szempontjából. Vagyis a látszólag értelmetlen szöveges feladat valójában egy valós élethelyzetet szimulál.
Ha egy kezdő programozót “odalöknének” egy ehhez hasonló élethelyzetbe, ahol nem csak a lecsupaszított logikai feladattal kell szembesülnie, hanem a valóságban létező sokszáz talán lényeges, és szintén sokszáz teljesen lényegtelen elemmel, akkor hiába lenne meg a programozói tudása ahhoz, hogy egy ilyen helyzetre megfelelő, az optimalizálást célzó megoldást kínáljon, megfelelő gondolkodási tréning hiányában szinte biztosan nem lenne képes megtalálni a megfelelő megoldást.
És akkor jöjjön a megoldás
1.) Melyik csillaghoz lesz legközelebb K, amikor eléri x pontot?
Helyes válasz: K az 1-es csillaghoz lesz a legközelebb.
Magyarázat:
A leírásból tényként tudjuk, hogy a parancssor által K eljut x pontra. Mivel a belső terület lassan és folyamatosan forog, ezért azt kell megtudnunk a parancssorból, hogy mennyi idő alatt jut el K az x pontba. Ehhez elég összeadni a parancssorban található számokat (a betűkkel nem is kell foglalkozni).
A számok összege 40. Ebből azt tudjuk, hogy 40 időegység alatt ér el K az x pontra.
Mivel egy negyed fordulathoz (90°) 4 időegység kell, ezért azt is tudjuk, hogy 10 időegység alatt 10 db negyed fordulat történik - vagyis x pont éppen a terület “tetején” lesz, az 1-es csillag alatt, amikor K eléri az x pontot.
2.) Ha a fent leírtak szerint minden lépés és minden forduló is energiát fogyaszt, milyen (másik) parancssorral érhetjük el a három feltétel egyidejű teljesülését?
Helyes válasz: RR vagy LL
Magyarázat:
Tudjuk, hogy a belső terület forgása miatt K kezdőpontja folyamatosan mozog. Az előző kérdésre a jó válasz az 1-es csillag volt.
Meglepő lehet, de a megfelelő parancssor valójában csak annyi, hogy K-t nem is kell elindítani a kezdőpontról, mert K előbb-utóbb mindenképpen visszakerül a kezdő pozícióba, mivel a belső terület forog (ahogyan a leírásban megtaláljuk).
Viszont ezzel még csak a pozícióra vonatkozó feltételt teljesítettük, de a K-n látható nyíl még nem mutat a csillagra. Ehhez szükséges az, hogy 180°-kal elforgassuk K-t.
Ezért jó megoldás mind az “RR” vagy “LL” parancs: “Fordulj jobbra és ismét jobbra helyben” vagy “Fordulj balra és ismét balra helyben”. Majd pedig a fordulás után csak meg kell várni, hogy a kívánt feltétel teljesüljön.
3.) Minimálisan hány időegység kell az előző kérdésben megfogalmazott pozíció eléréséhez?
Helyes válasz: 16 időegység kell ehhez.
Magyarázat:
Tudjuk, hogy egy negyed fordulathoz (90°) 4 időegység kell, ezért nyilvánvalóan 16 időegység kell ahhoz, hogy a belső terület 360°-os fordulatot tegyen meg, és ezáltal K eljuthat eredeti pozíciójába. Mivel az indulás pillanatától kezdve K folyamatosan távolodik a felső pozíciótól, ezért 0 idő nem elég.
Vagyis meg kell várni, hogy a kívánt pozícióba jusson K, és az ehhez szükséges minimális idő 16 időegység.
Ha érdekel a programozás, nézd meg IT képzéseinket: Junior Java backend fejlesztő, Junior frontend fejlesztő, Junior szoftvertesztelő
Hamarosan induló tanfolyamok:
- Lakberendező (2025-01-04)
- Mérlegképes könyvelő (2025-01-25)
- Mérlegképes könyvelő (2025-01-29)
- Mérlegképes könyvelő (2025-01-29)
- Mérlegképes könyvelő (2025-01-30)
- Mérlegképes könyvelő (2025-02-01)
- Web és kiadvány designer (2025-02-05)
- Munkaerő-gazdálkodási és társadalombiztosítási ügyintéző (2025-02-05)
- Társadalombiztosítási és bérügyintéző munkatárs (2025-02-05)
- Web és kiadvány designer (2025-02-06)
- Munkaerő-gazdálkodási és társadalombiztosítási ügyintéző (2025-02-06)
- Társadalombiztosítási és bérügyintéző munkatárs (2025-02-06)
- Junior Java backend fejlesztő (2025-02-08)
- Junior frontend fejlesztő (2025-02-08)
- Web és kiadvány designer (2025-02-08)
- Munkaerő-gazdálkodási és társadalombiztosítási ügyintéző (2025-02-08)
- Társadalombiztosítási és bérügyintéző munkatárs (2025-02-08)
- Lakberendező (2025-02-12)
- Junior Java backend fejlesztő (2025-02-12)
- Junior frontend fejlesztő (2025-02-12)
- Online marketing a gyakorlatban (2025-02-12)
- Junior rendszerüzemeltető (2025-02-12)
- Lakberendező (2025-02-13)
- Junior Java backend fejlesztő (2025-02-13)
- Junior frontend fejlesztő (2025-02-13)
- Junior szoftvertesztelő (2025-02-13)
- Kontírozó könyvelő munkatárs (2025-02-13)
- Kontírozó könyvelő munkatárs (2025-02-14)
- Junior szoftvertesztelő (2025-02-15)
- Online marketing a gyakorlatban (2025-02-15)
- Junior rendszerüzemeltető (2025-02-15)
- Logisztikus (2025-02-19)
- Junior szoftvertesztelő (2025-02-19)
- Junior rendszerüzemeltető (2025-02-19)
- Logisztikus (2025-02-22)
Kreditpontok 2024.
Tudásháló
Karrier
Tanulás, karrier, munkajog
Továbbiak...
Összes blogbejegyzés...