fork download
  1. <?php
  2. $arr1 = array(2,3,4,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12);
  3. $arr2 = array(2,2,3,3,4,4,5,5,6,7,8,9,10,11,12);
  4. $arr3 = array(0,1,2,2,3,3,4,4,5,5,6,7,8,9,10,11,12);
  5.  
  6. //數列1
  7. $result = repeat_worker($arr1);
  8. echo " ".implode(',', $arr1)."\n => ";
  9. echo implode(',', $result)."\n";
  10. //數列2
  11. $result = repeat_worker($arr2);
  12. echo " ".implode(',', $arr2)."\n => ";
  13. echo implode(',', $result)."\n";
  14. //數列3
  15. $result = repeat_worker($arr3);
  16. echo " ".implode(',', $arr3)."\n => ";
  17. echo implode(',', $result)."\n";
  18.  
  19. function repeat_worker($arr) {
  20. $result = array();
  21. while(count($arr) !== 0) {
  22. $check = '';
  23. $tmp = array();
  24. while (($current = array_shift($arr)) !== null) {
  25. if ($current === $check) {
  26. $tmp[] = $current;
  27. } else {
  28. $result[] = $current;
  29. $check = $current;
  30. }
  31. }
  32. }
  33. $insert_key = isset($tmp[0]) ? $tmp[0] : false;
  34. if ($insert_key !== false) {
  35. $pos = array_search($insert_key, $result);
  36. $right_arr = array_splice($result, $pos);
  37. $result = array_merge($result, $tmp, $right_arr);
  38. }
  39. return $result;
  40. }
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
    2,3,4,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12
 => 2,3,4,5,6,7,8,9,10,11,12,6,7,8,9,10,11,12
    2,2,3,3,4,4,5,5,6,7,8,9,10,11,12
 => 2,3,4,5,2,3,4,5,6,7,8,9,10,11,12
    0,1,2,2,3,3,4,4,5,5,6,7,8,9,10,11,12
 => 0,1,2,3,4,5,2,3,4,5,6,7,8,9,10,11,12