Хочу сделать случайные размеры фракталов в консоли, как сделать разницу в более 15 единиц, это интересно
Хочу сделать случайные фракталы, что будут выводиться в консоли, но не могу придумать как сделать разницу как минимум в 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, в общем это вся проблема.
В идеале код должен выводиться как-то так:
Но не иметь подобный проблем: