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);