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