bjorklund algorithm
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.7.0/lodash.min.js"></script>
JavaScript
// n number of intervals
// k number of pulses - k < n
// binary sequence of (k) 1's and (n-k) 0's
var n = 13;
var k = 5;
console.log(bjorklund(n, k));
function bjorklund(interval, pulses) {
var numberofzeros = interval - pulses;
var numberofones = pulses;
var zeros = [];
var ones = [];
for (var i = 0; i < numberofones; i++) {
ones.push(1);
}
for (var i = 0; i < numberofzeros; i++) {
zeros.push(0);
}
var r = _.zip(ones, zeros).map(function (item) {
if (item[0]) {
return item;
} else {
var i = [item[1]];
return i;
}
});
var r = _.partition(r, function (item) {
return item.length > 1;
});
var z = _.zip(r[0], r[1]).map(function (z) {
return _.flatten(_.compact(z));
});
return z;
}