Cipher Discussions | Algorithms | HackerRank
  • + 0 comments
    function getValue(a,xor) {
        if(xor === 0) {
            if(a === 0) return 0;
            if(a === 1) return 1;
        }
        if(xor == 1) {
            if(a === 0) return 1;
            if(a === 1) return 0;        
        }
    }
    function cipher(k, s) {
        // Write your code here
        let n = s.length - k + 1;
        let arr = Array(n).fill(-1);
        arr[0] = parseInt(s[0]);
        let i=1;
        let currentXor = 0;
        while(i<n) {
            let left = i - k + 1 >= 0 ? i - k + 1 : 0;
            if(left > 0) {
                currentXor ^= arr[left-1]; 
            }
            currentXor ^= arr[i-1];
            arr[i] = getValue(currentXor, parseInt(s[i]));
            i++;
        }
        return arr.join('');
    }