abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    13.9. 17:33 | Pozvánky

    Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 211. sraz, který proběhne v pátek 19. září od 18:00 ve Studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Na srazu proběhne přednáška Jiřího Eischmanna o nové verzi prostředí GNOME 49. Nemáte-li možnost se zúčastnit osobně, přednáškový blok bude opět streamován živě na server VHSky.cz a následně i zpřístupněn záznam.

    Ladislav Hagara | Komentářů: 0
    13.9. 01:33 | IT novinky

    Microsoft se vyhnul pokutě od Evropské komise za zneužívání svého dominantního postavení na trhu v souvislosti s aplikací Teams. S komisí se dohodl na závazcích, které slíbil splnit. Unijní exekutivě se nelíbilo, že firma svazuje svůj nástroj pro chatování a videohovory Teams se sadou kancelářských programů Office. Microsoft nyní slíbil jasné oddělení aplikace od kancelářských nástrojů, jako jsou Word, Excel a Outlook. Na Microsoft si

    … více »
    Ladislav Hagara | Komentářů: 3
    12.9. 14:00 | Nová verze

    Samba (Wikipedie), svobodná implementace SMB a Active Directory, byla vydána ve verzi 4.23.0. Počínaje verzí Samba 4.23 jsou unixová rozšíření SMB3 ve výchozím nastavení povolena. Přidána byla podpora SMB3 přes QUIC. Nová utilita smb_prometheus_endpoint exportuje metriky ve formátu Prometheus.

    Ladislav Hagara | Komentářů: 0
    12.9. 12:00 | Zajímavý článek

    Správcovský tým repozitáře F-Droid pro Android sdílí doporučení, jak řešit žádosti o odstranění nelegálního obsahu. Základem je mít nastavené formální procesy, vyhrazenou e-mailovou adresu a být transparentní. Zdůrazňují také důležitost volby jurisdikce (F-Droid je v Nizozemsku).

    🇵🇸 | Komentářů: 20
    12.9. 05:33 | Bezpečnostní upozornění

    Byly publikovány informace o další zranitelnosti v procesorech. Nejnovější zranitelnost byla pojmenována VMScape (CVE-2025-40300, GitHub) a v upstream Linuxech je již opravena. Jedná se o variantu Spectre. KVM host může číst data z uživatelského prostoru hypervizoru, např. QEMU.

    Ladislav Hagara | Komentářů: 0
    11.9. 22:00 | Komunita

    V červenci loňského roku organizace Apache Software Foundation (ASF) oznámila, že se částečně přestane dopouštět kulturní apropriace a změní své logo. Dnes bylo nové logo představeno. "Indiánské pírko" bylo nahrazeno dubovým listem a text Apache Software Foundation zkratkou ASF. Slovo Apache se bude "zatím" dál používat. Oficiální název organizace zůstává Apache Software Foundation, stejně jako názvy projektů, například Apache HTTP Server.

    Ladislav Hagara | Komentářů: 16
    11.9. 17:33 | Nová verze

    Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.104 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.104 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 1
    11.9. 15:33 | IT novinky

    Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.

    Ladislav Hagara | Komentářů: 0
    11.9. 15:00 | IT novinky

    Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.

    Ladislav Hagara | Komentářů: 7
    10.9. 21:22 | Nová verze

    Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (81%)
     (7%)
     (3%)
     (3%)
     (4%)
     (2%)
    Celkem 176 hlasů
     Komentářů: 12, poslední 10.9. 13:00
    Rozcestník

    Dotaz: PHP prieniky rozsahov hodnot

    25.2.2012 23:12 adrinko | skóre: 22
    PHP prieniky rozsahov hodnot
    Přečteno: 441×
    prosim o radu. mam nieco taketo

    hodnota A ma min a max hodnotu 1000 - 1500

    hodnota B ma min a max hodnotu 1200 - 1700

    hodnota C ma min a max hodnotu 1600 - 2000

    hodnota D ma min a max hodnotu 2500 - 3000

    ako zistím prieniky A,B,C? malo by to vyhodit, ze prvy prienik je 1200-1500 pre A,B,

    dalsi prienik 1600-1700 pre B,C

    Řešení dotazu:


    Odpovědi

    26.2.2012 00:20 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot
    este by som dodal E s hodnotami 1200-1500, tak by to malo vyhodit, ze A,B,E sa prelinaju v 1200-1500. zjednodusene povedane, mam schodzky naplanovane v danych casoch a potreboval by sim zistit, v akych casoch od-do sa mi prekryvaju. Diky!
    Řešení 1× (Jan Trávníček)
    LangPa avatar 26.2.2012 01:31 LangPa | skóre: 12 | blog: LangPavel | Hradec Králové
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot

    Návrh, mohlo by to fungovat... :-)

    Převedl bych intervaly na 2 jakési "události" typu začátek(B) a konec(E). Ještě je třeba mít referenci na samotný interval.

    Vše naskládat do pole a setřídit, takže z toho vyjde něco takového: (pro správnost třeba třídit i podle např ID události, zde je to abeceda A—E)

    Vytvořit prázdný zásobník (nějaké pole)

    Při iteraci každá událost začátek(B:) v poli způsobí uložení na zásobník. Pokud byl zásobník neprázdný, existuje zde průnik.
    Kažká událost konec(E:) v poli způsoví odstranění prvku ze zásobníku; všechny intervaly na zásobníku se před vyzvednutím překrývají

    1. B:1000 (A) :: [] push A
    2. B:1200 (B) :: [A] push B == AB se protíná
    3. B:1200 (E) :: [AB] push E == ABE se protíná
    4. E:1500 (A) :: [ABE] remove A == BE se protíná
    5. E:1500 (E) :: [BE] remove E
    6. B:1600 (C) :: [B] push C == BC se protíná
    7. E:1700 (B) :: [BC] remove B
    8. E:2000 (C) :: [C] remove C
    9. B:2500 (D) :: [] push D
    10. E:3000 (D) :: [D] remove D

    Doufám, že je to alespoň trochu k pochopení ;-) Důležité je pochopit že i když je to jeden interval jsou to v podstatě dvě skalární tříditelné hodnoty...

    26.2.2012 09:47 Jan Trávníček | skóre: 10 | blog: ehonza | Existuje
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot
    Jen pro upřesnění jedná se o frontu a ne o zásohník ale je to hezké.
    To mess up a Linux box, you need to work at it; to mess up your Windows box, you just have to work on it.
    26.2.2012 09:49 Jan Trávníček | skóre: 10 | blog: ehonza | Existuje
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot
    I když jestliže budou různě dlouhé intervaly tak nějaký prvek budete odstraňovat i z prostředka...
    To mess up a Linux box, you need to work at it; to mess up your Windows box, you just have to work on it.
    LangPa avatar 26.2.2012 18:18 LangPa | skóre: 12 | blog: LangPavel | Hradec Králové
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot
    Pro nepřekrývající se a nebo vnořené intervaly se to chová skutečně jako zásobník. Vzhledem k tomu, že všechno, jak fronta (FIFO), tak zásobník (LIFO), je v PHP řešené pomocí funkcí nad Array, je to jedno.

    Nevím jestli tady je rozvedené to moje řešení někde níže, ale samotný algoritmus (bez třídění) má ideálně lineární složitost (2*N --> 2 protože jeden interval má začátek a konec) a myslím, že to se se složitostí N^2 (bruteforce - dva vnořené forcykly) co do efektivity nedá srovnávat(... když se dělá milion na místo dvou tisíc iterací při tisíci záznamech).

    Dále co mě napadlo, že by se mělo třídit podle třech kritérií {čas; (konec|začátek); ID} — prostřední kvůli rozlišení na sebe těsně navazujících intervalů; při nesprávném pořadí by algoritmus "náhodně" označoval dva intervaly se stejným začátkem a koncem za překrývající se, což zřejmě není žádoucí (pokud se pracuje s časem, je vhodné uvažovat o všech intervalech jako z prava otevřených (strart <= cas < konec) )

    Pro lepší pochopení algoritmu je potřeba nepracovat s intervaly (pole nebo objekt s dvěma časy + vlasní data), ale rozbít tyto na dva údaje (objekt s jedním časem a typem začátek/konec + reference na vlastní data (ID)).
    26.2.2012 12:31 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot
    vyzerá to super, akurát tomu nerozumiem :D Možno nejaký malý náčrt php príkazov by mi pomohol v orientácii, dikes
    26.2.2012 00:28 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot
    Hrubá síla by nestačila? Pro každou proměnnou X zkusím min hodnoty všech ostatních, pokud leží v intervalu Xmin - Xmax mám průnik na interlavu Ymin - min(Xmax, Ymax).

    max hodnotami ostatních bych se asi nezabýval, tuto možnost by to mělo až budou v obráceném gardu.
    26.2.2012 20:27 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot
    Přidám kód, aby to bylo jasnější, omlouvám se za ten bastl s min-max, nějak mi to teď nemyslí.
    #!/bin/bash
    
    A=(1000 1500)
    B=(1200 1700)
    C=(1600 2000)
    
    for x in A B C; do
      for y in A B C; do
        xmin=${!x}
        xmax=$(eval echo '$'{$x[1]})
        ymin=${!y}
        ymax=$(eval echo '$'{$y[1]})
        if [[ $ymin -gt $xmin && $ymin -lt $xmax ]]; then
          if [[ $imax -gt $ymax ]]; then
            echo "$x$y $ymin $ymax"
          else
            echo "$x$y $ymin $xmax"
          fi
        fi
      done
    done
    
    Výstup:
    AB 1200 1500
    BC 1600 1700
    
    26.2.2012 11:30 Kit
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot
    <?php
    $A=array(1000,1500);
    $B=array(1200,1700);
    $B=array(1600,2000);
    $AB=array(max($A[0],$B[0]),min($A[1],$B[1]));
    $BC=array(max($B[0],$C[0]),min($B[1],$C[1]));
    ?>
    26.2.2012 12:37 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot
    vďaka, toto je zaujímavé, nájde to prieniky pre AB, BC, čo je fajn. Ako by sa to ale malo pozmeniť nejako univerzálne, aby to bolo schopné spraviť najväčšiu množinu tých prelínajúcich sa? mohlo by to byť tak, že by to spravilo množiny, a ukázalo by ich od množiny s najväčším výskytom prienikov (kde by bolo ABE), až po najmenšie prieniky.
    26.2.2012 13:12 Kit
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot
    Asi bych vyrobil něco jako tabulku vzájemných zápasů ve fotbalu a každé políčko ohodnotil rozdílem mezi minimem a maximem. Políčko s nejvyšší hodnotou bude řešení.

    Ta tabulka v principu může být 3D, 4D,... a může být trojúhelníková, aby se zbytečně nehodnotil průnik AA, BA apod. Pomocí rekurze by to mělo jít poměrně snadno.
    26.2.2012 13:54 adrinko | skóre: 22
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot
    experimentujem s týmto:
    $classes = array(
        array(
           'name' => 'A',
           'day'  => 'Monday',
           'start'=> '08:00AM',
           'end'  => '11:00AM',
        ),
        array(
           'name' => 'B',
           'day'  => 'Monday',
           'start'=> '10:00AM',
           'end'  => '11:30AM',
        ),
        array(
           'name' => 'C',
           'day'  => 'Monday',
           'start'=> '12:00PM',
           'end'  => '04:00PM',
        ),
        array(
           'name' => 'D',
           'day'  => 'Monday',
           'start'=> '03:00PM',
           'end'  => '06:00PM',
        ),
        array(
           'name' => 'E',
           'day'  => 'Monday',
           'start'=> '10:00AM',
           'end'  => '10:30AM',
        ),
        array(
           'name' => 'F',
           'day'  => 'Monday',
           'start'=> '11:00AM',
           'end'  => '11:30AM',
        ),    
    );
    
    
    $overlap = array();
    foreach ($classes as $class1) {
        foreach ($classes as $class2) {
            if ($class1['day'] != $class2['day'] || $class1 == $class2) continue;
            if (strtotime($class1['start']) <  strtotime($class2['end']) &&
                strtotime($class1['start']) >= strtotime($class2['start']))
            {
                $array = array($class1['name'], $class2['name']);
                sort($array);
                if (!in_array($array, $overlap)) $overlap[] = $array;
            }
        }
    }
    print_r($overlap);
    to mi dá výsledok:
    Array
    (
        [0] => Array
            (
                [0] => A
                [1] => B
            )
     
        [1] => Array
            (
                [0] => B
                [1] => E
            )
     
        [2] => Array
            (
                [0] => C
                [1] => D
            )
     
        [3] => Array
            (
                [0] => A
                [1] => E
            )
     
        [4] => Array
            (
                [0] => B
                [1] => F
            )
     
    )
    
    teraz by stacilo nejako vyselektovať kombinácie, kde sa vyskytuje na začiatku A, t.j. AB,AE a zároveň pole s BE (druhé hodnoty poľa so začiatočným A), takže dostanem výsledok ABE. nejaký nápad na toto? potom následne nájdem spoločný min max prienik ABE a malo by to byť hotové.
    26.2.2012 13:55 Kit
    Rozbalit Rozbalit vše Re: PHP prieniky rozsahov hodnot
    Zkusil jsem si něco podobného v databázi, mělo by to jít rozšířit i na trojice, čtveřice,...
    SELECT * FROM rozsah;                                                                                     
    
    id|name|mi|ma                                                                                                     
    1|A|1000|1500                                                                                                     
    2|B|1200|1700                                                                                                     
    3|C|1600|2000                                                                                                     
    4|D|2500|3000
    
    SELECT n,pmi,pma,pma-pmi AS pm
      FROM (SELECT r1.name||r2.name AS n,
          max(r1.mi,r2.mi) AS pmi,
          min(r1.ma,r2.ma) AS pma
        FROM rozsah AS r1, rozsah AS r2
        WHERE r1.id<r2.id AND pmi<=pma)
      ORDER BY pm DESC;
                           
    n|pmi|pma|pm                                                                                                      
    AB|1200|1500|300                                                                                                  
    BC|1600|1700|100

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.