Как нарисовать кривую Серпинского без графических библиотек

Процесс создания сложных графических фигур с использованием символов может быть увлекательным и творческим занятием. Одним из таких примеров является кривая Серпинского, которая представляет собой фрактал, состоящий из равносторонних треугольников.

Для начала, нам понадобится пустой файл, в котором мы будем писать наш код. Мы будем использовать символ ‘*’ для отображения точек, а также рекурсивные вызовы, чтобы построить кривую.

Вначале определим функцию, которая будет отвечать за рисование отрезка. Мы будем использовать стрелку влево или вправо для управления направлением отрезка.

function drawLine(length, direction) {

var line = »;

for (var i = 0; i < length; i++) {

line += ‘*’;

}

console.log(line);

}

Затем создадим функцию drawTriangle, которая будет рисовать равносторонний треугольник заданной стороны.

function drawTriangle(side) {

for (var i = 0; i < side; i++) {

var line = »;

for (var j = 0; j < side - 1 - i; j++) {

line += ‘ ‘;

}

for (var j = 0; j < 2 * i + 1; j++) {

line += ‘*’;

}

console.log(line);

}

}

Теперь мы готовы определить функцию drawSerpinski, которая будет рисовать фрактал кривой Серпинского.

function drawSerpinski(level) {

var length = Math.pow(2, level — 1);

var side = length * 2 — 1;

if (level === 1) {

drawTriangle(side);

} else {

drawSerpinski(level — 1);

console.log();

drawTriangle(side);

drawSerpinski(level — 1);

}

}

Теперь, чтобы нарисовать кривую Серпинского, достаточно вызвать функцию drawSerpinski с указанием уровня кривой.

drawSerpinski(5);

В итоге мы увидим нашу кривую Серпинского, нарисованную символами ‘*’, без использования графических библиотек и слешей.

Как рисовать кривую Серпинского с символами «*» без графических библиотек и слешей

  1. Начните с нарисованным вами вручную треугольником Серпинского. Для простоты возьмем равносторонний треугольник.
  2. Разделите треугольник на три равных меньших треугольника, соединив середины каждой стороны.
  3. Удалите треугольник, находящийся внутри треугольника Серпинского.
  4. Повторите шаги 2-3 для каждого из меньших треугольников, оставшихся после удаления внутреннего треугольника. Продолжайте рекурсивно повторять этот процесс, пока не достигните требуемой глубины рекурсии.
  5. Вместо удаления треугольников можно заполнить их символами «*», чтобы создать визуальное представление кривой Серпинского.

Вот пример кода на языке Python, который реализует этот алгоритм:


def draw_sierpinski_triangle(depth):
if depth == 0:
return [['*']]
smaller_triangle = draw_sierpinski_triangle(depth - 1)
triangle = []
for row in smaller_triangle:
triangle.append(row + [' '] * len(row) + row)
return triangle + [row * 2 for row in smaller_triangle]
def print_sierpinski_triangle(triangle):
for row in triangle:
print(''.join(row))
depth = int(input("Введите глубину рекурсии: "))
triangle = draw_sierpinski_triangle(depth)
print_sierpinski_triangle(triangle)

Этот код будет рисовать кривую Серпинского с заданной глубиной рекурсии, используя символ «*» для отображения треугольников и символ » » для отображения пробелов. Вы можете изменить символы, используемые для рисования, в соответствии с вашими предпочтениями.