Guest User

Untitled

a guest
Apr 22nd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.58 KB | None | 0 0
  1. <?php
  2.  
  3. define('N', 5 );            // pocet intervalu
  4. define('M', 9999);
  5. $pole = array();            // pole  intervalu
  6.  
  7.     // projdu pole a naplnim jej nahodnymi intervaly
  8.     mt_srand(time()%2147 * 1000000 + (double)microtime() * 1000000);
  9.     for($i = 0; $i < N; $i++) {
  10.         $a = mt_rand(1,  M); // urcim 1. nahodny prvek z <1, 100>
  11.         $b = mt_rand($a, M);        // urcim 2. nahodny prvek z <1, 100>
  12.  
  13.         $pole[] = array($a, $b);
  14.     }
  15. //    print_r($pole);
  16.  
  17.  
  18.     // setridim intervaly
  19.     function cmp($a, $b) {
  20.         if ($a[0] > $b[0]) {
  21.             return 1;
  22.         }
  23.         return -1;
  24.     }
  25.     usort($pole, 'cmp');
  26. //print_r($pole);
  27.  
  28.  
  29.     // projdu pole a vyhledam intervaly
  30.     $b   = array();
  31.     $tmp = $pole[0];
  32.     for($i = 1, $maxi=count($pole); $i<$maxi; $i++) {
  33.  
  34.         // mam prunik?, posunu pravou mez
  35.         $is_prunik = false;
  36.         if ($tmp[1] >= $pole[$i][0]-1) {
  37.             $is_prunik = true;
  38.             if ($tmp[1] < $pole[$i][1]) {
  39.                 $tmp[1] = $pole[$i][1];
  40.             }
  41.  
  42.         } else {
  43.             $b[] = $tmp;
  44.             $tmp = $pole[$i];
  45.         }
  46. //print_r($tmp);
  47.     }
  48.     $b[] = $tmp;
  49.  
  50.  
  51.     // prehledne vytisknu
  52.     echo "vstup:\n";
  53.     for($i=0, $maxi=count($pole); $i<$maxi; $i++) {
  54.         echo "<{$pole[$i][0]},{$pole[$i][1]}>";
  55.         echo ($i+1 < $maxi ? ', ' : '');
  56.     }
  57.     echo "\n\n";
  58.  
  59.     echo "sjednoceni:\n";
  60.     for($i=0, $maxi=count($b); $i<$maxi; $i++) {
  61.         echo "<{$b[$i][0]},{$b[$i][1]}>";
  62.         echo ($i+1 < $maxi ? ', ' : '');
  63.     }
  64.     echo "\n\n";
Add Comment
Please, Sign In to add comment