Хочу сделать случайные размеры фракталов в консоли, как сделать разницу в более 15 единиц, это интересно

Рейтинг: 0Ответов: 0Опубликовано: 01.08.2023

Хочу сделать случайные фракталы, что будут выводиться в консоли, но не могу придумать как сделать разницу как минимум в 15 единиц, чтобы высота точки c была менее чем 15 единиц например от крайней точки ya и yb. Как можно сделать так, чтобы была разница от края точки в 15 единиц и более?

    Console.Clear();

string s = "x";

int yb = new Random().Next(15, 46);
int yc = new Random().Next(15, 46);
int xc = new Random().Next(14, 150);
int xa = new Random().Next(4, 150);

int ya = 4, xb = 4;

Console.SetCursorPosition(xa, ya);
Console.Write(s);

Console.SetCursorPosition(xb, yb);
Console.Write(s);

Console.SetCursorPosition(xc, yc);
Console.Write(s); 

int x = xa, y = xb;

int count = 0;
while (count < 1000) {
    int nr  = new Random().Next(0, 3); // 0 1 2
    if (nr == 0){
        x = (x + xa) / 2;
        y = (y + ya) / 2; 
    } 
    if (nr == 1){
        x = (x + xb) / 2;
        y = (y + yb) / 2; 
    } 
    if (nr == 2){
        x = (x + xc) / 2;
        y = (y + yc) / 2; 
    } 
    Console.SetCursorPosition(x, y);
    Console.Write(s);
    count++;
}

А так код работает прекрасно, но иногда вылезает ошибка из-за отсутствия разницы. Есть идея чтобы при ошибке код запускался заново, но это немного колхоз) Нужно чтобы треугольник не был слишком "тонким" или "узким", для этого я думаю, что стоит сделать минимальный порог разницы от одной координаты точки к другой. Допустим точка координат ya не может быть отделена от yc всего в 1 переход к новой строки, нужно как минимум 15, в общем это вся проблема. В идеале код должен выводиться как-то так:введите сюда описание изображения Но не иметь подобный проблем:

Ответы

Ответов пока нет.