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