Blog

eXorithm – Execute Algorithm: Discuss Algorithm magic8ball

magic8ball     version 0.2     Ask the magic 8 ball your question.Subject: magic8ball

Haldan posted: Feb 22, 2012 04:57 am [reply]

function magic8ball() {
$answers = array(‘It is certain’, ‘It is decidedly so’, ‘Without a doubt’,
‘Yes – definitely’, ‘You may rely on it’, ‘As I see it, yes’,
‘ Most likely’, ‘Outlook good’, ‘Signs point to yes’, ‘Yes’,
‘Reply hazy, try again’, ‘Ask again later’,
‘Better not tell you now’, ‘Cannot predict now’,
‘Concentrate and ask again’, ‘Dont bet on it’,
‘My reply is no’, ‘My sources say no’, ‘Outlook not so good’,
‘Very doubtful’ );
$index = rand(0, count($answers));
return ($answers[$index]);

New Comment

eXorithm – Execute Algorithm: View / Run Algorithm html_select

function html_select ($name$items$selected$use_keys
{
  $html = "<select name="$name">n"
  foreach ($items as $key=>$value) {
    if (!$use_keys$key = $value
    if ($selected == $key
      $s = ' selected'
    else
      $s = ''
    $html .= "<option value=""$key""$s>"$value"</option>n"
  }
  $html .= "</select>"
  return $html

Draw UPC Barcode

<?php

/**
 * draw_upc_barcode
 *
 * Draw a barcode for a UPC number.
 *
 * @version 0.3
 * @author Contributors at eXorithm
 * @link /algorithm/view/draw_upc_barcode Listing at eXorithm
 * @link /algorithm/history/draw_upc_barcode History at eXorithm
 * @license /home/show/license
 *
 * @param mixed $number The 12-digit UPC number.
 * @param bool $show_numbers Whether to draw the numbers at the bottom of the barcode.
 * @return resource GD image
 */
function draw_upc_barcode($number='925853043217',$show_numbers=true)
{
	$number = str_replace(array('-',' '), '', $number);
	
	if (strlen($number)!=12)
		throw new Exception("UPC number must have 12 digits");
	
	for ($i=0;$i<12;$i++) {
		if (!is_numeric($number[$i]))
			throw new Exception("UPC number must contain only digits");
	}
	
	$lcodes = array(
		'0001101',
		'0011001',
		'0010011',
		'0111101',
		'0100011',
		'0110001',
		'0101111',
		'0111011',
		'0110111',
		'0001011',
	);
	
	$rcodes = array(
		'1110010',
		'1100110',
		'1101100',
		'1000010',
		'1011100',
		'1001110',
		'1010000',
		'1000100',
		'1001000',
		'1110100',
	);
	
	$code = '101';
	for ($i=0;$i<6;$i++) {
		$code .= $lcodes[$number[$i]];
	}
	$code .= '01010';
	for ($i=6;$i<12;$i++) {
		$code .= $rcodes[$number[$i]];
	}
	$code .= '101';
	
	// create image
	$width=190;
	$height=100;
	$image = image_create_alpha($width, $height);
	
	$white = imagecolorallocate($image, 255, 255, 255);
	imagefilledrectangle($image, 0, 0, $width, $height, $white);
	
	// draw lines
	$black = imagecolorallocate($image, 0, 0, 0);
	for ($i=0;$i<strlen($code);$i++) {
		if ($code[$i]=='1') {
			imageline($image, $i*2,0, $i*2, $height, $black);
			imageline($image, $i*2+1,0, $i*2+1, $height, $black);
		}
	}
	
	// draw numbers
	if ($show_numbers) {
		imagefilledrectangle($image, 6, $height-16, 90, $height, $white);
		imagefilledrectangle($image, 98, $height-16, 182, $height, $white);
		for ($i=0;$i<6;$i++) {
			imagestring($image, 2, 11+$i*14, $height-14, $number[$i], $black);
		}
		for ($i=6;$i<12;$i++) {
			imagestring($image, 2, 19+$i*14, $height-14, $number[$i], $black);
		}
	}
	
	return $image;
}

/**
 * image_create_alpha
 *
 * Helper function to create a new blank image with transparency.
 *
 * @version 0.1
 * @author Contributors at eXorithm
 * @link /algorithm/view/image_create_alpha Listing at eXorithm
 * @link /algorithm/history/image_create_alpha History at eXorithm
 * @license /home/show/license
 *
 * @param mixed $width 
 * @param mixed $height 
 * @return resource GD image
 */
function image_create_alpha($width='',$height='')
{
	// Create a normal image and apply required settings
	$img = imagecreatetruecolor($width, $height);
	imagealphablending($img, false);
	imagesavealpha($img, true);
	
	// Apply the transparent background
	$trans = imagecolorallocatealpha($img, 0, 0, 0, 127);
	for ($x = 0; $x < $width; $x++)
	{
		for ($y = 0; $y < $height; $y++)
		{
			imagesetpixel($img, $x, $y, $trans);
		}
	}
	
	return $img;
}

?>

eXorithm – Execute Algorithm: View / Run Algorithm surface_oblate_spheroid

function surface_oblate_spheroid ($polar_radius$equatorial_radius
{
  $x = acos( $polar_radius / $equatorial_radius );
  $e2 = $equatorial_radius * $equatorial_radius
  $p2 = $polar_radius * $polar_radius
  $abx = $polar_radius * $equatorial_radius * $x
  $area = 2 * pi() * ( ($e2) + ($p2 / sin$x)) * log((1+sin$x))/cos$x)) );
  return $area
} 

Address Elevation

<?php

/**
 * address_elevation
 *
 * Returns the elevation (in meters) above sea level for an address.
 *
 * @version 0.2
 * @author Contributors at eXorithm
 * @link /algorithm/view/address_elevation Listing at eXorithm
 * @link /algorithm/history/address_elevation History at eXorithm
 * @license /home/show/license
 *
 * @param mixed $address The address to get the elevation for.
 * @return mixed
 */
function address_elevation($address='Denver, Colorado')
{
	// get the lat/long for this address
	$data = file_get_contents("http://maps.google.com/maps/geo?output=csv&q=".urlencode($address));
	$arr = explode(",", $data);
	if (count($arr)>=4) {
		if ($arr[0]==200) {
			// get the elevation for this lat/long
			$data = file_get_contents("http://maps.googleapis.com/maps/api/elevation/xml?sensor=false&locations=".$arr[2].','.$arr[3]);
			$obj = simplexml_load_string($data);
			if ($obj instanceof SimpleXMLElement) {
				$obj = (array) $obj;
				$obj = $obj['result'];
				if ($obj instanceof SimpleXMLElement) {
					$obj = (array) $obj;
					return $obj['elevation'];
				} else {
					throw new Exception('Elevation lookup failed');
				}
			} else {
				throw new Exception('Elevation lookup failed');
			}
		} else {
			throw new Exception('Address lookup failed');
		}
	} else {
		throw new Exception('Address lookup failed');
	}
}

?>