Category: Algorithm
eXorithm – Execute Algorithm: View / Run Algorithm frame_picture
function frame_picture ($image, $thickness
{
$color = get_average_color$image);
$image2 = imagecreatetruecolorimagesx$image)+$thickness$thickness
imagesy$image)+$thickness$thickness);
$r = hexdecsubstr$color, 0, 2));
$g = hexdecsubstr$color, 2, 2));
$b = hexdecsubstr$color, 4, 2));
$color = imagecolorallocate$image2, $r, $g, $b);
imagefilledrectangle$image2, 0, 0, imagesx$image2)-1, imagesy$image2)-1, $color);
imagecopy$image2, $image, $thickness, $thickness, 0, 0, imagesx$image)-1, imagesy$image)-1);
return $image2
}
eXorithm – Execute Algorithm: View / Run Algorithm volume_cube
function volume_cube ($width$height$depth
{
return ($width * $depth * $height);
}
eXorithm – Execute Algorithm: View / Run Algorithm country_population_graph
function country_population_graph ($country_list, $data_source
{
# ------- The external data comes from elsewhere, load it....
if ($data_source=='geonames') {
$valuesgeonames_populations$country_list);
} else if ($data_source=='freebase') {
$valuesfreebase_populations$country_list);
} else {
$valuesxithm_world_stats_population$country_list);
}
ksort$values);
// how much rounding to do for the numbers on the y-axis
$zeroes = strlen""roundmax$values)))-2;
$divs = roundmax$values)/10, $zeroes*-1);
$chrt = new stdClass
$chrt->cht = "bvs"
$chrt->chds = "0,"max$values);
$chrt->chxt = "x,y"
$chrt->chs = "600x300"
$chrt->chbh = "a"
$chrt->chxr = "1,0,"max$values).","$divs
$chrt->chxl="0:|"implode"|", array_keys$values));
$chrt->chd = "t:"implode",", $values);
return $chrt
}
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: History For Algorithm sum_list
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
}
eXorithm – Execute Algorithm: View / Run Algorithm reverse_factorial
function reverse_factorial ($factorial
{
$current = 1;
while ($factorial > $current) {
if ($factorial % $current) return -1;
$factorial = $factorial$current
$current++;
}
if ($factorial == $current) return $current
else return -1;
}
Stock Ticker
<?php /** * stock_ticker * * Generate an HTML stock ticker with current quotes. * * @version 3.2 * @author Contributors at eXorithm * @link /algorithm/view/stock_ticker Listing at eXorithm * @link /algorithm/history/stock_ticker History at eXorithm * @license /home/show/license * * @param array $symbols stocks to go in the ticker * @param string $background_color (hex color code) color of the ticker background * @param string $stock_color (hex color code) color of the stock symbols * @param string $price_color (hex color code) color of the prices * @param string $up_color (hex color code) color of gains * @param string $down_color (hex color code) color of loses * @param number $speed speed of scrolling * @return string HTML */ function stock_ticker($symbols=array(0=>'AAPL',1=>'GOOG',2=>'DOW',3=>'GCG13.CMX',4=>'P'),$background_color='dddddd',$stock_color='000000',$price_color='0000bb',$up_color='008000',$down_color='ff0000',$speed=6) { sort($symbols); if ($background_color==$stock_color) { // something's wrong, colors weren't specified $background_color = invert_color($background_color); } $return = '<div align="center"> <marquee bgcolor="#'.$background_color.'" loop="20" scrollamount="'.$speed.'">'; foreach ($symbols as $symbol) { $data = file_get_contents("http://quote.yahoo.com/d/quotes.csv?s=$symbol&f=sl1d1t1c1ohgv&e=.csv"); $values = explode(",", $data); $lasttrade = $values[1]; $change = $values[4]; $return .= "<span style=\"color:#$stock_color\">$symbol</span> "; $return .= "<span style=\"color:#$price_color\">$lasttrade</span> "; if ($change<0) $return .= "<span style=\"color:#$down_color\">$change</span> "; else $return .= "<span style=\"color:#$up_color\">$change</span> "; $return .= " "; } $return .= '</marque> </div>'; return $return; } /** * invert_color * * Invert a color. * * @version 0.1 * @author Contributors at eXorithm * @link /algorithm/view/invert_color Listing at eXorithm * @link /algorithm/history/invert_color History at eXorithm * @license /home/show/license * * @param string $color (hex color code) * @return string hex color code */ function invert_color($color='008080') { $new = ''; for ($i=0;$i<3;$i++){ $c = 255 - hexdec(substr($color,(2*$i),2)); $c = dechex($c); $new .= (strlen($c) < 2) ? '0'.$c : $c; } return $new; } ?>
eXorithm – Execute Algorithm: View / Run Algorithm simplify_equation
function simplify_equation ($equation
{
if (is_array$equation)) {
// first simply the parameters of the equation
$equation[1] = simplify_equation$equation[1]);
if (isset$equation[2])) {
$equation[2] = simplify_equation$equation[2]);
}
// simplify based on the operator
switch ($equation[0]) {
case '+'
if ((is_numeric$equation[1])) && (is_numeric$equation[2]))) {
return $equation[1]+$equation[2];
}
if ($equation[1]===0) {
return $equation[2];
}
if ($equation[2]===0) {
return $equation[1];
}
return $equation
case '-'
if ($equation[1]===$equation[2]) {
return 0;
}
if ((is_numeric$equation[1])) && (is_numeric$equation[2]))) {
return $equation[1]-$equation[2];
}
if ($equation[1]===0) {
return array'neg', $equation[2]);
}
if ($equation[2]===0) {
return $equation[1];
}
return $equation
case '*'
if ((is_numeric$equation[1])) && (is_numeric$equation[2]))) {
return $equation[1]*$equation[2];
}
if ($equation[1]===0) {
return 0;
}
if ($equation[2]===0) {
return 0;
}
if ($equation[1]===1) {
return $equation[2];
}
if ($equation[2]===1) {
return $equation[1];
}
return $equation
case '/'
if ($equation[2]===0) {
throw new Exception'division by zero');
}
if ($equation[1]===$equation[2]) {
return 1;
}
if ((is_numeric$equation[1])) && (is_numeric$equation[2]))) {
if (($equation[1] % $equation[2])==0) {
return $equation[1]/$equation[2];
} else {
// get the greastest common divisor
$gcd = gcd_euclid$equation[1], $equation[2]);
$equation[1] = $equation[1]/$gcd
$equation[2] = $equation[2]/$gcd
}
}
if ($equation[1]===0) {
return 0;
}
if ($equation[2]===1) {
return $equation[1];
}
return $equation
case '^'
if ((is_numeric$equation[1])) && (is_numeric$equation[2]))) {
return pow$equation[1], $equation[2]);
}
if ($equation[1]===0) {
return 0;
}
if ($equation[1]===1) {
return 1;
}
if ($equation[2]===0) {
return 1;
}
if ($equation[2]===1) {
return $equation[1];
}
return $equation
case 'neg'
if (is_array$equation[1])) {
if ($equation[1][0]=='neg') {
return $equation[1][1];
}
}
if (is_numeric$equation[1])) {
return $equation[1]*-1;
}
return $equation
case 'sqrt'
if (is_numeric$equation[1])) {
return sqrt$equation[1]);
}
return $equation
case 'log'
if ($equation[1]===1) {
return 0;
}
if ((is_numeric$equation[1])) && (is_numeric$equation[2]))) {
return log$equation[1], $equation[2]);
}
return $equation
case 'ln'
if (is_numeric$equation[1])) {
return log$equation[1]);
}
return $equation
case 'exp'
if (is_numeric$equation[1])) {
return exp$equation[1]);
}
return $equation
case 'root'
if ((is_numeric$equation[1])) && (is_numeric$equation[2]))) {
return pow$equation[1], 1/$equation[2]);
}
if ($equation[1]===0) {
return 0;
}
if ($equation[1]===1) {
return 1;
}
if ($equation[2]===0) {
throw new Exception'division by zero');
}
if ($equation[2]===1) {
return $equation[1];
}
return $equation
// trig
case 'sin'
if (is_numeric$equation[1])) {
return sin$equation[1]);
}
return $equation
case 'cos'
if (is_numeric$equation[1])) {
return cos$equation[1]);
}
return $equation
case 'tan'
if (is_numeric$equation[1])) {
return tan$equation[1]);
}
return $equation
case 'sec'
if (is_numeric$equation[1])) {
return 1/cos$equation[1]);
}
return $equation
case 'csc'
if (is_numeric$equation[1])) {
return 1/sin$equation[1]);
}
return $equation
case 'cot'
if (is_numeric$equation[1])) {
return 1/tan$equation[1]);
}
return $equation
// hyperbolic trig
case 'sinh'
if (is_numeric$equation[1])) {
return sinh$equation[1]);
}
return $equation
case 'cosh'
if (is_numeric$equation[1])) {
return cosh$equation[1]);
}
return $equation
case 'tanh'
if (is_numeric$equation[1])) {
return tanh$equation[1]);
}
return $equation
case 'sech'
if (is_numeric$equation[1])) {
return 1/cosh$equation[1]);
}
return $equation
case 'csch'
if (is_numeric$equation[1])) {
return 1/sinh$equation[1]);
}
return $equation
case 'coth'
if (is_numeric$equation[1])) {
return 1/tanh$equation[1]);
}
return $equation
// arc trig
case 'arcsin'
if (is_numeric$equation[1])) {
return asin$equation[1]);
}
return $equation
case 'arccos'
if (is_numeric$equation[1])) {
return acos$equation[1]);
}
return $equation
case 'arctan'
if (is_numeric$equation[1])) {
return atan$equation[1]);
}
return $equation
// inverse hyperbolic trig
case 'arsinh'
if (is_numeric$equation[1])) {
return asinh$equation[1]);
}
return $equation
case 'arcosh'
if (is_numeric$equation[1])) {
return acosh$equation[1]);
}
return $equation
case 'artanh'
if (is_numeric$equation[1])) {
return atanh$equation[1]);
}
return $equation
default
throw new Exception'usupported operator '$operator);
}
}
return $equation
}