Skip to content

Instantly share code, notes, and snippets.

@md2perpe
Created January 1, 2014 18:54
Show Gist options
  • Select an option

  • Save md2perpe/8210411 to your computer and use it in GitHub Desktop.

Select an option

Save md2perpe/8210411 to your computer and use it in GitHub Desktop.

Revisions

  1. md2perpe created this gist Jan 1, 2014.
    30 changes: 30 additions & 0 deletions permutations.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    function permutations(list)
    {
    // Empty list has one permutation
    if (list.length == 0)
    return [[]];


    var result = [];

    for (var i=0; i<list.length; i++)
    {
    // Clone list (kind of)
    var copy = Object.create(list);

    // Cut one element from list
    var head = copy.splice(i, 1);

    // Permute rest of list
    var rest = permutations(copy);

    // Add head to each permutation of rest of list
    for (var j=0; j<rest.length; j++)
    {
    var next = head.concat(rest[j]);
    result.push(next);
    }
    }

    return result;
    }