/** * @TODO * * @param MaxiInteger $a * @param MaxiInteger $b * @return MaxiInteger */ private function realSum($a, $b) { $result = ''; $plopA = $a->getReverseValue(); $plopB = $b->getReverseValue(); $maxLength = max(strlen($plopA), strlen($plopB)); $plopA = str_pad($plopA, $maxLength - strlen($plopA), "0"); $plopB = str_pad($plopB, $maxLength - strlen($plopB), "0"); $i = 0; $retenue = 0; while ($i < $maxLength) { $sum = $plopA[$i] + $plopB[$i] + $retenue; if ($sum >= 10) { $sum -= 10; $retenue = 1; } else { $retenue = 0; } $result .= $sum; $i++; } if ($retenue > 0) { $result .= $retenue; } return new MaxiInteger(strrev($result)); }
/** * @TODO * * @param MaxiInteger $a * @param MaxiInteger $b * @return MaxiInteger */ private function realSum($a, $b) { return new MaxiInteger(trim(preg_replace('/\\s+/', '', str_replace(['\\', '\\n'], '', shell_exec('echo "' . $a->getValue() . '+' . $b->getValue() . '" | bc'))))); }