JSFiddle - React, Tailwind, and code Playground

by evgkch

JavaScript

bitesBefore = length => x => ((1 << length) - 1) & x;

 bitesAfter = length => x => x >> length;

 indexFromVec = length => vec =>
  length > 2
    ? (indexFromVec(length >> 1)([bitesAfter(vec[0]), bitesAfter(vec[1])]) << length) ^ indexFromVec(length >> 1)([bitesBefore(vec[1], bitesBefore(vec[0]))])
    : (vec[1] << 1) ^ vec[0];