JSFiddle - React, Tailwind, and code Playground

Binary Double Delta Compression Test - Fail

by skibulk

JavaScript

console.clear();

// Just looking at the numbers, without flagging their bit lengths at this point

var int;
var data = [];
var dataBits = 0;

// State the difference for each number relative to the min or max value in the data

for(var i = 0; i < 50; i++){
	int = Math.floor(Math.random() * 1000);
  data.push(int);
  dataBits += int.toString(2).length;
}

data.sort(function(a,b){return a-b});

console.log(dataBits, data);

var min = data[0];
var max = data[data.length - 1];
// Include the min and max numbers
var data2 = "" + min.toString(2) + max.toString(2);

for(var i = 0; i < data.length; i++){
	var diffMin = data[i] - min;
  var diffMax = max - data[i];
  if( diffMin <= diffMax){
		// Flag 0 = relative to min
		data2 += "0" + diffMin.toString(2);
  } else {
  	// Flag 1 = relative to max
    data2 += "1" + diffMax.toString(2);
  }
}

console.log(data2.length, data2);

function isGreaterThan(a, b){
  return a / b % 1 ? true : false;
}

console.log(isGreaterThan(3,4));


/*
// Try giving the difference between the previous number and the current number
// If the difference to 0 is lower, use the original number
var current, change;
var bits = 0;
var data2 = [];
data2.push(data[0]);

for(var i = 0; i < 49; i++){
	change = data[i+1] - data[i];
  bits += change.toString(2).length;
	data2.push(change);
}

console.log(bits, data2);

bits = 0;
var data3 = [];
data3.push(data2[0]);

for(var i = 0; i < 49; i++){
  current = data2[i+1];
	change = current - data2[i];
  if(Math.abs(change) < current){
    // If negative, sign included in length
  	bits += change.toString(2).length;
    // If positive, add 1 bit for sign header
    if(change >= 0) bits++;
		data3.push(change);
  } else {
  	bits += current.toString(2).length;
    bits++; // Sign header
		data3.push(current);
  }
}

console.log(bits, data3);
*/