¿La matriz es cíclica o no?
tareas: ["a","b"]
dependencias: ["a:b"]
resultado: no cíclico
explicación: primero "b" ejecuta que "a" ejecuta
tareas: ["a","b","c"]
dependencias: ["a:b","b:c","c:a"]
resultado: cíclico
explicación: a dependiente de b , b dependiente c de nuevo c dependiente de a (bucle)
tareas: ["a", "b", "c", 'd', 'e']
dependencias: ["a:b", "c:d",'d:e','e:c']
resultado: cíclico
explicación: c->d, d->e, e->c (bucle)
El siguiente es mi código y no funciona para cíclico. alguien por favor ayudeme en esto
const cyclicOrNot = () => { var tasks = ["a", "b", "c",] , dependencies = ["a:b","b:c", "c:a",], result = [] var found = false dependencies.map(i=>{ var dependentitem = i.split(':')[0]; var cyclicResult= checkCyclic(i,dependencies,dependentitem,found); console.log(cyclicResult) if(cyclicResult) { return "cyclic" } else { return "not cyclic" } }) } const checkCyclic = (i,dep,item,found) => { return dep.every(d=>{ if (i.split(':')[1]===d.split(':')[0]) { if(item===d.split(':')[0]){ found = true return found } else { checkCyclic(d,dep,item,found); } return found } }) }Hola, Atchutha rama reddy, prueba el siguiente código:
const cyclicOrNot=(task,dep)=>{ let depA = [],depB=[],isCyclic=false; dep.map(d=>{ let dr = d.split(':'); depA.push(dr[0]);depB.push(dr[1]); }); depA.map(a=>{ if(depB.indexOf(a)!==-1){ let opsA = depA[depB.indexOf(a)]; isCyclic = (depB.indexOf(opsA)!==-1)?true:isCyclic; } }); console.log(dep.toString()+' is '+(isCyclic?'Cyclic':'Not Cyclic')); return isCyclic; } var tasks = ["a","b"],dependencies = ["a:b"]; cyclicOrNot(tasks,dependencies); var tasks = ["a", "b", "c",],dependencies = ["a:b","b:c","c:a"]; cyclicOrNot(tasks,dependencies); var tasks = ["a", "b", "c",'d','e'],dependencies = ["a:b", "c:d",'d:e','e:c']; cyclicOrNot(tasks,dependencies);