interview puzzle

sum the number of connected segments of this matrix.

by edwardsharp

CSS

body{
  font-family: san-serrif;
}

JavaScript

/* so i failed this interview question; but i'm stubborn, tho.
 * :/
 * given the matrix below
 * find the 1 values that are clustered together:
 * either next to (left or right) or above or below.
 * then replace those 1 values with how many are clustered.
*/

const matrix = [
  [0,1,0,0,0,0,1,1,1,1],
  [0,0,1,0,0,0,0,1,0,1],
  [0,0,1,0,0,1,0,0,0,1],
  [1,0,1,0,1,1,0,0,1,1],
  [1,1,0,0,0,0,1,1,0,0],
  [0,0,1,1,1,0,0,0,0,1],
]
let clusters = [];
let vertz = {};

function yyC(k, i) {
  k = parseInt(k);
  i = parseInt(i);
  //forward
  for (let z = i; z < 10; z++) {
    if (matrix[k][z]) {
      vertz[`${k}:${z}`] = 1;
    } else { break; }
  }
  //backward
  for (let z = i; z > -1; z--) {
    if (matrix[k][z]) {
      vertz[`${k}:${z}`] = 1;
    } else { break; }
  }
}

function zC(x,i){
  //go up
  for (let k = x; k > -1; k--) {
    if (matrix[k][i]) {
      vertz[`${k}:${i}`] = 1;
      yyC(k,i);
    } else { break; }
  }
  //go down
  for (let k = x; k < 6; k++) {
    if (matrix[k][i]) {
      vertz[`${k}:${i}`] = 1;
      yyC(k,i);
    } else { break; }
  }
}

function yC(k, i) {
  k = parseInt(k);
  i = parseInt(i);
  //forward
  for (let z = i; z < 10; z++) {
    if (matrix[k][z]) {
      vertz[`${k}:${z}`] = 1;
      zC(k,z);
    } else { break; }
  }
  //backward
  for (let z = i; z > -1; z--) {
    if (matrix[k][z]) {
      vertz[`${k}:${z}`] = 1;
      zC(k,z);
    } else { break; }
  }
}

function xC(x,i){
  //go up
  for (let k = x; k > -1; k--) {
    if (matrix[k][i]) {
      vertz[`${k}:${i}`] = 1;
      //also go forward/backward.
      yC(k, i);
    } else { break; }
  }
  //go down
  for (let k = x; k < 6; k++) {
    if (matrix[k][i]) {
      vertz[`${k}:${i}`] = 1;
      //also go forward/backward.
      yC(k, i);
    } else { break; }
  }
}

function nC(x, y) {
  x = parseInt(x);
  y = parseInt(y);
  vertz = {};

  //check here & go forward.
  for (let i = y; i < 10; i++) {
    if (matrix[x][i]) {
      vertz[`${x}:${i}`] = 1;
      xC(x,i);
   ...