You are viewing a single comment's thread. Return to all comments →
PHP solution
<?php function calcSum(array $lines) { $getLineSum = static function(array $values, bool $isAll=true) { $lineSum=0; foreach ($values as $key=>$value) { if ($isAll) $lineSum+=$value; elseif($key===1) $lineSum+=$value; } return $lineSum; }; $sum=0; foreach($lines as $key=>$line) { $key==1 ? $sum+=$getLineSum($line,false) : $sum+=$getLineSum($line); } return $sum; } function getHourglass(int $offset, array $lines) { $res=[]; foreach($lines as $key=>$line) { for($i=$offset;$i<$offset+4;$i++) { if (!isset($line[$i])) break; $result = array_slice($line,$offset,3); if (count($result)!==3) continue; $res[$key]=$result; } } return $res; } function hourglassSum($arr) { $max=null; for($i=0;$i<count($arr);$i++) { if (!isset($arr[$i+1])||!isset($arr[$i+2])) break; $line1=$arr[$i]; $line2=$arr[$i+1]; $line3=$arr[$i+2]; for($j=0;$j<count($line1);$j++) { $hg=getHourglass($j,[$line1,$line2,$line3]); if (count($hg)!==3) continue; $sum=calcSum($hg); ////Uncomment for debug // print('HG:'); // foreach($hg as $key=>$v) { // print(sprintf("%s:(%s), ",$key,implode(',',$v))); // } // print("\n"); // print(sprintf("sum=%s max=%s\n",$sum,$max)); $max=max($sum,$max); } } return $max; }
Seems like cookies are disabled on this browser, please enable them to open this website
An unexpected error occurred. Please try reloading the page. If problem persists, please contact support@hackerrank.com
2D Array - DS
You are viewing a single comment's thread. Return to all comments →
PHP solution