Advertisement
Amorf

Untitled

Mar 26th, 2021
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 10.21 KB | None | 0 0
  1. unit Laba4_3;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;
  8.  
  9. type
  10.   TArr = array[0..5] of char;
  11.   TForm1 = class(TForm)
  12.     Panel1: TPanel;
  13.     Panel2: TPanel;
  14.     Panel3: TPanel;
  15.     Panel4: TPanel;
  16.     Panel5: TPanel;
  17.     Panel6: TPanel;
  18.     Panel7: TPanel;
  19.     Panel8: TPanel;
  20.     Panel9: TPanel;
  21.     Panel10: TPanel;
  22.     Panel11: TPanel;
  23.     Panel12: TPanel;
  24.     Panel13: TPanel;
  25.     Panel14: TPanel;
  26.     Panel15: TPanel;
  27.     Panel16: TPanel;
  28.     Panel17: TPanel;
  29.     Panel18: TPanel;
  30.     procedure findResult();
  31.     procedure twoKub(var kub1 : TArr;var kub2: TArr; var counter2 : byte);
  32.     procedure threeKub(var kub2 : TArr;var kub3: TArr;var counter2 : byte;var counter3 : byte);
  33.     procedure fourKub(var kub3: TArr;var kub4: TArr;var counter3 : byte;var counter4 : byte);
  34.     procedure FormCreate(Sender: TObject);
  35.     procedure initialArr(var kub1 : TArr;var kub2 : TArr;var kub3 : TArr;var kub4 : TArr;var counter2 : byte;var counter3 : byte;var counter4 : byte);
  36.     procedure drowPanel(kub1 : TArr;kub2 : TArr;kub3 : TArr;kub4 : TArr);
  37.   private
  38.     { Private declarations }
  39.   public
  40.     { Public declarations }
  41.   end;
  42.  
  43. var
  44.   Form1: TForm1;
  45.   counter2,counter3, counter4 : byte;
  46.   kub1, kub2, kub3, kub4 : TArr;
  47.  
  48. implementation
  49.  
  50. {$R *.dfm}
  51. // g - green b - blue w - white r - red
  52. procedure TForm1.FormCreate(Sender: TObject);
  53. begin
  54.     initialArr(kub1,kub2,kub3,kub4,counter2,counter3,counter4);
  55.     findResult;
  56. end;
  57.  
  58. procedure TForm1.fourKub(var kub3 : TArr;var kub4: TArr;var counter3 : byte;var counter4 : byte);
  59. var
  60.     i : byte;
  61.     temp : char;
  62.     flag, flag2 : boolean;
  63. begin
  64.     flag := false;
  65.     flag2 := false;
  66.     i := 1;
  67.     while not flag and (counter4 < 6) do
  68.     begin
  69.         while not flag2 and (i < 5) do
  70.         begin
  71.             if (kub1[i] <> kub4[i]) and (kub2[i] <> kub4[i]) and (kub3[i] <> kub4[i]) then
  72.                 inc(i)
  73.             else
  74.                 flag2 := true;
  75.         end;
  76.         if flag2 then
  77.         begin
  78.             temp := kub4[0];
  79.             for i := 0 to 4 do
  80.                 kub4[i] := kub4[i + 1];
  81.             kub4[5] := temp;
  82.             inc(counter4);
  83.             flag2 := false;
  84.             i := 1;
  85.         end
  86.         else
  87.             flag := true;
  88.     end;
  89.     if not flag then
  90.     begin
  91.         temp := kub3[0];
  92.         for i := 0 to 4 do
  93.             kub3[i] := kub3[i + 1];
  94.         kub3[5] := temp;
  95.         inc(counter3);
  96.         counter4 := 1;
  97.         threeKub(kub2,kub3,counter2,counter3);
  98.     end;
  99. end;
  100.  
  101. procedure TForm1.threeKub(var kub2 : TArr;var kub3: TArr;var counter2 : byte;var counter3 : byte);
  102. var
  103.     i : byte;
  104.     temp : char;
  105.     flag, flag2 : boolean;
  106. begin
  107.     flag := false;
  108.     flag2 := false;
  109.     i := 1;
  110.     while not flag and (counter3 < 6) do
  111.     begin
  112.         while not flag2 and (i < 5) do
  113.         begin
  114.             if (kub2[i] <> kub3[i]) and (kub3[i] <> kub1[i]) then
  115.                 inc(i)
  116.             else
  117.                 flag2 := true;
  118.         end;
  119.         if flag2 then
  120.         begin
  121.             temp := kub3[0];
  122.             for i := 0 to 4 do
  123.                 kub3[i] := kub3[i + 1];
  124.             kub3[5] := temp;
  125.             inc(counter3);
  126.             flag2 := false;
  127.             i := 1;
  128.         end
  129.         else
  130.             flag := true;
  131.     end;
  132.     if flag then
  133.         fourKub(kub3,kub4,counter3,counter4)
  134.     else
  135.     begin
  136.         temp := kub2[0];
  137.         for i := 0 to 4 do
  138.             kub2[i] := kub2[i + 1];
  139.         kub2[5] := temp;
  140.         inc(counter2);
  141.         counter3 := 1;
  142.         twoKub(kub1,kub2,counter2);
  143.     end;
  144. end;
  145.  
  146. procedure TForm1.twoKub(var kub1 : TArr;var kub2: TArr;var counter2 : byte);
  147. var
  148.     i : byte;
  149.     temp : char;
  150.     flag, flag2 : boolean;
  151. begin
  152.     flag := false;
  153.     flag2 := false;
  154.     i := 1;
  155.     while  not flag and (counter2 < 6) do
  156.     begin
  157.         while not flag2 and (i < 5) do
  158.         begin
  159.             if kub1[i] <> kub2[i] then
  160.                 inc(i)
  161.             else
  162.                 flag2 := true;
  163.         end;
  164.         if flag2 then
  165.         begin
  166.             temp := kub2[0];
  167.             for i := 0 to 4 do
  168.                 kub2[i] := kub2[i + 1];
  169.             kub2[5] := temp;
  170.             inc(counter2);
  171.             flag2 := false;
  172.             i := 1;
  173.         end
  174.         else
  175.             flag := true;
  176.     end;
  177.     if flag then
  178.         threeKub(kub2,kub3,counter2,counter3)
  179.     else
  180.     begin
  181.         temp := kub1[0];
  182.         for i := 0 to 4 do
  183.             kub1[i] := kub1[i + 1];
  184.         kub1[5] := temp;
  185.         counter2 := 1;
  186.         twoKub(kub1,kub2,counter2);
  187.     end;
  188. end;
  189. procedure TForm1.drowPanel(kub1 : TArr;kub2 : TArr;kub3 : TArr;kub4 : TArr);
  190. begin
  191.     if kub1[1] = 'r' then
  192.         Panel1.Color := clRed
  193.     else if kub1[1] = 'g' then
  194.         Panel1.Color := clGreen
  195.     else if kub1[1] = 'w' then
  196.         Panel1.Color := clSilver
  197.     else if kub1[1] = 'b' then
  198.         Panel1.Color := clBlue;
  199.     if kub2[1] = 'r' then
  200.         Panel2.Color := clRed
  201.     else if kub2[1] = 'g' then
  202.         Panel2.Color := clGreen
  203.     else if kub2[1] = 'w' then
  204.         Panel2.Color := clSilver
  205.     else if kub2[1] = 'b' then
  206.         Panel2.Color := clBlue;
  207.     if kub3[1] = 'r' then
  208.         Panel3.Color := clRed
  209.     else if kub3[1] = 'g' then
  210.         Panel3.Color := clGreen
  211.     else if kub3[1] = 'w' then
  212.         Panel3.Color := clSilver
  213.     else if kub3[1] = 'b' then
  214.         Panel3.Color := clBlue;
  215.     if kub4[1] = 'r' then
  216.         Panel4.Color := clRed
  217.     else if kub4[1] = 'g' then
  218.         Panel4.Color := clGreen
  219.     else if kub4[1] = 'w' then
  220.         Panel4.Color := clSilver
  221.     else if kub4[1] = 'b' then
  222.         Panel4.Color := clBlue;
  223.     if kub1[2] = 'r' then
  224.         Panel5.Color := clRed
  225.     else if kub1[2] = 'g' then
  226.         Panel5.Color := clGreen
  227.     else if kub1[2] = 'w' then
  228.         Panel5.Color := clSilver
  229.     else if kub1[2] = 'b' then
  230.         Panel5.Color := clBlue;
  231.     if kub2[2] = 'r' then
  232.         Panel6.Color := clRed
  233.     else if kub2[2] = 'g' then
  234.         Panel6.Color := clGreen
  235.     else if kub2[2] = 'w' then
  236.         Panel6.Color := clSilver
  237.     else if kub2[2] = 'b' then
  238.         Panel6.Color := clBlue;
  239.     if kub3[2] = 'r' then
  240.         Panel7.Color := clRed
  241.     else if kub3[2] = 'g' then
  242.         Panel7.Color := clGreen
  243.     else if kub3[2] = 'w' then
  244.         Panel7.Color := clSilver
  245.     else if kub3[2] = 'b' then
  246.         Panel7.Color := clBlue;
  247.     if kub4[2] = 'r' then
  248.         Panel8.Color := clRed
  249.     else if kub4[2] = 'g' then
  250.         Panel8.Color := clGreen
  251.     else if kub4[2] = 'w' then
  252.         Panel8.Color := clSilver
  253.     else if kub4[2] = 'b' then
  254.         Panel8.Color := clBlue;
  255.     if kub1[3] = 'r' then
  256.         Panel9.Color := clRed
  257.     else if kub1[3] = 'g' then
  258.         Panel9.Color := clGreen
  259.     else if kub1[3] = 'w' then
  260.         Panel9.Color := clSilver
  261.     else if kub1[3] = 'b' then
  262.         Panel9.Color := clBlue;
  263.     if kub2[3] = 'r' then
  264.         Panel10.Color := clRed
  265.     else if kub2[3] = 'g' then
  266.         Panel10.Color := clGreen
  267.     else if kub2[3] = 'w' then
  268.         Panel10.Color := clSilver
  269.     else if kub2[3] = 'b' then
  270.         Panel10.Color := clBlue;
  271.     if kub3[3] = 'r' then
  272.         Panel11.Color := clRed
  273.     else if kub3[3] = 'g' then
  274.         Panel11.Color := clGreen
  275.     else if kub3[3] = 'w' then
  276.         Panel11.Color := clSilver
  277.     else if kub3[3] = 'b' then
  278.         Panel11.Color := clBlue;
  279.     if kub4[3] = 'r' then
  280.         Panel12.Color := clRed
  281.     else if kub4[3] = 'g' then
  282.         Panel12.Color := clGreen
  283.     else if kub4[3] = 'w' then
  284.         Panel12.Color := clSilver
  285.     else if kub4[3] = 'b' then
  286.         Panel12.Color := clBlue;
  287.     if kub1[4] = 'r' then
  288.         Panel13.Color := clRed
  289.     else if kub1[4] = 'g' then
  290.         Panel13.Color := clGreen
  291.     else if kub1[4] = 'w' then
  292.         Panel13.Color := clSilver
  293.     else if kub1[4] = 'b' then
  294.         Panel13.Color := clBlue;
  295.     if kub2[4] = 'r' then
  296.         Panel14.Color := clRed
  297.     else if kub2[4] = 'g' then
  298.         Panel14.Color := clGreen
  299.     else if kub2[4] = 'w' then
  300.         Panel14.Color := clSilver
  301.     else if kub2[4] = 'b' then
  302.         Panel14.Color := clBlue;
  303.     if kub3[4] = 'r' then
  304.         Panel15.Color := clRed
  305.     else if kub3[4] = 'g' then
  306.         Panel15.Color := clGreen
  307.     else if kub3[4] = 'w' then
  308.         Panel15.Color := clSilver
  309.     else if kub3[4] = 'b' then
  310.         Panel15.Color := clBlue;
  311.     if kub4[4] = 'r' then
  312.         Panel16.Color := clRed
  313.     else if kub4[4] = 'g' then
  314.         Panel16.Color := clGreen
  315.     else if kub4[4] = 'w' then
  316.         Panel16.Color := clSilver
  317.     else if kub4[4] = 'b' then
  318.         Panel16.Color := clBlue;
  319.     if kub1[0] = 'r' then
  320.         Panel17.Color := clRed
  321.     else if kub1[0] = 'g' then
  322.         Panel17.Color := clGreen
  323.     else if kub1[0] = 'w' then
  324.         Panel17.Color := clSilver
  325.     else if kub1[0] = 'b' then
  326.         Panel17.Color := clBlue;
  327.     if kub4[0] = 'r' then
  328.         Panel18.Color := clRed
  329.     else if kub4[0] = 'g' then
  330.         Panel18.Color := clGreen
  331.     else if kub4[0] = 'w' then
  332.         Panel18.Color := clSilver
  333.     else if kub4[0] = 'b' then
  334.         Panel18.Color := clBlue;
  335. end;
  336. procedure TForm1.findResult;
  337. begin
  338.     twoKub(kub1,kub2,counter2);
  339.     drowPanel(kub1,kub2,kub3,kub4);
  340. end;
  341. procedure TForm1.initialArr(var kub1 : TArr;var kub2 : TArr;var kub3 : TArr;var kub4 : TArr;var counter2 : byte;var counter3 : byte;var counter4 : byte);
  342. begin
  343.     kub1[0] := 'g';      //gwbbrg
  344.     kub1[1] := 'w';
  345.     kub1[2] := 'b';
  346.     kub1[3] := 'b';
  347.     kub1[4] := 'r';
  348.     kub1[5] := 'g';
  349.  
  350.     kub2[0] := 'r';    // rwgbrr
  351.     kub2[1] := 'r';
  352.     kub2[2] := 'w';
  353.     kub2[3] := 'g';
  354.     kub2[4] := 'b';
  355.     kub2[5] := 'r';
  356.  
  357.     kub3[0] := 'w';  // wwggrb
  358.     kub3[1] := 'g';
  359.     kub3[2] := 'r';
  360.     kub3[3] := 'w';
  361.     kub3[4] := 'g';
  362.     kub3[5] := 'b';
  363.  
  364.     kub4[0] := 'b';   // rwwbgb
  365.     kub4[1] := 'b';
  366.     kub4[2] := 'g';
  367.     kub4[3] := 'r';
  368.     kub4[4] := 'w';
  369.     kub4[5] := 'w';
  370.  
  371.     counter2 := 1;
  372.     counter3 := 1;
  373.     counter4 := 1;
  374. end;
  375. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement