Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// Seeding algorithm
- /// Each team plays three times
- /// Shouldn't play the same team
- class ThreeGGAlgorithm {
- List<String> teams;
- List<List<String>> bracket = [];
- int maxRounds;
- bool bye;
- void start(List<String> origTeams) {
- if (origTeams.length < 4) {
- return;
- }
- maxRounds = origTeams.length - 1;
- teams = List<String>.from(origTeams);
- if (teams.length.isOdd) {
- teams.add('bye_week');
- }
- var splitTeams = splitList(teams);
- // print(splitTeams[0]);
- // print(splitTeams[1]);
- var rotatedTeams = splitTeams;
- // print(rotatedTeams[0]);
- // print(rotatedTeams[1]);
- for (var i = 2; i <= maxRounds; i++) {
- // print('Round: $i');
- // print('------------');
- for (var b = 0; b < rotatedTeams[0].length; b++) {
- bracket.add([rotatedTeams[0][b], rotatedTeams[1][b]]);
- }
- rotatedTeams = rotateTeams(splitTeams);
- }
- print(bracket);
- }
- List<List<String>> splitList(List<String> split) {
- var first = split.sublist(0, split.length ~/ 2);
- var last = split.sublist(split.length ~/ 2);
- return []..add(first)..add(last.reversed.toList());
- }
- List<List<String>> rotateTeams(List<List<String>> rotate) {
- var firstList = rotate[0];
- var secondList = rotate[1];
- var itemToMove = firstList.removeLast();
- secondList.insert(secondList.length - 1, itemToMove);
- var moveToFirst = secondList.removeAt(0);
- firstList.insert(1, moveToFirst);
- return []..add(firstList)..add(secondList);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement