aboutsummaryrefslogtreecommitdiff
path: root/challenge-146/khalid-anwar/php/ch-2.php
diff options
context:
space:
mode:
authormohammad khalid anwar <khalidanwar123@yahoo.com>2022-01-10 01:46:30 +0530
committermohammad khalid anwar <khalidanwar123@yahoo.com>2022-01-10 01:46:30 +0530
commit48b7a6a3696f0557c667adce9b0b03d845213ac9 (patch)
tree7b35103b42c9b8926108657d4f029ba70c9b9a5a /challenge-146/khalid-anwar/php/ch-2.php
parent5d774188960c533ff59b4b9a42285b96f893f8c2 (diff)
downloadperlweeklychallenge-club-48b7a6a3696f0557c667adce9b0b03d845213ac9.tar.gz
perlweeklychallenge-club-48b7a6a3696f0557c667adce9b0b03d845213ac9.tar.bz2
perlweeklychallenge-club-48b7a6a3696f0557c667adce9b0b03d845213ac9.zip
Fraction Tree solution in PHP by Khalid Anwar challenge 146
Diffstat (limited to 'challenge-146/khalid-anwar/php/ch-2.php')
-rw-r--r--challenge-146/khalid-anwar/php/ch-2.php55
1 files changed, 55 insertions, 0 deletions
diff --git a/challenge-146/khalid-anwar/php/ch-2.php b/challenge-146/khalid-anwar/php/ch-2.php
new file mode 100644
index 0000000000..9e2daaa05e
--- /dev/null
+++ b/challenge-146/khalid-anwar/php/ch-2.php
@@ -0,0 +1,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'];
+
+?>