<?php function sumCarries(array $array) { $columns = ['carries' => []]; // prepare matrix of 1-digit integers in columns -- ones, tens, hundreds, etc foreach ($array as $integer) { $columns[] = str_split(strrev($integer)); } // sum column values in ascending order and populate carry values // subsequent column sums need to include carried value for ($i = 0, $len = strlen(max($array)); $i < $len; ++$i) { $columns['carries'][$i + 1] = (int)(array_sum(array_column($columns, $i)) / 10); } // sum all populated carry values return array_sum($columns['carries']); } $tests = [ [123, 456], // no carries in any column [555, 555], // 1 ones, 1 tens, 1 hundreds [123, 594], // 1 tens [123, 123, 804], // 1 ones, 1 hundreds [99, 9, 99, 99, 99], // 4 ones, 4 hundreds [9,9,9,9,9,9,9,9,9,9,9,9], // 10 ones ]; var_export(array_map('sumCarries', $tests));
You have javascript disabled. You will not be able to edit any code.