Autor | Zpráva | ||
---|---|---|---|
aww Profil * |
#1 · Zasláno: 31. 3. 2014, 16:11:54 · Upravil/a: aww
Je nejaká možnosť, že sa dajú overiť zvolené čísla tak, či medzi nimi nie je "diera", a ide len o čísla v max. rozmedzí 1-7?
napr. <?php $Hodnoty1 = Array(1, 2, 3, 4, 5, 6, 7); // OK $Hodnoty2 = Array(1, 2, 3); // OK $Hodnoty3 = Array(1, 3, 4); // CHYBA! NEEXISTUJE "2" $Hodnoty4 = Array(1, 4); // CHYBA! NEEXISTUJE "2" a "3" Tu je kód, v JavaScripte, treba ho ale upraviť: http://stackoverflow.com/a/824445 skús aj toto: http://stackoverflow.com/questions/11385896/find-the-first-missing-number-in-a-sorted-list |
||
1Pupik1989 Profil |
#2 · Zasláno: 31. 3. 2014, 16:33:13
Zkus array_diff
|
||
janbarasek Profil |
#3 · Zasláno: 31. 3. 2014, 17:09:11
aww:
Je to úplně jednoduché. Stačí tu řadu čísel setřídit (třeba funkcí sort()) a pak projít pole, pokud nějaké číslo chybí, tak si ho poznamenáš do vedlejšího pole a uděláš další operace. Pokud chceš jen zjistit, jestli chybí aspoň jedno číslo (a nezajímá tě jaké), tak stačí projít jen setříděné pole přes sekvenční vyhledávání a při první nalezené "díře" ukončit cykl a odeslat informaci, že tam není číslo. |
||
Someone Profil |
#4 · Zasláno: 31. 3. 2014, 17:21:55
Např.:
<?php function check(array $pole) { $missing = array(); for($a = min($pole);$a<max($pole);$a++) { if(!in_array($a,$pole)) $missing[] = $a; } return $missing; } $missing = check(array(1,4)); if(empty($missing)) { echo "OK"; } else { echo "Missing: " . implode(", ",$missing); } ?> |
||
Tori Profil |
if (count($pole) !== count(array_flip($pole))) { // některá hodnota se opakuje } if (array_diff($pole, array_map('intval', $pole))) { // některá hodnota není číslo, anebo je zapsaná exponenciálně } // a tohle asi hledáte: (pro obě následující podmínky je nutné to pole nejdřív seřadit funkcí sort) sort($pole); if (current($pole) < 1 || end($pole) > 7) { // pole obsahuje čísla z většího rozsahu než 1 až 7 } if ($chybi = array_diff($pole, range(current($pole), end($pole)))) { echo 'chybi cisla '.implode(', ', $chybi); } |
||
1Pupik1989 Profil |
#6 · Zasláno: 31. 3. 2014, 20:03:23
To už jsem nestihl napsat. Vzal bych pole, z něho vybral maximální hodnotu. Pak vytvořil nový rozsah a porovnal. Čili jako Tori.
|
||
Časová prodleva: 10 let
|
0