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'];
?>
|