JSFiddle - React, Tailwind, and code Playground

by SwampFall

JavaScript

var cols = 3;
var rows = 3;

function gridInit() {
	var g = [];
  for (var r = 0; r < rows; r++) {
  	g.push([]);
  	for (var c = 0; c < cols; c++) {
    	g[r].push(0);
    }
  }
  return g;
}

solve();

function solve() {
	for (var r = 0; r < rows / 2; r++) {
  	for (var c = 0; c < cols / 2; c++) {
    	var grid = gridInit();
      solveStep(r, c, copy(grid), 1);
    }
  }
}

function solveStep(r, c, grid, sc) {
	grid[r][c] = sc;
  
  console.log(grid);
 	// c
  gC = gridC(r, c, grid);
  console.log(gC);
  //solveStep(r + 1, c, gC, sc + 1);
  // f
  gF = gridF(r, c, grid);
  console.log(gF);
  
  // n
  gN = gridN(r, c, grid);
  
}

function gridC(r, c, g) {
	return gridK(r, c, 1, g);
}
function gridF(r, c, g) {
	return gridK(r, c, 2, g);
}
function gridN(r, c, g) {

}

function gridK(r, c, d, g) {
	let grid = copy(g);
  for (let rr = 0; rr < rows; rr++) {
  	for (let cc = 0; cc < cols; cc++) {
    	if (grid[rr][cc] <= 0) {
      	grid[rr][cc]--;
      }
    }
  }
	for (let rr = r - d; rr <= r + d; rr++) {
    if (rr >= 0 && rr < rows) {
  		for (let cc = c - d; cc <= c + d; cc++) {
      	if (cc >= 0 && cc < cols) {
        	if (grid[rr][cc] == -1) {
            if (Math.abs(rr - r) == d || Math.abs(cc - c) == d) {
              grid[rr][cc] = 0;
            }
          }
        }
      }
    }
  }
  return grid;
}

function copy(g) {
	return JSON.parse(JSON.stringify(g));
}