Мои программы
Конечно! Вот пример программы на Delphi 7, которая случайным образом генерирует логические многочлены, используя логические операции (связки), скобки и переменные.
unit LogicalPolynomial;
interface
uses
SysUtils, Classes, Controls, Forms, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
function GenerateRandomPolynomial(Depth: Integer): string;
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
Operations: array[0..4] of string = ('~', '&', '|', '->', '<->');
Variables: array[0..3] of string = ('A', 'B', 'C', 'D');
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('Случайный логический многочлен:');
Memo1.Lines.Add(GenerateRandomPolynomial(3));
end;
function TForm1.GenerateRandomPolynomial(Depth: Integer): string;
var
OpIndex, VarIndex: Integer;
SubFormula1, SubFormula2: string;
begin
if Depth = 0 then
begin
VarIndex := Random(Length(Variables));
Result := Variables[VarIndex];
Exit;
end;
OpIndex := Random(Length(Operations));
if Operations[OpIndex] = '~' then
begin
Result := Operations[OpIndex] + '(' + GenerateRandomPolynomial(Depth - 1) + ')';
end
else
begin
SubFormula1 := GenerateRandomPolynomial(Depth - 1);
SubFormula2 := GenerateRandomPolynomial(Depth - 1);
Result := '(' + SubFormula1 + ' ' + Operations[OpIndex] + ' ' + SubFormula2 + ')';
end;
end;
end.
это сочинил copilot проверять не стану.
Кстати это была тема той самой проектарбайт и ваша программа смотрится на фоне той очень бледно. Хотя сейчас понимаю, что сделана она была абсолютно неграмотно. У меня не было ограничения по количеству переменных и итераций. Ну разве что размером окна ввода
Фашизм будет разбит
Человека карают только те боги, в которых он верит