Блог пользователя Medina

Автор Medina, 13 лет назад, По-русски

Привет всем! Может кто-нибудь мне подсказать как реализовать эту задачу. Я нашла решение, но никак не могу ее реализовать(как хранить данную фигуру?). Спасибо за ранее

  • Проголосовать: нравится
  • +11
  • Проголосовать: не нравится

»
13 лет назад, # |
Rev. 6   Проголосовать: нравится +12 Проголосовать: не нравится

Обычно в задачах "на соты" (пчелиные) я перерисовываю поле в более привычном виде, и ввожу двумерную систему координат. Нарисуем первую строку поля квадратными клетками со стороной 1, вторая строка будет такая же, но смещена на 0.5 вдоль горизонтальной оси, третья смещена на 1, четвёртая на 1.5.
Такое поле естественным образом можно хранить в двумерном массиве. Одна из трёх осей это горизонтальное направление, движение вправо осуществляется прибавлением к двумерным координатам вектора (0, 1). Вторая ось "северо-запад -> юго-восток" движение на юго-восток осуществляется прибавлением вектора (1, 0). Третья ось "северо-восток -> юго-запад", соответствует направлению (1, -1)
PS: ой, я че-то прогнал, здесь же не соты, но система координат может помочь

»
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Предлагаю делать так. Разбить исходную фигуру на строки, в каждой строке сделать нумерацию по наклонным столбцам. Тогда каждому треугольнику будут соответствовать 3 цифры: номер строки, номер косого столбца и ориентация треугольника (острием вверх или вниз). Чтобы получить такое представление, предлагаю обходить фигуру в указанном в задаче порядке, для каждой строки отмечая номера косых отрезков, по которым мы эту строку пересекали. Затем нормируем все отрезки (т.е. сместим нумерацию так, чтобы строки, в которых мы были, начинались с нулевой, так же как и номера вертикальных отрезков), после чего проходим по каждой строке и добавляем в фигуру все треугольники, лежащие между парами отрезков.

P.s. "заранее" пишется слитно

P.p.s. Неплохо бы добавить в пост ссылку на задачу.