Advertisement
Galax68

Untitled

Feb 28th, 2017
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. procedure TForm1.Calculate;
  2. var
  3. A, B, C: TDice;
  4. A1, A2, A3, A4, A5, A6: byte;
  5. B1, B2, B3, B4, B5, B6: byte;
  6. C1, C2, C3, C4, C5, C6: byte;
  7. MinEV, SumEV, M1, M2, M3, MaxMinEV, MaxSumEV : integer;
  8.  
  9. function Multiplication (X, Y: TDice): integer;
  10. var i, k : byte;
  11. Win: integer;
  12. begin
  13. Win:= 0;
  14. for i:= 6 downto 1 do begin
  15. for k:= 6 downto 1 do begin
  16. if Y[i] > X[k] then begin
  17. Win:= Win + k; Break;
  18. end;
  19. end;
  20. end;
  21. Result:= Win - 18;
  22. end;
  23.  
  24. function Minim(X1,X2,X3: integer): integer;
  25. var X: integer;
  26. begin
  27. X:= 1000;
  28. if X1 < X then
  29. X:= X1;
  30. if X2 < X then
  31. X:= X2;
  32. if X3 < X then
  33. X:= X3;
  34. Result:= X;
  35. end;
  36.  
  37.  
  38.  
  39. function Bigger(X, Y: TDice): boolean;
  40. var i: integer;
  41. begin
  42. for i:= 1 to 6 do begin
  43. if X[i] > Y[i] then begin
  44. Result:= true; Exit;
  45. end else if X[i] < Y[i] then begin
  46. Result:= false; Exit;
  47. end;
  48. end;
  49. Result:= false;
  50. end;
  51.  
  52. begin
  53. MaxMinEV:= 0; Count:= 0; MaxSumEV:= 0;
  54. for A1:= 1 to 6 do begin
  55. A[1]:= A1;
  56. for A2:= A1 to 6 do begin
  57. A[2]:= A2;
  58. for A3:= A2 to 6 do begin
  59. A[3]:= A3;
  60. for A4:= A3 to 6 do begin
  61. A[4]:= A4;
  62. for A5:= A4 to 6 do begin
  63. A[5]:= A5;
  64. for A6:= A5 to 6 do begin
  65. A[6]:= A6;
  66. //Inc(Sum);
  67.  
  68. for B1:= 1 to 6 do begin
  69. B[1]:= B1;
  70. for B2:= B1 to 6 do begin
  71. B[2]:= B2;
  72. for B3:= B2 to 6 do begin
  73. B[3]:= B3;
  74. for B4:= B3 to 6 do begin
  75. B[4]:= B4;
  76. for B5:= B4 to 6 do begin
  77. B[5]:= B5;
  78. for B6:= B5 to 6 do begin
  79. B[6]:= B6;
  80.  
  81. M1:= Multiplication(A, B);
  82. if (M1 > 0) then begin
  83.  
  84. for C1:= 1 to 6 do begin
  85. C[1]:= C1;
  86. for C2:= C1 to 6 do begin
  87. C[2]:= C2;
  88. for C3:= C2 to 6 do begin
  89. C[3]:= C3;
  90. for C4:= C3 to 6 do begin
  91. C[4]:= C4;
  92. for C5:= C4 to 6 do begin
  93. C[5]:= C5;
  94. for C6:= C5 to 6 do begin
  95. C[6]:= C6;
  96.  
  97. M2:= Multiplication(B, C);
  98. if (M2 > 0) then begin
  99. M3:= Multiplication(C, A);
  100. if (M3 > 0) then begin
  101. if Bigger(B, A) and Bigger(C, A) then begin // выводим только один вариант где А наименьшее
  102. MinEV:= Minim(M1, M2, M3);
  103. SumEV:= M1 + M2 + M3 ;
  104. Inc(Count);
  105. Output(A, B, C, MinEV, SumEV);
  106. If MinEV > MaxMinEV then begin
  107. MaxMinEV:= MinEV;
  108. OutputDice(A, B, C, M1, M2, M3);
  109. end;
  110. end;
  111. end;
  112. end;
  113. end;
  114. end;
  115. end;
  116. end;
  117. end;
  118. end;
  119.  
  120. end;
  121.  
  122. end;
  123. end;
  124. end;
  125. end;
  126. end;
  127. end;
  128.  
  129. end;
  130. end;
  131. end;
  132. end;
  133. end;
  134. end;
  135. EditCount.Text:= IntToStr(Count);
  136. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement