ClarkeRubber

UNSW ProgComp: Problem 4 - 2008

Jun 12th, 2012
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.66 KB | None | 0 0
  1. <?php
  2.  
  3. $input = <<<END
  4. 7664 71994 9096 71785 26 904 668944 78 46 3869 64043
  5. 927 97 45923 49 790 360 29986 618 832040 30 77419
  6. 27 529 456 268052 5279 3832 28 67 23396 70500 3876
  7. 57 883 27 73734 924 144 6164 221 307 41 6753 75584
  8. 27191 61 3413 12 255255 5750 5104 99 3146 316 972 90
  9. 1069 8050 3472 60119 49 984 150910 48165 52829 3513
  10. 28 408 121393 21076 69218 678 877820 20348 7866 938
  11. 37 159 75534 81163 743219 74670 0
  12. END;
  13.  
  14. function is_fibonacci($n){
  15.     $x = 1;
  16.     $y = 1;
  17.     while($x < $n){
  18.         $temp = $y;
  19.         $y = $y + $x;
  20.         $x = $temp;
  21.     }
  22.     return ($x == $n) ? true : false;
  23. }
  24.  
  25. function is_triangle($n){
  26.     $x = 1;
  27.     $y = 1;
  28.     while($x < $n){
  29.         $x += $y+1;
  30.         $y++;
  31.     }
  32.     return ($x == $n) ? true : false;
  33. }
  34.  
  35. function is_even($n){
  36.     if($n == 0){
  37.         return false;
  38.     }
  39.     return ($n%2 == 0) ? true : false;
  40. }
  41.  
  42. $input = preg_replace("#([ \n\r])+#", ' ', $input);
  43. $input = explode(" ", $input);
  44.  
  45. //categorise numbers
  46. $fib = array();
  47. $evens = array();
  48. $triangles = array();
  49.  
  50. foreach($input as $key => $value){
  51.     if(is_fibonacci($value)){
  52.         $fib[] = $value;
  53.     }
  54.     if(is_even($value)){
  55.         $evens[] = $value;
  56.     }
  57.     if(is_triangle($value)){
  58.         $triangles[] = $value;
  59.     }
  60. }
  61.  
  62. sort($fib);
  63. sort($evens);
  64. sort($triangles);
  65.  
  66. if(empty($fib)){
  67.     $fib[] = "None";
  68. }
  69. if(empty($triangles)){
  70.     $triangles[] = "None";
  71. }
  72. if(empty($evens)){
  73.     $evens[] = "None";
  74. }
  75.  
  76. echo "Even numbers:         min ".str_pad($evens[0], 5, ' ', STR_PAD_RIGHT)." max ".end($evens)."\n";
  77. echo "Triangular numbers:   min ".str_pad($triangles[0], 5, ' ', STR_PAD_RIGHT)." max ".end($triangles)."\n";
  78. echo "Fibonacci numbers:    min ".str_pad($fib[0], 5, ' ', STR_PAD_RIGHT)." max ".end($fib)."\n";
Advertisement
Add Comment
Please, Sign In to add comment