Barcode Width Mapper

by skibulk

JavaScript

// (C) 2021 skibulk

console.clear();

function generateBarcodes(numBars){
  var barcodes = [];
  var bars = [];
  
	var start = parseInt("1".padEnd(numBars, "0"), 3);
  for(var i=start; i<Math.pow(3, numBars); i++){
    bars = i.toString(3).split('');
    for(var bi=0; bi<bars.length; bi++) bars[bi]++;
    
    // barcodes.push(bars.join(''));
    
    barcodes.push(total(bars));
  }
  
  const counts = {};
  barcodes.forEach(function (x) { counts[x] = (counts[x] || 0) + 1; });

  console.log(numBars, total(barcodes), barcodes);
  console.log(numBars, counts);
  return barcodes;
}

// 16 Trinary Bits = 43,046,721
for(var i=4; i<=11; i++){
  generateBarcodes(i);
}

function total(arr){
  return arr.reduce((a, b) => a + b, 0);
}