Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure TForm1.Calculate;
- var
- A, B, C: TDice;
- A1, A2, A3, A4, A5, A6: byte;
- B1, B2, B3, B4, B5, B6: byte;
- C1, C2, C3, C4, C5, C6: byte;
- MinEV, SumEV, M1, M2, M3, MaxMinEV, MaxSumEV : integer;
- function Multiplication (X, Y: TDice): integer;
- var i, k : byte;
- Win: integer;
- begin
- Win:= 0;
- for i:= 6 downto 1 do begin
- for k:= 6 downto 1 do begin
- if Y[i] > X[k] then begin
- Win:= Win + k; Break;
- end;
- end;
- end;
- Result:= Win - 18;
- end;
- function Minim(X1,X2,X3: integer): integer;
- var X: integer;
- begin
- X:= 1000;
- if X1 < X then
- X:= X1;
- if X2 < X then
- X:= X2;
- if X3 < X then
- X:= X3;
- Result:= X;
- end;
- function Bigger(X, Y: TDice): boolean;
- var i: integer;
- begin
- for i:= 1 to 6 do begin
- if X[i] > Y[i] then begin
- Result:= true; Exit;
- end else if X[i] < Y[i] then begin
- Result:= false; Exit;
- end;
- end;
- Result:= false;
- end;
- begin
- MaxMinEV:= 0; Count:= 0; MaxSumEV:= 0;
- for A1:= 1 to 6 do begin
- A[1]:= A1;
- for A2:= A1 to 6 do begin
- A[2]:= A2;
- for A3:= A2 to 6 do begin
- A[3]:= A3;
- for A4:= A3 to 6 do begin
- A[4]:= A4;
- for A5:= A4 to 6 do begin
- A[5]:= A5;
- for A6:= A5 to 6 do begin
- A[6]:= A6;
- //Inc(Sum);
- for B1:= 1 to 6 do begin
- B[1]:= B1;
- for B2:= B1 to 6 do begin
- B[2]:= B2;
- for B3:= B2 to 6 do begin
- B[3]:= B3;
- for B4:= B3 to 6 do begin
- B[4]:= B4;
- for B5:= B4 to 6 do begin
- B[5]:= B5;
- for B6:= B5 to 6 do begin
- B[6]:= B6;
- M1:= Multiplication(A, B);
- if (M1 > 0) then begin
- for C1:= 1 to 6 do begin
- C[1]:= C1;
- for C2:= C1 to 6 do begin
- C[2]:= C2;
- for C3:= C2 to 6 do begin
- C[3]:= C3;
- for C4:= C3 to 6 do begin
- C[4]:= C4;
- for C5:= C4 to 6 do begin
- C[5]:= C5;
- for C6:= C5 to 6 do begin
- C[6]:= C6;
- M2:= Multiplication(B, C);
- if (M2 > 0) then begin
- M3:= Multiplication(C, A);
- if (M3 > 0) then begin
- if Bigger(B, A) and Bigger(C, A) then begin // выводим только один вариант где А наименьшее
- MinEV:= Minim(M1, M2, M3);
- SumEV:= M1 + M2 + M3 ;
- Inc(Count);
- Output(A, B, C, MinEV, SumEV);
- If MinEV > MaxMinEV then begin
- MaxMinEV:= MinEV;
- OutputDice(A, B, C, M1, M2, M3);
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- end;
- EditCount.Text:= IntToStr(Count);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement