/** * @param Base[] $bases * @param Output $output * @return Output[] */ private function keepChange(array $bases, Output $output) { /** @var Fraction $sum */ $sum = array_reduce($bases, function (Fraction $sum, Base $base) { return $sum->plus($base->getOutput()->getValue()); }, new Fraction(0)); if ($sum == $output->getValue()) { return [$output]; } return [$output, new Output(new Binary(null), $sum->minus($output->getValue()))]; }
private function OutputToArray(Output $output, Transcoder $transcoder) { return ['to' => $transcoder->encode($output->getTarget()->getData()), 'val' => $this->FractionToArray($output->getValue())]; }