eXorithm – Execute Algorithm: View / Run Algorithm number_string

function number_string ($number

{

  $names = array

    0=>"zero", 1=>"one", 2=>"two", 3=>"three", 4=>"four"

    5=>"five", 6=>"six", 7=>"seven", 8=>"eight", 9=>"nine"

    10=>"ten", 11=>"eleven", 12=>"twelve", 13=>"thirteen", 14=>"fourteen"

    15=>"fifteen", 16=>"sixteen", 17=>"seventeen", 18=>"eighteen", 19=>"nineteen"

    20=>"twenty", 30=>"thirty", 40=>"forty", 50=>"fifty"

    60=>"sixty", 70=>"seventy", 80=>"eighty", 90=>"ninety"

  );

  

  $triplets = array

    100=>"hundred"

    1000=>"thousand"

    1000000=>"million"

    1000000000=>"billion"

    1000000000000=>"trillion"

    1000000000000000=>"quadrillion"

    1000000000000000000=>"quintillion"

    1000000000000000000000=>"sextillion"

    1000000000000000000000000=>"septillion"

    1000000000000000000000000000=>"octillion"

    1000000000000000000000000000000=>"nonillion"

  );

  

  krsort$names);

  krsort$triplets);

  

  if (abs$number) > PHP_INT_MAX) 

    throw new Exception'Maximum integer size for this version of PHP is '.PHP_INT_MAX);

  

  $prefix = ''

  $str = ''

  if ($number<0) {

    $prefix = 'negative '

    $number = $number*-1;

  }

  

  $remainder = 0;

  

  if ($number>=100) {

    

    foreach ($triplets as $num=>$name) {

      if ($num<=$number) {

        $str = $name

        $remainder = $number % $num

        $number = floor$number$num);

        break

      }

    }

    

    // how many of the triplets?

    $str = number_string$number).' '$str

    

    if ($remainder<100) $separator = ' and '

    else $separator = ', '

    

  } else {

    

    foreach ($names as $num=>$name) {

      if ($num<=$number) {

        $str = $name

        $remainder = $number % $num

        break

      }

    }

    

    $separator = '-'

  }

  

  // remainder to tack on?

  if ($remainder>0) {

    $str = $str$separatornumber_string$remainder);

  }

  

  return $prefix$str

eXorithm – Execute Algorithm: View / Run Algorithm raise_polygon

function raise_polygon ($points$height$direction$color
{
  // check points
  if ((count$points)==0) || ((count$points)%2)!=0)) {
    throw new Exception'The points must be an array with an even number of integers.');
  }
  
  // determine the extent of the polygon
  $maxx = $points[0];
  $maxy = $points[1];
  $minx = $points[0];
  $miny = $points[1];
  for ($i=2; $icount$points); $i$i+2) {
    $x = $points$i];
    $y = $points$i+1];
    if ($x$maxx$maxx = $x
    if ($y$maxy$maxy = $y
    if ($x$minx$minx = $x
    if ($y$miny$miny = $y
  }
  
  // determine the extent of the projection
  $proj_length = roundsqrt$height$height/2));
  switch ($direction) {
    case 'nw'
      $projx = $proj_length*-1;
      $projy = $proj_length*-1;
      break
    case 'ne'
      $projx = $proj_length
      $projy = $proj_length*-1;
      break
    case 'sw'
      $projx = $proj_length*-1;
      $projy = $proj_length
      break
    default
      $projx = $proj_length
      $projy = $proj_length
  }
  
  // determine where the polygon should be positioned
  for ($i=0; $icount$points); $i$i+2) {
    $points$i] = $points$i]-$minx+1;
    $points$i+1] = $points$i+1]-$miny+1;
    if ($projx<0) $points$i] = $points$i] - $projx
    if ($projy<0) $points$i+1] = $points$i+1] - $projy
  }
  
  // blank image
  $image = image_create_alpha$maxx$minx$proj_length+2, $maxy$miny$proj_length+2);
  
  // create the colors
  $r  = hexdecsubstr$color, 0, 2));
  $g  = hexdecsubstr$color, 2, 2));
  $b  = hexdecsubstr$color, 4, 2));
  $color = imagecolorallocate$image$r$g$b);
  
  // draw the first polygon
  imagepolygon$image$pointscount$points)/2, $color);
  
  // draw the lines + modify the points
  for ($i=0; $icount$points); $i$i+2) {
    imageline$image$points$i], $points$i+1], $points$i]+$projx$points$i+1]+$projy$color);
    $points$i] = $points$i]+$projx
    $points$i+1] = $points$i+1]+$projy
  }
  
  // draw the second polygon
  imagepolygon$image$pointscount$points)/2, $color);
  
  return $image

eXorithm – Execute Algorithm: View / Run Algorithm primes

function primes ($number_of_primes

{

  $n = $number_of_primes

  $primes = array();

  for$i = 2; ; $i++)

  {

    $is_prime = true;

    for$j = 2; $j < $i$j++)

    {

      if(($i % $j) == 0)

      {

        $is_prime = false;

        break

      }

      if$j > floor$i/2)) break

    }

    if ($is_prime

    {

      $primes[] = $i

      $n--;

    }

    if ($n == 0) break

  }

  return $primes

eXorithm – Execute Algorithm: View / Run Algorithm pi_digits

function pi_digits ($digits

{

  $n = floor$digits * 14/4);

  

  $scale = 10000;

  $init = 2000;

  $carry = 0;

  $result = ''

  

  for$i=0;$i<=$n$i++) {

    $arr$i] = $init

  }

  

  for$i$n$i>0;$i$i-14) {  

    $sum = 0;  

    for$j$i$j>0;$j--) {  

      $sum = ($sum * $j) + ($scale * $arr$j]);  

      $arr$j] = $sum % (($j*2)-1);  

      $sum = floor$sum / (($j*2)-1));  

    }

    $result .= sprintf"%04d", ($carry + ($sum / $scale)));

    $carry = $sum % $scale;  

  }

  

  if ($digits>1) {

    return $result[0].'.'substr$result,1,$digits-1);

  } else {

    return substr$result,0,$digits);

  }

eXorithm – Execute Algorithm: View / Run Algorithm pluralize

function pluralize ($word$exceptions

{

  if (array_key_exists$word$exceptions))

    return $exceptions$word];

  

  if (substr_compare$word'y', -1, 1)==0) {

    if (in_arraysubstr$word, -2, 1), array'a''e''i''o''u''y'))===false)

      return substr$word, 0, -1).'ies'

    else

      return $word's'

  }

  

  if (substr_compare$word'o', -1, 1)==0) {

    if (in_arraysubstr$word, -2, 1), array'a''e''i''o''u'))===false)

      return $word'es'

    else

      return $word's'

  }

  

  if (substr_compare$word's', -1, 1)==0)

    return $word'es'

  

  if (substr_compare$word'x', -1, 1)==0)

    return $word'es'

  

  if (substr_compare$word'z', -1, 1)==0)

    return $word'es'

  

  if (substr_compare$word'ch', -2, 2)==0)

    return $word'es'

  

  if (substr_compare$word'sh', -2, 2)==0)

    return $word'es'

  

  return $word's'

eXorithm – Execute Algorithm: View / Run Algorithm ordinal

function ordinal ($num

{

  // get the last two digits

  $last = $num % 100;

  // get last digit unless the number is in the teens

  $last = ($last < 20) ? $last : $num % 10; 

  $ord = ($last==1) ? 'st' : (($last==2) ? 'nd' : (($last==3) ? 'rd' : 'th'));

  return $num$ord