Új hozzászólás Aktív témák

  • orbano

    félisten

    válasz F-ECT$ #3787 üzenetére

    lehet hogy most késő van és hülyeséget írok, de szerintem az alábbi működne:
    1. lépésben vágnék: minden munkát feldarabolnék az utazások határainál, hogy csak olyan munkadarabjaim legyenek, amik egy adott utazásba beleestek.
    2. készítenék egy halmazt, amibe a tól-ig dátumokat beleteszem (megcímkézve nyilván, hogy tudjam mihez t artoznak, ráadásul tíusosan, azaz megkülönböztethetően a tól és az ig határokat)
    3. készítenék egy vermet (inkább egy sima halmaz talán jobb), vagy mittomén valami spéci adatszerkezetet, amibe pakolászom a tól dátumokat azaz a munkák kezdetét.
    4. elkezdem az algoritmust:
    -végigmegyek a tól-ig dátumokon növekvő sorrendben, a műveleti szabályok:
    a) Első lépésben a halmaz üres, a kezdődátum az utazás kezdete
    b) Ha a halmaz üres, létrehozok egy új "munkanélküli" intervallumot, és megadom kezdőértéknek az aktuális dátumot (ez kezdetben a kezdődátum)
    c) ha tól-t találok, beteszem a halmazba, és lezárom az éppen aktív munkanélküli intervallumot és eltárolom az eredményt adó változóba
    d) ha ig-et találok, kiveszem a tól párját a halmazból. ha nincs benne, az hiba, mert előfeltétel hogy a feladat előbb elkezdődjön, minthogy végetérne (ezt meg is adtad)
    5. a végén kiszedem az eredmények közül a 0 hosszú intervallumokat.
    e) utolsó elemnek az utazás végét veszem, ezzel lezárhatom az esetlegesen aktív munkanélküli intervallumot.

    Példa, az időt reprezentálják egész számok:
    munka1: 5..10
    munka2: 15..20
    utazás: 5..25

    tehát az intervallumok, * az igeket jelöli

    (5,)5,*10,15,*20,(, 25)

    #1: 5-ös utazáskezdet, az leső munkanélküli időszak kezdete 5
    #2: 5-ös tólt találok, a munkanálküli intervallumot lezárom (5..5) és elteszem. vagy nem teszem mert 0 hosszú, valamint felteszem a halmazba az 5-öst
    #3: 10-es záró, kiveszem a párját, a halmazból, ami most üres lesz, tehát intervallumot nyitok 10-től.
    #4: 15-ös tól intervallum, tehát zárom a munkanélküli időszakot és elraktározom (10..15)
    .... innen trivi.

    ez olyasmi lényegében, mint a lengyel forma feldolgozása, csak kicsit spécibb, testreszabott.

Új hozzászólás Aktív témák