JSFiddle - React, Tailwind, and code Playground

by evgkch

JavaScript

const fstHalf = n => x => x & ((1 << (n / 2)) - 1),
			scdHalf = n => x => x >> (n / 2);

const T = n => x => {
	const fst = fstHalf(n)(x);
  const scd = scdHalf(n)(x);
  
	return n == 1
  	? x
    : T(n / 2)(fst) ^ (T(n / 2)(fst ^ scd) << (n / 2));
}