Gruppenbildung

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
<run id="611f4cf1e8ba0">
var Names = ["Franz","Susi","Max","Moritz","Egon","Lisa","Lara","Boris","Tamara","Kathrin","Tom","Daniel","Hans"];

var Groups = 5; // how many equally sized groups we like to have

// build a set of Objects for each Name so we can attach other attributes to the names later

var NameObjects = [];

for(var i=0; i < Names.length; i++){
  var n = {Name:Names[i]}; 
  NameObjects.push(n);
}


// we can have different functions to separate Names
var hasLetter = function(param){
  var list = [];
  for(var i=0; i < Names.length; i++){
    if(Names[i].length >= param.position)
      if(Names[i].toLowerCase()[param.position] == param.character) list.push(Names[i]);
  }
  return Names;
}


// now we can try all separateFunctions in all possible combinations and find the "best" combination 
// of function and param to separate the names in equal sized groups

function generateSeparateFunctions(){
  var chars = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
  var maxLength = 0;
  var params = [];
  for(var i=0; i < Names.length; i++) maxLength = Math.max(maxLength, Names[i].length);
  for(var i=1; i < maxLength; i++){
    for(var c=0; c < chars.length; c++){
      var p = {character:chars[c],position:i};
      params.push(p);
    }
  }
  return [{f:hasLetter, params:params}];
}

var separateFunctions = generateSeparateFunctions();
var separatedGroups = [];
for(var f=0; f < separateFunctions.length; f++){
  for(var p=0; p < separateFunctions[f].params.length; p++){
    var nameList = separateFunctions[f].f(separateFunctions[f].params[p]);
    var sg = {Names:nameList, f:separateFunctions[f].f, params:separateFunctions[f].params};
    separatedGroups.push(sg);
  }
}
console.log("We created "+separatedGroups.length+" groups of names.");

function findBestGroups(){
  var GroupObjects = [];
  for(var i=0; i < Groups; i++) {
    var g = {};
    GroupObjects.push(g);
  }
  
}


// for each group we want a function to select n/Groups names from Names list without duplicates



</run>