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