сначала, извините за мой английский. Я сделаю все возможное, чтобы объяснить мою проблему!
Итак, я пытаюсь создать единый турнир по ликвидации с неограниченным количеством игроков.
пока я просто думаю об этом, у меня ничего нет на бумаге, я думаю, что у меня не будет проблем для турнира с силой двух (2 4 8 16 32 игроков ..), мой мозг висит на игроках, идущих прямо на раунд 2 , я не знаю, как определить это число и где их разместить.
например (с 59 игроками)
Я думаю, что есть формула, но я не могу ее найти, у меня есть идеи, но я думаю слишком конкретно о случае, не зная, будет ли это работать для другого.
Спасибо, если вы можете мне помочь!
Для данного числа N найдите разницу между ним и наименьшей степенью 2, по крайней мере, равной N. Для 59 это будет 5 (64-59). Эти 5 игроков будут добавлены в расписание турниров во втором раунде.
Этот алгоритм позволяет всем игрокам быть частью игры, когда начинается второй раунд, т. Е. Как можно раньше. Его объяснение очень просто: представьте, что изначально было 2 игрока ** N, но некоторые просто не приходили в свои игры, поэтому их противники пошли дальше без боя. )
В качестве побочного элемента ваша формула должна учитывать, что это самые сильные игроки, которые должны войти в игру со второго раунда, а не из самых слабых. )
Первым шагом, по-видимому, является подсчет количества игроков, которые будут участвовать в первом раунде. Теперь давайте продолжим, что метафора «пропавших игроков» – предположим, что изначально было 64 игрока, поэтому в первом раунде должно было сыграть 32 игры. Но для этих игр не было 5 игроков (64 – 59), поэтому количество реальных игр составляет 27 (64/2 – 5), а количество реальных участников первого раунда – 54 (27 * 2).
После первого раунда в турнире останется 27 человек – к этим людям присоединятся те же 5 парней, поэтому общее число игроков 2-го тура – 32. Остальное тривиально, я полагаю. )
На самом деле это легко распространять. Допустим, у нас есть N
игроков, а наименьшая мощность 2 по крайней мере равна N
равна P
Теперь…
(N - (P - N))
(или только (2*N - P)
). (N - P/2)
. (P - N)
, оставшиеся без участия в первом раунде, поэтому общее количество игроков во втором раунде будет … N - P/2 + P - N => P - P/2 => P/2
ooh спасибо @ raina77ow, вы взорвали мой разум, так вот мои расчеты:
64/2 = 32 59/2 = 29 ( rounded to the lower ) => nb of total player at left ( round 1 & 2) 32-29 = 3 => nb players at left going to round 2 29-3 = 26 => nb players at left going to round 1 59-29 = 30 => nb total players at right ( round 1 & 2 ) 5-3 = 2 => nb players going to round 2 at right 30-2 = 28 = nb players round 1
`Я думаю, что теперь я могу сделать алгоритм, если это подходит для каждого случая.