JSFiddle - React, Tailwind, and code Playground

by Xavier L'Heureux

JavaScript

var foo = [
	[0,0,0,0,0,0,0,0,0,0],
	[0,0,0,0,0,0,0,0,0,0],
	[0,0,0,0,1,1,1,0,0,0],
	[0,0,0,0,1,0,1,0,0,0],
	[0,0,0,0,1,0,1,0,0,0],
	[0,0,1,0,0,0,0,0,0,0],
	[0,0,1,0,0,0,1,0,0,0],
	[0,0,1,0,1,0,0,0,0,0],
	[0,0,0,0,0,0,0,0,0,0],
	[0,0,0,0,0,0,0,0,0,0]
];

var rows = 10;
var columns = 10;

function numTouching1(x, y) {
    return ((x > 0) ? foo[x - 1][y] : 0) + ((x < rows-1) ? foo[x + 1][y] : 0) + ((y > 0) ? foo[x][y - 1] : 0) + ((y < columns-1) ? foo[x][y + 1] : 0);
}

function extractLoop() {
    for (var i = 0; i < rows; i++) {
        for (var j = 0; j < columns; j++) {
            if (foo[i][j] === 1 && numTouching1(i, j) === 1) {
                foo[i][j] = 0;
                extractLoop(); break;
            }
        }
    }
}

function validLoop(){
  extractLoop();
    alert(foo.join("\n"));
  for(var i = 0; i < rows; i++){
    for(var j = 0; j < columns; j++){
      if(foo[i][j] === 1 && numTouching1(i,j) == 2) {
        return true;
      }
    }
  }
  return false;
}

alert(validLoop()?"True":"False");