Преобразование функции C ++ в C #

Я пытаюсь преобразовать функцию c ++ в c #, но у меня не получается второй час подряд. Нужна помощь: / Функция взята из этот вопрос

bool haswon(unsigned __int64 newboard)
{
unsigned __int64 y = newboard & (newboard >> 6);
if (y & (y >> 2 * 6)) // check \ diagonal
return true;
y = newboard & (newboard >> 7);
if (y & (y >> 2 * 7)) // check horizontal -
return true;
y = newboard & (newboard >> 8);
if (y & (y >> 2 * 8)) // check / diagonal
return true;
y = newboard & (newboard >> 1);
if (y & (y >> 2))     // check vertical |
return true;
return false;
}

Вот мой с # один:

    bool HasWon(ulong newboard)
{
ulong y = newboard & (newboard >> 6);
if ((y & (y >> 2 * 6)) > 0) // check \ diagonal
return true;
y = newboard & (newboard >> 7);
if ((y & (y >> 2 * 7)) > 0) // check horizontal -
return true;
y = newboard & (newboard >> 8);
if ((y & (y >> 2 * 7)) > 0) // check / diagonal
return true;
y = newboard & (newboard >> 1);
if ((y & (y >> 2 * 7)) > 0)    // check vertical |
return true;
return false;
}

Но это не работает! Выглядит как тривиальная вещь, но я полностью потерян. Спасибо за помощь

0

Решение

Это похоже на простую ошибку копирования / вставки. Ваши последние две строки не были сдвинуты y в два раза больше newboard:

private static bool isWon(ulong board)
{
// Check / diagonal
ulong y = board & (board >> 8);
if ((y & (y >> 2 * 8)) > 0) return true;

// Check - horizontal
y = board & (board >> 7);
if ((y & (y >> 2 * 7)) > 0) return true;

// Check \ diagonal
y = board & (board >> 6);
if ((y & (y >> 2 * 6)) > 0) return true;

// Check | vertical
y = board & (board >> 1);
if ((y & (y >> 2)) > 0) return true;

return false;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector