generateSeedingOrder static method
Generates the standard tournament bracket seeding position order for a given power-of-2 size.
For example:
- size = 2:
1, 2 - size = 4:
1, 4, 3, 2 - size = 8:
1, 8, 5, 4, 3, 6, 7, 2 - size = 16:
1, 16, 9, 8, 5, 12, 13, 4, 3, 14, 11, 6, 7, 10, 15, 2
Implementation
static List<int> generateSeedingOrder(int size) {
if (size <= 0) return [];
// Ensure size is a power of 2
int p = 1;
while (p < size) {
p *= 2;
}
List<int> order = [1];
while (order.length < p) {
final nextLength = order.length * 2;
final nextOrder = List<int>.filled(nextLength, 0);
final sum = nextLength + 1;
for (int i = 0; i < order.length; i++) {
final x = order[i];
if (i % 2 == 0) {
nextOrder[i * 2] = x;
nextOrder[i * 2 + 1] = sum - x;
} else {
nextOrder[i * 2] = sum - x;
nextOrder[i * 2 + 1] = x;
}
}
order = nextOrder;
}
return order;
}