aboutsummaryrefslogtreecommitdiff
path: root/challenge-146/khalid-anwar/php/ch-2.php
blob: a63a3a5046426f58801206b38a6d4c926225eca3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
//////////////////////////////////////////////////////
// Fraction Tree Solution : Designed by Khalid Anwar//
//                       1/1                        //
//                  /            \                  //
//             1/2                 2/1              //
//           /    \                 /     \         //
//      1/3	  3/2            2/3   3/1          //
//     /   \        /  \        /  \       /  \     //
//  1/4     4/3	 3/5   5/2    2/5  5/3   3/4  4/1   //
// ************************************************ //
// Please note, Its working code but Not fully      //
// optimized , can be checked manually by providing //
// member detail from below itself, please refer    // 
// diagram above for Fraction Tree.                 //     
//////////////////////////////////////////////////////

function getNumeratorDenominator($fraction) 
{
    preg_match('/^(?P<whole>\d+)?\s?((?P<numerator>\d+)\/(?P<denominator>\d+))?$/', $fraction, $components);
    // Extract numerator, and denominator components
    $numerator = $components['numerator'] ?: 0;
    $denominator = $components['denominator'] ?: 0;
   return $components;
}

function getParent($c, $d){
	$parent = Array();
	if ($c > $d){ 
		$parent['p_nominator'] = $c-$d;
		$parent['p_denominator'] = $d;
	}else{ 
		$parent['p_nominator'] = $c;
		$parent['p_denominator'] = $d-$c;
	}
	return $parent;
}

// Testing of member input, first input is set as default in this code. Others can be tested by uncommenting it accordingly
// online php editor reference : https://paiza.io/en/projects/new

$member = '3/5'; //input 1
//$member = '4/3'; //input 2
//$member = '3/4';  //input 3

$var = getNumeratorDenominator($member);

echo "For member =".$member."\n";
$parent = getParent($var['numerator'],$var['denominator']);
echo "Parent = ".$parent['p_nominator']."/".$parent['p_denominator'];
echo " and ";
$grandParent = getParent($parent['p_nominator'],$parent['p_denominator']);
echo "GrandParent = ".$grandParent['p_nominator']."/".$grandParent['p_denominator'];

?>