Переделать задачу из Pascal в PHP

Юрий18 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
20.11.2007

ВОт надо было решить задачу http://acm.dvpion.ru/?main=task&id_task=83. Нашёл реализацию на Pascal. Надо переделать на PHP

Срок один день. Жду Ваших предложений.

Приведем функцию, которая проверяет, что два профиля совместимы:

function ok(y, z: byte): boolean;

var

x: byte;

i: integer;

begin

x := y xor z;

{ Развернем двоичное число в массив }

for i := 1 to m do

begin

b := x and 1;

x := x shr 1;

end;

{ Проверим, что нет двух нулей подряд }

for i := 2 to m do

if (b = 0) and (b[i-1] = 0) then

begin

ok := false;

exit;

end;

ok := true;

end;

Теперь ядро программы – заполнение динамически массива A:

{ Находим максимальное значение профиля }

p := 1 shl m - 1;

fillchar(a, sizeof(a), 0);

{ Начальные значения }

for i := 0 to p do

a[1] := 1;

{ Заполнение }

for i := 2 to n do

begin

for j := 0 to p do

for k := 0 to p do

begin

if ok(j, k) then

a[k] := a[i-1][j] + a[k];

end;

end;

{ Подсчет и вывод ответа }

r := 0;

for i := 0 to p do

r := r + a[n];

writeln(r);