eXorithm – Execute Algorithm: View / Run Algorithm quick_sort

function quick_sort ($array
{
  if (count$array)<=1) {
    return $array
  } else {
    $pivot = $array[0];
    $lesser = array();
    $greater = array();
    for ($i=1;$icount$array);$i++) {
      if ($array$i]<=$pivot) {
        $lesser[] = $array$i];
      } else {
        $greater[] = $array$i];
      }
    }  
    return array_mergequick_sort$lesser), array$pivot), quick_sort$greater));
  }

eXorithm – Execute Algorithm: View / Run Algorithm tag_cloud

function tag_cloud ($tags$min_size$max_size$link$link_class
{
  $min = minarray_values$tags));
  $max = maxarray_values$tags));
  $spread = $max - $min
  $cloud = ''
  
  if ($link_class != ''$link_class = "class="$link_class" "
  if ($spread == 0) $spread = 1;
  
  foreach$tags as $tag => $count)  {
    $size = $min_size + ($count - $min) * ($max_size - $min_size) / $spread
    $cloud .= '<a style="font-size:'floor$size).'px" '$link_class
      .'href="'$linkurlencode$tag).'">'$tag"</a>n"
  }
  
  return $cloud

eXorithm – Execute Algorithm: View / Run Algorithm random_name_caption

function random_name_caption ($image$your_name
{
  $sizey = imagesy$image);
  $sizex = imagesx$image);
  
  if (mt_rand(0,1)==1)
    $color = imagecolorallocate$image, 254, 0, 0);
  else
    $color = imagecolorallocate$image, 0, 0, 254);
  
  $y = mt_rand(0,$sizey-10);
  $x = mt_rand(0,$sizex-10);
  
  imagestring$image, 4, $x$y$your_name$color);
  
  $return = array
    'return' => $image
    'arguments' => array$image$your_name
  );
  
  return $return

eXorithm – Execute Algorithm: View / Run Algorithm next_prime

function next_prime ($start
{
  $primes = -1;
  for$i = $start+1; ; $i++)
  {
    $is_prime = true;
    for$j = 2; $j < floor$i/2); $j++)
    {
      if(($i % $j) == 0)
      {
        $is_prime = false;
        break
       }
    }
    if ($is_prime
    {
      $prime = $i
      break
    }
  }
  return $prime

eXorithm – Execute Algorithm: View / Run Algorithm snowflake_fractal

function snowflake_fractal ($length$level$color$image$x$y$orientation
{
  if ($image==='') {
    // initialize
    $image = image_create_alpha$length+2, round$length*4/3*sindeg2rad(60)))+2);
    $x = $length+1;
    $y = round$length/3*sindeg2rad(60)))+1;
    $orientation = -90;
    $r  = hexdecsubstr$color, 0, 2));
    $g  = hexdecsubstr$color, 2, 2));
    $b  = hexdecsubstr$color, 4, 2));
    $color = imagecolorallocate$image$r$g$b);
    $start = true;
  } else {
    $start = false;
  }
  
  if ($level==0) {
    // all drawing is done at depth 0
    $x2 = ($length)*sindeg2rad$orientation))+$x
    $y2 = ($length)*cosdeg2rad$orientation))+$y
    
    imageline$imageround$x), round$y), round$x2), round$y2), $color);
    
    // keep track of the image, current location, and the direction we're facing
    return array$image$x2$y2$orientation);
    
  } else {
    // draw a side (Koch curve)
    list$image$x$y$orientation) = snowflake_fractal$length/3, $level-1, $color$image$x$y$orientation);
    
    $orientation = ($orientation-60) % 360;
    list$image$x$y$orientation) = snowflake_fractal$length/3, $level-1, $color$image$x$y$orientation);
    
    $orientation = ($orientation+120) % 360;  
    list$image$x$y$orientation) = snowflake_fractal$length/3, $level-1, $color$image$x$y$orientation);
    
    $orientation = ($orientation-60) % 360;
    list$image$x$y$orientation) = snowflake_fractal$length/3, $level-1, $color$image$x$y$orientation);
  
    // draw the other two sides
    if ($start) {
      $orientation = ($orientation+120) % 360;
      list$image$x$y$orientation) = snowflake_fractal$length$level$color$image$x$y$orientation);
  
      $orientation = ($orientation+120) % 360;
      list$image$x$y$orientation) = snowflake_fractal$length$level$color$image$x$y$orientation);
      
      return $image
    } else {
      // keep track of the image, current location, and the direction we're facing
      return array$image$x$y$orientation);
    }
  }

eXorithm – Execute Algorithm: View / Run Algorithm derivative

function derivative ($function, $with_respect_to
{
  // $with_respect_to is a descriptive variable name, but it's too long!
  $x = $with_respect_to
  
  if (is_array$function)) {
      
    // pop the operator off the front of the equation
    $operator = array_shift$function);
    
    switch ($operator) {
        
      case '+'
        // (f+g)' = f' + g'
        return simplify_equationarray'+', derivative$function[0], $x), derivative$function[1], $x)));
  
      case '-'
        // (f-g)' = f' - g'
        return simplify_equationarray'-', derivative$function[0], $x), derivative$function[1], $x)));
  
      case '*'
        // (f*g)' = f'*g + f*g'
        return simplify_equationarray'+'
                     array'*', derivative$function[0], $x), $function[1]),
                     array'*', $function[0], derivative$function[1], $x))
                    ));
  
      case '/'
        // (f/g)' = (f'*g - f*g') / g^2
        return simplify_equationarray'/'
                     array'-'
                           array'*', derivative$function[0], $x), $function[1]),
                           array'*', $function[0], derivative$function[1], $x))
                          ),
                     array'^', $function[1], 2)
                    ));
  
      case '^'
        // (f^g)' = (f^g) * (g'*ln(f) + (g/f)*f')
        return simplify_equationarray'*'
                     array'^', $function[0], $function[1]),
                     array'+'
                           array'*'
                                 derivative$function[1], $x),
                                 array'ln', $function[0])
                                ),
                           array'*'
                                 array'/', $function[1], $function[0]),
                                 derivative$function[0], $x
                                )
                          ),
                    ));
        
      case 'neg'
        // (-f') = -(f')
        return simplify_equationarray'neg', derivative$function[0], $x)));
    
      case 'sqrt'
        // (f^(1/2))' = (f^(1/2)) * ((1/2f)*f')
        return simplify_equationarray'*'
                     array'sqrt', $function[0]),
                     array'*'
                            array'/', 1, array'*', 2, $function[0])),
                            derivative$function[0], $x
                          )
                    ));
  
      case 'log'
        // (log(f,g))' = (1/(f*ln(g))) * f'
        return simplify_equationarray'*'
                     array'/', 1, array'*'
                                         $function[0],
                                         array'ln', $function[1])
                                         )),
                     derivative$function[0], $x
                    ));
  
      case 'ln'
        // (ln(f))' = (1/f) * f'
        return simplify_equationarray'*'
                     array'/', 1, $function[0]),
                     derivative$function[0], $x
                    ));
  
      case 'exp'
        // (exp(f))' = exp(f)
        return simplify_equationarray'exp', $function[0]));
  
      case 'root'
        // (f^(1/g))' = (f^(1/g)) * ((1/g)'*ln(f) + (1/fg)*f')
        return simplify_equationarray'*'
                     array'^', $function[0], array'/', 1, $function[1])),
                     array'+'
                           array'*'
                                 derivativearray'/', 1, $function[1]), $x),
                                 array'ln', $function[0])
                                ),
                           array'*'
                                 array'/', array'/', 1, $function[1]), $function[0]),
                                 derivative$function[0], $x
                                )
                          ),
                    ));
        
        // trig
        // these all use the chain rule (f(g(x)))' = f'(g(x)) * (g(x))'
        
      case 'sin'
        return simplify_equationarray'*'
                     array'cos', $function[0]),
                     derivative$function[0], $x
                    ));
        
      case 'cos'
        return simplify_equationarray'*'
                     array'neg', array'sin', $function[0])),
                     derivative$function[0], $x
                    ));
  
      case 'tan'
        return simplify_equationarray'*'
                     array'/', 1, array'^', array'cos', $function[0]), 2)),
                     derivative$function[0], $x
                    ));
  
      case 'sec'
         return simplify_equationarray'*'
                     array'*'
                           array'sec', $function[0]),
                           array'tan', $function[0])
                          ),
                     derivative$function[0], $x
                    ));
  
      case 'csc'
         return simplify_equationarray'*'
                     array'*'
                           array'neg', array'csc', $function[0])),
                           array'cot', $function[0])
                          ),
                     derivative$function[0], $x
                    ));
  
      case 'cot'
         return simplify_equationarray'*'
                     array'/', -1, array'^', array'sin', $function[0]), 2)),
                     derivative$function[0], $x
                    ));
        
     // below are not done
        
        // hyperbolic trig
      case 'sinh'
  
      case 'cosh'
  
      case 'tanh'
  
      case 'sech'
  
      case 'csch'
  
      case 'coth'
  
        // arc trig
      case 'arcsin'
  
      case 'arccos'
  
      case 'arctan'
  
        // inverse hyperbolic trig
      case 'arsinh'
  
      case 'arcosh'
  
      case 'artanh'
  
      default
        throw new Exception'usupported operator in derivative '$operator);
    }
  } else {
    if (ctype_alpha$function)) {
      if ($function==$x) {
        return 1;
      } else {
        throw new Exception'function contains a variable other than '$x'!');
      }
    } else {
      return 0;
    }
  }
  return $function
}Â