Is array is cyclic or not ?
tasks: ["a","b"]
dependencies: ["a:b"]
result: Not cyclic
explanation : first "b" executes that "a" executes
tasks: ["a","b","c"]
dependencies: ["a:b","b:c","c:a"]
result: cyclic
explanation : a dependent on b , b dependent c again c dependent on a (looping)
tasks: ["a", "b", "c",'d','e']
dependencies: ["a:b", "c:d",'d:e','e:c']
result: cyclic
explanation : c->d, d->e, e->c (loop)
Following is my code and it is not working for cyclic . someone please help me in this
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
}
})
}
Hello Atchutha rama reddy, please try bellow code :
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);