Skip to content

Instantly share code, notes, and snippets.

@ReeSilva
Created February 1, 2016 04:31
Show Gist options
  • Save ReeSilva/866c145cc8690e23c582 to your computer and use it in GitHub Desktop.
Save ReeSilva/866c145cc8690e23c582 to your computer and use it in GitHub Desktop.
Spiral matrix
<?php
class lisbonInterviewEx1
{
public function makeSpiral($matrix) {
$finalArray = array();
$arithmeticalNum = 1;
$numRows = count($matrix);
$numCols = count($matrix[0]);
$centerCol = $this->calculateCenter($numCols);
$centerRow = $this->calculateCenter($numRows);
array_push($finalArray, $matrix[$centerRow][$centerCol]);
while ($arithmeticalNum < $numRows) {
if ($arithmeticalNum %2 == 0) {
for ($i = 1; $i <= $arithmeticalNum; $i++) {
$centerCol++;
array_push($finalArray, $matrix[$centerRow][$centerCol]);
}
for ($i = 1; $i <= $arithmeticalNum; $i++) {
$centerRow++;
array_push($finalArray, $matrix[$centerRow][$centerCol]);
}
} else {
for ($i = 1; $i <= $arithmeticalNum; $i++) {
$centerCol--;
array_push($finalArray, $matrix[$centerRow][$centerCol]);
}
for ($i = 1; $i <= $arithmeticalNum; $i++) {
$centerRow--;
array_push($finalArray, $matrix[$centerRow][$centerCol]);
}
}
if ($arithmeticalNum == $numRows - 1) {
for ($i = 1; $i <= $arithmeticalNum; $i++) {
$centerCol--;
array_push($finalArray, $matrix[$centerRow][$centerCol]);
}
}
$arithmeticalNum++;
}
print_r($finalArray);
}
private function calculateCenter($total) {
$center = $total/2;
return $center;
}
}
$array = array(
array( 1,34, 32, 2, 4),
array( 3,32, 13,19,89),
array(56,11, 7, 9,95),
array(14,90,333,23, 1),
array( 5,33, 54,23,41)
);
$lisbonInterview = new lisbonInterviewEx1;
$lisbonInterview->makeSpiral($array);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment