JSFiddle - React, Tailwind, and code Playground

by Josh Pullen

HTML

<button id="start">Start the (Extra) Madness</button>

JavaScript

var combine = function(a, min) {
    var fn = function(n, src, got, all) {
        if (n == 0) {
            if (got.length > 0) {
                all[all.length] = got;
            }
            return;
        }
        for (var j = 0; j < src.length; j++) {
            fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all);
        }
        return;
    }
    var all = [];
    for (var i = min; i < a.length; i++) {
        fn(i, a, [], all);
    }
    all.push(a);
    return all;
}

function checkSol(a) {
	function performMove(gridIn, piece) {
    	var grid = gridIn;
    	function toggle(pieces) {
        	for(n = 0; n < pieces.length; n++) {
            	grid[pieces[n]] = !(grid[pieces[n]]);
            }
        }
    	switch(piece) {
        	case 1:
            	toggle([1, 2, 6, 7]);
                break;
            case 2:
            	toggle([1, 2, 3, 7, 8]);
                break;
            case 3:
            	toggle([2,3,4,8,9]);
                break;
            case 4:
            	toggle([3,4,5,9,10]);
                break;
            case 5:
            	toggle([4,5,10,11]);
                break;
            case 6:
            	toggle([1,6,7,12,13]);
                break;
            case 7:
            	toggle([1,2,6,7,8,13,14]);
                break;
            case 8:
            	toggle([2,3,7,8,9,14,15]);
                break;
            case 9:
            	toggle([3,4,8,9,10,15,16]);
                break;
            case 10:
            	toggle([4,5,9,10,11,16,17]);
                break;
            case 11:
            	toggle([5,10,11,17,18]);
                break;
            case 12:
            	toggle([6,12,13,19,20]);
                break;
            case 13:
            	toggle([6,7,12,13,14,20,21]);
                break;
            case 14:
            	toggle([7,8,13,14,15,21,22]);
                break;
            case 15:
            	toggle([8,9,14,15,16,22,23]);
                break;
            case...