Diskuze: Jak nejlépe porovnat čísla
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 10 zpráv z 10.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


ja presne neviem ako to v PHP funguje ale urobil by som to tak, že by som si z rozsahov urobil slovník, kde kľúč by bol dolná hranica a hodnota by bola vrchná hranica, prešiel by som to binárnym vyhľadávaním nejako takto, je to skôr pseudokód ale
binSearch(Dict, val):
lo = 1, hi = size(Dict)
while lo <= hi:
mid = lo + (hi-lo)/2
if Dict[mid].key <= val && Dict[mid].value >= val
return true
else if Dict[mid].key < target
lo = mid+1
else
hi = mid-1
return false
a to isté by som urobil aj s tou množinou čísel. takto by som ju prešiel s tým, že by som porovnával priamo čísla, čiže namiesto
//namiesto tohoto
if Dict[mid].key <= val && Dict[mid].value >= val
//toto
if Dict[mid] == val
takto to hľadané číslo nájdeš, resp. nenájdeš v logaritmickom čase.
Máš už tu množinu nějak uloženou v nějakém poli? ukaž to pole (stačí pár prvků) tak jak to v tom PHP máš...
V poli to nemám, zatím. Nicméně do pole to asi nemám problém dát. Jedná se o ty čísla, které jsem napsal.
$rozsah = array(
10000 => 19999,
37001 => 37021,
30100 => 32800,
40003 => 40020,
46001 => 46020,
50001 => 50012,
53001 => 53020,
53351 => 53354,
60010 => 64700,
70002 => 73001,
76001 => 76007,
77002 => 77900
);
$cisla = array(
65502, 65691, 65805, 65856, 50101, 50301, 50302, 50311, 50321, 50332,
50341, 46177, 46302, 46303, 46311, 46312, 78301, 78302, 78371, 53078,
53141, 53215, 53231, 53301, 53331, 53333 ,40001, 76302, 76311, 76314
);
sort($cisla);
$tmp1 = bin_search_dict($rozsah, 15000); //slovnik rozsahov
$tmp2 = bin_search($cisla, 53334); //zoznam cisel
function bin_search_dict($array, $value){
$keys = array_keys($array);
$hi = count($array);
$lo = 0;
while($lo<=$hi){
$mid = floor($lo + ($hi-$lo)/2);
if($keys[$mid]<=$value && $array[$keys[$mid]]>=$value){
return true;
}elseif($keys[$mid]<$value){
$lo = $mid+1;
}else{
$hi = $mid-1;
}
}
return false;
}
function bin_search($array, $value){
$hi = count($array);
$lo = 0;
while($lo<=$hi){
$mid = floor($lo + ($hi-$lo)/2);
if($array[$mid]==$value){
return true;
}elseif($array[$mid]<$value){
$lo = $mid+1;
}else{
$hi = $mid-1;
}
}
return false;
}
zabudol som podotknúť, že na to aby to fungovalo to musí byť zoradené vzostupne.
U rozsahu jsem to chtěl řešit podobně, tedy postupně procházet jednotlivé rozsahy. Co se týká těch daných čísel, nestačilo by použit funkci in_array?
Ak je ten list nezoradený tak je in_array lepšia varianta, ak zoradený je tak toto je rýchlejšie.
Když to udělám takto, je na tom něco špatnýho? Přijde mi kód výše zbytečně složitý.
$psc_vecer_pole = array('10000-19999','37001-37021','30100-32800','40003-40020','46001-46020','50001-50012','53001-53020','53351-53354','60010-64700','70002-73001','76001-76007','77002-77900');
$psc_vecer_pole2 = array('65502','65691','65805','65856','50101','50301','50302','50311','50321','50332','50341','46177','46302','46303','46311','46312','78301','78302','78371','53078','53141','53215','53231','53301','53331','53333','40001','76302','76311,76314');
$vecerni_psc_1 = 0;
for($i=0;$i<count($psc_vecer_pole);$i++){
$vecerni_psc = explode("-", $psc_vecer_pole[$i]);
if($psc>=$vecerni_psc[0] and $psc<=$vecerni_psc[1]){
$vecerni_psc_1 = 1;
}
}
if($vecerni_psc_1 == 0 and in_array($psc, $psc_vecer_pole2)){
$vecerni_psc_1 = 1;
}
echo $vecerni_psc_1;
myslím, že pre toto množstvo dát je to úplne v poriadku.
Akurát by som breakol ten for cyklus v ife kde nastavuješ $vecerni_psc1, lebo takto zbytočne prechádzaš celý zoznam.
Zobrazeno 10 zpráv z 10.