function isCycle(arr){ let i = 0 let itemsToTouch = arr.length while(arr[i]!==0){ itemsToTouch-- const val = arr[i] arr[i]=0 if(i +val >=arr.length){ i = (i + val) % arr.length }else if(i+val <0){ i = arr.length + ((i + val)% arr.length) }else{ i=i+val } } return arr.every(item=>item===0) && itemsToTouch === 0 && i === 0 } console.log(isCycle([1,1])) console.log(isCycle([2,2,2])) console.log(isCycle([1,-4])) console.log(isCycle([1,-4,2,2,-1])) console.log(isCycle([1,1,1,-2]))