adaptive's notebooks

  • luhn-alg - /adaptive/luhn-alg
    Last edited 4 years ago
    const LuhnAlgorithm = num=> { const inputNum = num.toString(); let sum = 0; let doubleUp = false; /* from the right to left, double every other digit starting with the second to last digit.*/ for (let i = inputNum.length - 1; i >= 0; i--) { let curDigit = parseInt(inputNum.charAt(i)); /* double every other digit starting with the second to last digit */ if (doubleUp) { /* doubled number is greater than 9 than subtracted 9 */ if (curDigit * 2 > 9) { sum += curDigit * 2 - 9; } else { sum += curDigit * 2; } } else { sum += curDigit; } doubleUp = !doubleUp; } return sum % 10 == 0 ? true : false; }
  • boolean array compression - /adaptive/boolean-array-compression
    Last edited 4 years ago
    const data = [1,0,0,0,1,0,1,1,1,0,1,0,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,0,1,1,0,1] const pack = (values) => { let chunks = values.match(/.{1,16}/g), packed = ""; for (let i = 0; i < chunks.length; i++) { packed += String.fromCharCode(parseInt(chunks[i], 2)); } return packed; }; const unpack = (packed) => { let values = ""; for (let i = 0; i < packed.length; i++) { values += packed.charCodeAt(i).toString(2); } return values; }; let packed = pack(data.join("")); let unpacked = unpack(packed); console.log(data.length, data.join(""), unpacked);
  • ByteSize - /adaptive/bytesize
    Last edited 4 years ago
    const Blob = require('node-blob'); const ByteSize = str => new Blob([str]).size console.log(ByteSize("HUgo"))