Был завален работой
Вобщем пока что черновой вариант, работает так как показано на картинках с примера. ( возможны ошибки, так как эта игра сама по себе меня мало интересует, а поэтому реализовал то что увидел)
Скорость где-то 1000000 вар/сек.
Понатное что это не предел, там многое можно ускорить...
но сами понимаете - долго над функцией не думал...
Карты нумеруются от 0 до 51:
0 - 2 чир,
1 - 2 буб,
2 - 2 крес,
3 - 2 пик,
4 - 3 чир,
5 - 3 буб,
6 - 3 крес,
7 - 3 пик
...........
48 - Т чир,
49 - Т буб,
50 - Т крес,
51 - Т пик.
1 байт --> 1 карта.
Чтобы сохранить все возможные варианты - понадобится 1,3Гб на диске.
Результат строка с начальными буквами комбинаций.
PHP код:
function accka9funkci9(k1,k2,k3,k4,k5:byte):string;
var
i,j:integer;
tm,amo,ado:byte;
a:array[1..5]of byte;
s:string;
begin
s:='xren6';
a[1]:=k1;
a[2]:=k2;
a[3]:=k3;
a[4]:=k4;
a[5]:=k5;
for i:=1 to 4 do
for j:=1 to 4 do
if a[j]<a[j+1] then
begin
tm:=a[j];
a[j]:=a[j+1];
a[j+1]:=tm;
end;
amo:=a[1] mod 4; // 0-3
ado:=a[1] div 4; // 0-12
if (a[2] mod 4=amo)and(a[3] mod 4=amo)and (a[4] mod 4=amo)and(a[5] mod 4=amo) then
begin
if ado=12 then
begin
if a[5] div 4 =8 then s:='FR';
end
else
if (a[1]-a[5])=16 then s:='SF' else s:='F';
end
else
begin
if (ado-a[2]div 4)>1 then
s:='Hc'
else
if ado =a[4] div 4 then s:='FoK'
else
begin
if (ado=a[3]div 4) then
begin
if (a[4]div 4 = a[5]div 4) then s:='FH' else s:='ToK';
end
else
begin
if (ado=a[2]div 4) then
if (a[3]div 4 = a[4]div 4) then s:='Tp'
else
begin
if (a[1] div 4 - a[5] div 4)=4 then s:='S' else s:='Op';
end;
end;
end;
end;
result:=s;
end;