Аналог VB6 программы на PHPDim A(10), B(), txt, m, sum, C(), mix, ind
Private Sub Command1_Click()
A(1) = "0-0;2-4-6"
A(2) = "5-0;3"
A(3) = "5-3;"
A(4) = "3-3;5"
A(5) = "3-6;7"
A(6) = "0-4;5"
A(7) = "6-6;"
Poisk (1)
Min = C(1): ind = 1
For i = 2 To UBound(C)
If Min > C(i) Then Min = C(i): ind = i
Next
Print B(ind)
End Sub
Sub Poisk(i)
Dim V1, V2, V3 As Variant
V1 = Split(A(i), ";"): V2 = Split(V1(0), "-"): V3 = Split(V1(1), "-")
txt = txt & i
If V1(1) = "" Then
If i = 7 Then
m = m + 1
ReDim Preserve B(m)
ReDim Preserve C(m)
B(m) = txt
C(m) = getsum(txt)
txt = "1"
Else
txt = "1"
End If
End If
For j = 0 To UBound(V3)
Poisk (V3(j))
Next
End Sub
Function getsum(str)
Dim V1, V2, V3, V4 As Variant
For i = 1 To Len(str) Step 2
V1 = Split(A(Mid(str, i, 1)), ";"): V2 = Split(V1(0), "-")
V3 = Split(A(Mid(str, i + 1, 1)), ";"): V4 = Split(V3(0), "-")
getsum = getsum + Abs(V4(0) - V2(0)) + Abs(V4(1) - V2(1))
Next
End Function
Мой аналог на PHP (не работает):
$A[1]="0-0;2-4-6";
$A[2]="5-0;3";
$A[3]="5-3;";
$A[4]="3-3;5";
$A[5]="3-6;7";
$A[6]="0-4;5";
$A[7]="6-6;";
Poisk(1);
$Min=$C[1]; $ind=1;
For ($i=2;$i<count($C);$i++) {
If ($Min>$C($i)) {$Min=$C[$i]; $ind=$i;}
}
Print $B[$ind];
function Poisk($i) {
global $A;
$V1=explode(";", $A[$i]);
$V2=explode("-", $V1[0]);
$V3=explode("-", $V1[1]);
$txt=$txt.$i;
If($V1[1]=="") {
If($i==7) {
$m++;
$B[$m]=$txt;
print $i;
$C[$m]=getsum($txt);
$txt="1";
} Else {
$txt="1";
}}
for($j=0;$j<count($V3);$j++) {
$h=$V3[$j];
Poisk($h);
}
}
function getsum($str) {
For ($j=1;strlen($str);$j+=2) {
$V1=explode(";", $A[substr($str, $i-1, 1)]);
$V2=explode("-", $V1[0]);
$V3=explode(";", $A[substr($str, $i, 1)]);
$V4=explode("-", $V3[0]);
$getsum1+=Abs($V4[0]-$V2[0]) + Abs($V4[1]-$V2[1]);
return $getsum1;
}
}