Tworzę prosty system nawiasów i potrzebuję sposobu sprawdzenia, czy istnieje odpowiednia liczba drużyn, lub czy mój program musi zrekompensować rundy bye.Ustalanie uprawnień 2?
Teraz jestem sprawdzanie „potęgi dwójki” Dzięki tej funkcji:
function validBracket(data) {
var x = data.teams.length;
return ((x != 0) && !(x & (x - 1)));
}
To działa całkiem dobrze, ale mam potrzeby wiedzieć, ile Bye zaokrągla dodać. Na przykład, gdybym miał 16 teams
, nie musiałbym dodawać więcej zespołów. Jednakże, gdybym miał 12 teams
, potrzebowałbym pierwszego 4 teams
, aby uzyskać rundę bye.
Jak mogę obliczyć liczbę rund bye dodać do mojego nawiasu? I czy trudne kodowanie zestawu mocy dwójki byłoby lepsze?
W pseudo kod, coś w tym jest to, co miał na myśli:
if(validateBracket(data)) {
// Valid number of teams (power of two). Keep going.
} else {
var byeRounds = calculateByeRounds();
}
UWAGA: wolałbym nie używać tablicę potęgi dwójki jak poniżej:
var powersOfTwo = [2,4,8,16,32,...];
Powodem tego jest to, że ograniczyłbym liczbę drużyn, które można umieścić w systemie (nie sądzę jednak, że dana osoba ma ponad 256 zespołów).
obliczyć moc następny 2 [o] (http://stackoverflow.com/questions/1322510/given-an-integer-how- do-i-find-the-next-largest-power-of-two-using-bit-twiddlin) i odejmij od twojej aktualnej liczby całkowitej – Drakes
@Drakes Dzięki, chory, spójrz na to! –
Powód spadkowy? –