Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- define('N', 5 ); // pocet intervalu
- define('M', 9999);
- $pole = array(); // pole intervalu
- // projdu pole a naplnim jej nahodnymi intervaly
- mt_srand(time()%2147 * 1000000 + (double)microtime() * 1000000);
- for($i = 0; $i < N; $i++) {
- $a = mt_rand(1, M); // urcim 1. nahodny prvek z <1, 100>
- $b = mt_rand($a, M); // urcim 2. nahodny prvek z <1, 100>
- $pole[] = array($a, $b);
- }
- // print_r($pole);
- // setridim intervaly
- function cmp($a, $b) {
- if ($a[0] > $b[0]) {
- return 1;
- }
- return -1;
- }
- usort($pole, 'cmp');
- //print_r($pole);
- // projdu pole a vyhledam intervaly
- $b = array();
- $tmp = $pole[0];
- for($i = 1, $maxi=count($pole); $i<$maxi; $i++) {
- // mam prunik?, posunu pravou mez
- $is_prunik = false;
- if ($tmp[1] >= $pole[$i][0]-1) {
- $is_prunik = true;
- if ($tmp[1] < $pole[$i][1]) {
- $tmp[1] = $pole[$i][1];
- }
- } else {
- $b[] = $tmp;
- $tmp = $pole[$i];
- }
- //print_r($tmp);
- }
- $b[] = $tmp;
- // prehledne vytisknu
- echo "vstup:\n";
- for($i=0, $maxi=count($pole); $i<$maxi; $i++) {
- echo "<{$pole[$i][0]},{$pole[$i][1]}>";
- echo ($i+1 < $maxi ? ', ' : '');
- }
- echo "\n\n";
- echo "sjednoceni:\n";
- for($i=0, $maxi=count($b); $i<$maxi; $i++) {
- echo "<{$b[$i][0]},{$b[$i][1]}>";
- echo ($i+1 < $maxi ? ', ' : '');
- }
- echo "\n\n";
Add Comment
Please, Sign In to add comment