@animeh4ter

Как напечать треугольник в консоли?

Есть класс треугольника:
class Triangle:
    def __init__(self, a, b, c, color):
        self.a = a
        self.b = b
        self.c = c
        self.color = color

    def print_info(self):
        return f"""==Triangle==
Side 1: {self.a}
Side 2: {self.b}
Side 3: {self.c}
Color: {self.color}
Area: {self.area()}
Perimeter: {self.per()}
{self.print_shape()}"""

    def area(self):
        p = (self.a + self.b + self.c) / 2
        s = round(math.sqrt(p * (p - self.a) * (p - self.b) * (p - self.c)), 2)
        return s

    def per(self):
        return self.a + self.b + self.c

    def print_shape(self):
        pass


Второй час уже сижу ломаю голову как напечатать треугольник в консоль вывода, учитывая что его стороны могут быть разными, печатать саму фигуру можно символом *
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Подскажу идею: печатай по строкам. Тогда тебе нужно будет для каждой строки определить начало и конец.
Также для упрощения задачи найди "среднюю" вершину треугольника по высоте, и разбей его на два по этой вершине. Если такой нет (т.е. одна из сторон прямоугольника горизонтальна) - задача упрощается.
Пример

# было
     *
    ***
   *****
  *******
 ****
*

# верхний полутреугольник
     *
    ***
   *****
  *******
# нижний полутреугольник
 ****
*

Таким образом, ты можешь по координатам вершин вычислить шаг - через сколько строк надо уменьшить/увеличить координату начального и конечного столбца. А дальше простой цикл.
ЕМНИП, так делают видеокарты, только с пикселями.
Шаг имеет смысл оставить дробным, чтобы избежать проблем с накапливающейся ошибкой округления.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Брось прикалываться. Нормальные люди рисуют геометрию на matplot. Вот посмотри примеры
https://matplotlib.org/stable/gallery/lines_bars_a...

Если ты любитель ASCII-art - то рисуй прямоугольник из звездочек. Но исключай те звездочки которые
входят в тело треугольника который вписан. Принадледность точки треугольнику - это классическая задача на всяких codewars, контестерах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы