я делаю веб-приложение с одинарным / двойным исключением на основе HTML / JS. Я изо всех сил пытаюсь понять, как назначить матчи первого раунда из списка сеяных команд / игроков. Например, в сетке из 8 игроков матчи первого круга: 4v5 2v7 3v6
В более общих терминах семена можно рассматривать как массив (поскольку я назначаю команды на матчи, выталкивая их из массива): 1,2,3,4,5,6,7,8
, которые необходимо отсортировать по: 1,8,4,5,2,7,3,6
Чтобы уточнить, высшие семена должны иметь максимальное расстояние между ними в отсортированном массиве, это так, чтобы в скобке без высадок нижние семена выбиваются первыми, а совпадения с высокими семенами происходят как можно позже. С практической точки зрения представьте себе теннисный турнир, в котором вы хотите помешать четырем лучшим игрокам в сетке из 16 или 32 и т. Д. Играть друг с другом до полуфинала. Итак, правильный вывод массива для начальной скобки 16 :
1,16,8,9,4,13,5,12,2,15,7,10,3,14, 6,11
, что соответствует следующим матчам 1-го раунда:
1v16 8v9 4v13 5v12 2v15 7v10 3v14 6v11
Спасибо Мэтту Боллу за правильный алгоритм для брекетинга с 8 начальными числами