From d6f30e8e700b4e7eac761813471b279249817a97 Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Sun, 15 Jun 2025 16:21:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=BC=D0=B5=D1=80=D1=8B=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D1=8B=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Algorithms/Recursion/Qweens.pas | 30 +++++++++++++++++++ InstallerSamples/Graphics/Coords/Tree.pas | 22 ++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 InstallerSamples/Algorithms/Recursion/Qweens.pas create mode 100644 InstallerSamples/Graphics/Coords/Tree.pas diff --git a/InstallerSamples/Algorithms/Recursion/Qweens.pas b/InstallerSamples/Algorithms/Recursion/Qweens.pas new file mode 100644 index 000000000..b5fdd743c --- /dev/null +++ b/InstallerSamples/Algorithms/Recursion/Qweens.pas @@ -0,0 +1,30 @@ +function IsSafe(board: array of integer; row, col: integer): boolean; +begin + Result := True; // Предполагаем, что позиция безопасна + for var i := 0 to row - 1 do + if (board[i] = col) or // Проверка вертикали + (board[i] - i = col - row) or // Проверка диагонали / + (board[i] + i = col + row) then // Проверка диагонали \ + begin + Result := False; // Найден конфликт + exit; + end; +end; + +procedure SolveNQueens(board: array of integer; row: integer); +begin + if row = 8 then // Все ферзи расставлены успешно + board.Println + else + for var col := 0 to 7 do + if IsSafe(board, row, col) then + begin + board[row] := col; // Поставить ферзя на ряд row + SolveNQueens(board, row + 1); // Рекурсивный вызов для следующго ряда + end; +end; + +begin + var board := [0] * 8; + SolveNQueens(board, 0); // Начинаем с первой строки (0) +end. \ No newline at end of file diff --git a/InstallerSamples/Graphics/Coords/Tree.pas b/InstallerSamples/Graphics/Coords/Tree.pas new file mode 100644 index 000000000..088605c04 --- /dev/null +++ b/InstallerSamples/Graphics/Coords/Tree.pas @@ -0,0 +1,22 @@ +uses Turtle; + +procedure DrawTree(length: real; depth: integer); +begin + if depth > 0 then + begin + forw(length); + turn(-35); + DrawTree(length*0.65, depth-1); + turn(70); + DrawTree(length*0.65, depth-1); + turn(-35); + forw(-length); + end; +end; + +begin + toPoint(0, -8); + down; + + DrawTree(6, 11); +end. \ No newline at end of file