В качестве забавного побочного проекта для себя, чтобы помочь в изучении еще одной PHP MVC-фреймворка, я писал Reversi / Othello как приложение на PHP и Ajax, в основном простые вещи. Я решил не использовать многомерный массив по ряду причин и вместо этого иметь линейный массив (в данном случае длиной 64 элемента) и пару методов для преобразования из координат в целые числа.
Так что мне было любопытно, есть ли другие, возможно, более быстрые алгоритмы для преобразования целого числа в координатную точку?
function int2coord($i){
$x = (int)($i/8);
$y = $i - ($x*8);
return array($x, $y);
}
//Not a surprise but this is .003 MS slower on average
function int2coord_2($i){
$b = base_convert($i, 10, 8);
$x = (int) ($b != 0 ? $b/8 : 0); // could also be $b < 8 for condition
$y = $b % 10;
return array($x, $y);
}
И ради потомков, метод, который я написал дляordin2int
function coord2int($x, $y){
return ($x*8)+$y;
}
Обновление:
Таким образом, в стране странных результатов оказалось не то, что я ожидал, а использование предварительно вычисленной таблицы поиска в большинстве случаев показало, что это самая быстрая, предполагаемая торговая память на скорость, всегда победитель?
- Здесь была таблица с временами, но я сократил ее из-за проблем со стилем в SO.