Zum Inhalt
Gruppenbildung
Aus ProgrammingWiki
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 hasLetterAtIndex = 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=0; i < maxLength; i++){ for(var c=0; c < chars.length; c++){ var p = {character:chars[c],position:i}; params.push(p); } } return [{f:hasLetterAtIndex, 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); } var rec = function(p, len, rest, arr){ if(len == 0) return arr; var lc = JSON.parse(JSON.stringify(rest)); var e = lc.splice(p,1); arr.push(e); for(var i=0; i < lc.length; i++){ rec(i, len-1, lc, arr.slice(0)); } }; var all = rec(0,Groups,separatedGroups,[]); console.log("We created "+all.length+" combinations of groups."); } findBestGroups(); // for each group we want a function to select n/Groups names from Names list without duplicates
ausführen
Seite
Quelltext
Versionen/Autoren
Konto registrieren
Anmelden
Navigation
Startseite
Letzte Änderungen
Alle Seiten
Einführungskurs
Hilfe
Dateien
Suche
Suchen
Werkzeuge
Links auf diese Seite
Spezialseiten