Blog

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 draw_bezier

function draw_bezier ($p0$p1$p2$p3$detail$show_bounds
{
  $x0$p0[0];$x1$p1[0];$x2$p2[0];$x3$p3[0];
  $y0$p0[1];$y1$p1[1];$y2$p2[1];$y3$p3[1];
  
  $cx=3*($x1$x0);
  $bx=3*($x2$x1)-$cx
  $ax$x3$x0$cx$bx
  
  $cy=3*($y1$y0);
  $by=3*($y2$y1)-$cy
  $ay$y3$y0$cy$by
  
  // generate the bezier points
  for$i=0; $i<=$detail$i++) {
    $t = $i$detail
    $x = $ax$t$t$t$bx$t$t$cx$t$x0
    $y = $ay$t$t$t$by$t$t$cy$t$y0
    $points$i] = array$x$y);
  }
  
  $width=400;
  $height=400;
  $imageimage_create_alpha$width$height);
  
  $cimagecolorallocate$image,0,0,0);
  $c2imagecolorallocate$image,200,200,200);
  
  // determine scale so curve shows within our image
  $minxmin$x0$x1$x2$x3);
  $maxxmax$x0$x1$x2$x3);
  $minymin$y0$y1$y2$y3);
  $maxymax$y0$y1$y2$y3);
  if ($maxx==$minx
    $scale = ($height-1)/($maxy$miny);
  else if ($maxy==$miny
    $scale = ($width-1)/($maxx$minx);
  else
    $scale = min(($width-1)/($maxx$minx), ($height-1)/($maxy$miny));
  
  if ($show_bounds) {
    imageline$image, ($x0$minx)*$scale, ($y0$miny)*$scale, ($x1$minx)*$scale, ($y1$miny)*$scale$c2);
    imageline$image, ($x1$minx)*$scale, ($y1$miny)*$scale, ($x2$minx)*$scale, ($y2$miny)*$scale$c2);
    imageline$image, ($x2$minx)*$scale, ($y2$miny)*$scale, ($x3$minx)*$scale, ($y3$miny)*$scale$c2);
  }
  
  // draw the bezier
  for ($i=1;$icount$points);$i++) {
    imageline$image, ($points$i-1][0]-$minx)*$scale, ($points$i-1][1]-$miny)*$scale, ($points$i][0]-$minx)*$scale, ($points$i][1]-$miny)*$scale$c);
  }
             
  return $image

eXorithm – Execute Algorithm: View / Run Algorithm locate_country

function locate_country ($country

{

  $data = file_get_contents"http://maps.google.com/maps/geo?output=csv&q="urlencode$country));

  $arr = explode","$data);

  if (count$arr)>=4) {

    if ($arr[0]==200) {

      return array'latitude'=>$arr[2], 'longitude'=>$arr[3]);

    } else {

      throw new Exception'Country could not be geocoded');

    }

  } else {

    throw new Exception'Country could not be geocoded');

  }

eXorithm – Execute Algorithm: View / Run Algorithm flip_image

function flip_image ($image$mode

{

  $width = imagesx$image);

  $height = imagesy$image);

  

  $src_x = 0;

  $src_y = 0;

  $src_width = $width

  $src_height = $height

  

  switch ( $mode ) {

      

    case 'vertical'//vertical

      $src_y      =   $height -1;

      $src_height =   -$height

      break

      

    case 'horizontal'//horizontal

      $src_x      =   $width -1;

      $src_width  =   -$width

      break

      

    case 'both'//both

      $src_x      =   $width -1;

      $src_y      =   $height -1;

      $src_width  =   -$width

      $src_height =   -$height

      break

      

    default

      return $image

  }

  

  $imgdest = imagecreatetruecolor$width$height);

  imagealphablending$imgdest, false);

  imagesavealpha$imgdest, true);

  

  if (imagecopyresampled$imgdest$image, 0, 0, $src_x$src_y , $width$height$src_width$src_height)) {

    return $imgdest

  }

  

  return $image