понедельник, 2 июня 2014 г.

Не просто треугольник

Напишите формулу расчёта числа треугольников в зависимости от длины стороны основного треугольника. В изображенном треугольнике их 13.

10 комментариев:

  1. Есть у меня формула, но я её не скажу, стыдно...
    Она, скорее, не формула, а алгоритм ;)

    ОтветитьУдалить
    Ответы
    1. Нам, как программистам, написать алгоритм проще, но тут интересна формула.

      Удалить
    2. Полином четвёртой степени типа
      -1/24 * х4 + 7/12 * х3 + 13/24 * х2 + 35/12 * х + 1 так же не дает правильного ответа ;)

      Такое ощущение ,что пониноминальная функция тут не поможет

      Удалить
  2. Наверное, я туплю, но я что-то задания не понял.

    ОтветитьУдалить
    Ответы
    1. На рисунке треугольник со стороной 3 содержит 1 большой, 3 средних и 9 маленьких.

      Удалить
    2. Этот комментарий был удален автором.

      Удалить
    3. Как это количество зависит от длины стороны основного треугольника? Или ты имеешь ввиду, что сторона большого треугольника измерятся в длинах маленьких?

      Удалить
    4. Да, маленькие треугольники со стороной 1, средние - 2, а большие 3. Ну и так далее с ростом n.

      Удалить
  3. Точная формула тут, но мне понравился функциональный ответ моего коллеги:
    private static int size(int n) {
        return rangeClosed(1, n)
            .map(m ->
                rangeClosed(1, n - m + 1).sum() +
                rangeClosed(1, n - 2 * m + 1).sum()
            ).sum();
    }

    ОтветитьУдалить
    Ответы
    1. Круто, для чётных получается:
      1/4 * х3 + 5/8 * х2 + 1/4 * х
      Основная хитрость была в том, чтобы разделить на чётные и нечетные, и их обрабатывать по-отдельности.

      Хотя, чувствую, что мой матаапарат не подготовлен, чтобы понять, почему это так и объяснить своему сыну ;)

      Удалить