طيب كذا
كود PHP:
/*
*
* Triangles Algorithm - Last edit : 20 July 2007
* @author: Flasher <flasher[at]flasher[dot]ws>
*
*/
class Triangle
{
var $sides = array();
var $dimensions = array();
var $chars = array();
function Triangle($input)
{
if(strlen($input) != 3)
{
die("WrongInput.");
//throw new Exception("WrongInput");
}
for($i = 1;$i<=26; $i++)
{
$this->chars[] = chr(64+$i);
}
$this->sides = str_split ($input);
$this->CalcSide($this->sides[0],$this->sides[1]);
$this->CalcSide($this->sides[1],$this->sides[2]);
$this->CalcSide($this->sides[2],$this->sides[0]);
$this->Display();
}
function CalcSide($s1,$s2)
{
if(!in_array($s1,$this->chars) || !in_array($s2,$this->chars) )
{
die("WrongInput.");
//throw new Exception("WrongInput");
}
$key1 = array_pop(array_keys($this->chars,$s1));
$key2 = array_pop(array_keys($this->chars,$s2));
$key1 -= $key2;
$offset = abs( $key1 );
array_push($this->dimensions, array($s1.$s2,$this->Sum($offset)));
}
function Sum($number)
{
$sum = 0;
for($i = 0;$i<= $number;$i++)
{
$sum += $i;
}
return $sum;
}
function Display()
{
echo "<pre>";
printf("%10s\n",$this->sides[0] );$k = 0;
for($i=10;$i>0;$i--)
{
printf("%{$i}s","/" );
printf("%-{$k}s%-{$i}s\n","","\\" );
$k++;$k++;
}
printf("%-'-20s\n","");
printf("%-10s%10s\n",$this->sides[1],$this->sides[2] );
$result = 0;
foreach($this->dimensions as $a)
{
echo $a[0] . " = " . $a[1] . "\n";
$result += pow($a[1],2);
}
echo "Result: $result\n==========\n";
echo "</pre>";
}
}
new Triangle("ABC");
new Triangle("ABB");
new Triangle("AAG");
if(!function_exists('str_split')){
function str_split($string,$split_length=1){
$count = strlen($string);
if($split_length < 1){
return false;
} elseif($split_length > $count){
return array($string);
} else {
$num = (int)ceil($count/$split_length);
$ret = array();
for($i=0;$i<$num;$i++){
$ret[] = substr($string,$i*$split_length,$split_length);
}
return $ret;
}
}
}
اخي daif تفكيرك حلو .. بس جرب AG مفروض يطلع 21 على قاعدتك 7 ..