functions.php
<?php
/**
*
* @param $nums array<int index, int number>
* @return array<int index, int diff_number>
*/
function find_differences(array $nums): array{
$diffs = [];
for ($i = 0; $i < count($nums) - 1; $i+=1) {
$left = $nums[$i];
$right = $nums[$i+1];
$diff = $right - $left;
$diffs[] = $diff;
}
return $diffs;
}
function all_zero(array $nums): bool {
foreach ($nums as $num){
if ($num!=0)return false;
}
return true;
}
function get_zeroed_stack(array $nums): array{
if (all_zero($nums))return [];
//$stack = [];
$diffs = find_differences($nums);
echo "\n\n\nNUMS\n";
print_r($nums);
echo "\n\n\nDiffs\n";
print_r($diffs);
////exit;
//$stack[] = $diffs;
if (all_zero($diffs))return [$diffs];
return array_merge([$diffs], get_zeroed_stack($diffs));
}
function extend_zeroed_stack(array $num_stack): array {
global $ops;
$stack_index = count($num_stack) - 1;
$num_stack[$stack_index][] = 0;
$last_num_added = 0;
$last_num_index = count($num_stack[$stack_index])-1;
for (--$stack_index;$stack_index>=0;$stack_index--){
echo "\nStack Index: $stack_index";
echo "\nNums This Row: ".implode(" ",$num_stack[$stack_index]);
echo "\nLastnum_added: ".$last_num_added;
$last_num_added =
$last_num_added
+ $num_stack[$stack_index][$last_num_index++];
$ops++;
$num_stack[$stack_index][] = $last_num_added;
}
return $num_stack;
}
function extend_stack_left(array $num_stack): array {
$stack_index = count($num_stack) - 1;
$num_stack[$stack_index][] = 0;
$last_num_added = 0;
$last_num_index = 0;
for (--$stack_index;$stack_index>=0;$stack_index--){
echo "\nStack Index: $stack_index";
echo "\nNums This Row: ".implode(" ",$num_stack[$stack_index]);
echo "\nLastnum_added: ".$last_num_added;
$last_num_added =
$num_stack[$stack_index][0]
- $last_num_added
;
array_unshift($num_stack[$stack_index],$last_num_added);
//$num_stack[$stack_index][] = $last_num_added;
}
return $num_stack;
}