JSFiddle - React, Tailwind, and code Playground

by pinkduckpl

JavaScript

function stringToArray(str) {
    return str.split(",").map(function (r) {
        return r.split("-").map(function (e) {
            return e = parseInt(e, 10);
        });
    });
}

function findDomino(arrTemp, arrTarget) {
    var howToCut = [0];
    var longestRange = [0, 0];
    for (var i = 1; i < arrTemp.length; i++) {
        if (arrTemp[i - 1][1] !== arrTemp[i][0]) {
            howToCut.push(i);
        }
        if (i + 1 === arrTemp.length) {
            howToCut.push(arrTemp.length);
        }
    }
    for (let i = 0; i < howToCut.length; i++) {
        if ((howToCut[i + 1] - howToCut[i]) > (longestRange[1] - longestRange[0])) {
            longestRange[0] = howToCut[i]
            longestRange[1] = howToCut[i + 1]
        }
    }
    arrTarget = arrTemp.slice(longestRange[0], longestRange[1]);
    return arrTarget;
}

function arrayToString(arrTarget) {
    return arrTarget.map(function (r) {
        return r.join("-");
    }).join(",");
}

var str = "1-2,2-1,1-2,3-1,2-3,3-4,4-3,3-2,2-1,1-1,1-1,1-2,2-1,1-2,3-2,1-2";

var strDomino = "";
var arr = stringToArray(str);

arrTemp = arr.slice();
arrTarget = [];

strDomino = arrayToString(findDomino(arrTemp, arrTarget));
console.log(strDomino);