Advertisement
Guest User

Three Game Guarantee Algorithm

a guest
Feb 23rd, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 1.54 KB | None | 0 0
  1. /// Seeding algorithm
  2. /// Each team plays three times
  3. /// Shouldn't play the same team
  4.  
  5. class ThreeGGAlgorithm {
  6.   List<String> teams;
  7.   List<List<String>> bracket = [];
  8.   int maxRounds;
  9.   bool bye;
  10.  
  11.   void start(List<String> origTeams) {
  12.     if (origTeams.length < 4) {
  13.       return;
  14.     }
  15.     maxRounds = origTeams.length - 1;
  16.     teams = List<String>.from(origTeams);
  17.     if (teams.length.isOdd) {
  18.       teams.add('bye_week');
  19.     }
  20.     var splitTeams = splitList(teams);
  21.     // print(splitTeams[0]);
  22.     // print(splitTeams[1]);
  23.     var rotatedTeams = splitTeams;
  24.     // print(rotatedTeams[0]);
  25.     // print(rotatedTeams[1]);
  26.     for (var i = 2; i <= maxRounds; i++) {
  27.       // print('Round: $i');
  28.       // print('------------');
  29.       for (var b = 0; b < rotatedTeams[0].length; b++) {
  30.         bracket.add([rotatedTeams[0][b], rotatedTeams[1][b]]);
  31.       }
  32.       rotatedTeams = rotateTeams(splitTeams);
  33.     }
  34.     print(bracket);
  35.   }
  36.  
  37.   List<List<String>> splitList(List<String> split) {
  38.     var first = split.sublist(0, split.length ~/ 2);
  39.     var last = split.sublist(split.length ~/ 2);
  40.     return []..add(first)..add(last.reversed.toList());
  41.   }
  42.  
  43.   List<List<String>> rotateTeams(List<List<String>> rotate) {
  44.     var firstList = rotate[0];
  45.     var secondList = rotate[1];
  46.     var itemToMove = firstList.removeLast();
  47.     secondList.insert(secondList.length - 1, itemToMove);
  48.     var moveToFirst = secondList.removeAt(0);
  49.     firstList.insert(1, moveToFirst);
  50.     return []..add(firstList)..add(secondList);
  51.   }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement