Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.10;
Скачать: CL | DM;

Вниз

Количество треугольников в массиве   Найти похожие ветки 

 
trxnet ©   (2009-11-06 19:14) [0]

Привет всем. Задали задачу решить, но немогу решить. Вобщем, есть 2мерный массив:

10х10
const x: Array [0..9, 0..9] of Integer
=((0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 1, 1, 1, 0, 0, 0, 0),
(0, 0, 0, 1, 1, 1, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 1, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(0, 1, 0, 0, 0, 0, 1, 1, 0, 0),
(0, 1, 0, 0, 0, 0, 1, 1, 0, 0),
(0, 1, 0, 0, 0, 0, 1, 1, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));

Нужно посчитать в нем кол-во прямоугольников (жирным веделены), прямоугольник состоящий из 1 не считается. Как это можно реализовать? Спасибо.


 
@!!ex ©   (2009-11-06 19:29) [1]

набор 8х8 точек - это сколько прямоугольников?
Если один, то элементарно делается.


 
Сергей М. ©   (2009-11-06 19:34) [2]


> Количество треугольников


>кол-во прямоугольников


Страшно подумать что будет дальше - то три, то прямо, то косо ..


 
trxnet ©   (2009-11-06 19:40) [3]

Извеняюсь, прямоугольников


 
Сергей М. ©   (2009-11-06 19:44) [4]

Ну вот сколько ты их видишь в этом массиве ?)


 
trxnet ©   (2009-11-06 19:46) [5]

3 получается, яж выделил))


 
Сергей М. ©   (2009-11-06 19:57) [6]

Это почему же 3 ?
И что значит "состоящий из 1 не считается" ?


 
trxnet ©   (2009-11-06 20:07) [7]

ну который состоит из 1, вон в пятой строке стоит 1, она не должна считаться за прямоугольник.


 
Сергей М. ©   (2009-11-06 20:13) [8]

Тогда чем

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 1, 1, 1, 0, 0, 0, 0),
(0, 0, 0, 1, 1, 1, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 1, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(0, 1, 0, 0, 0, 0, 1, 1, 0, 0),
(0, 1, 0, 0, 0, 0, 1, 1, 0, 0),
(0, 1, 0, 0, 0, 0, 1, 1, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

не прямоугольник ?


 
RWolf ©   (2009-11-06 20:16) [9]

Если в лоб — перебрать все 100 клеток в цикле двойной вложенности на предмет истинности предположени\ «клетка P1 — это левый верхний угол прямоугольника, а клетка P2 — правый нижний, причём точки не совпадают».
Критерий прямоугольности:
1) число в любой клетке, координаты которой лежат между координатами 1 и 2, равно единице;
2) числа в клетках-соседях прямоугольника равны нулю.


 
Дмитрий Белькевич   (2009-11-06 20:17) [10]

Как представлю себе процесс извенения... Бррррр...


 
Омлет ©   (2009-11-06 21:23) [11]

Идем в цикле, находим 1, делаем рекурсивный floodFill, смотрим, получился ли прямоугольник и заменяем заливку на 0.


 
SergP ©   (2009-11-06 21:39) [12]

Что-то я не понял что здесь является прямоугольником, а что нет...
Каковы критерии ?


 
Омлет ©   (2009-11-06 21:49) [13]

Да, если еще можно учитывать незалитые прямоугольники, то всё немного усложняется.

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(0, 1, 1, 1, 1, 1, 0, 1, 1, 1),
(0, 1, 0, 1, 1, 1, 0, 1, 0, 1),
(0, 1, 0, 1, 1, 1, 0, 1, 1, 1),
(0, 1, 0, 0, 0, 1, 0, 0, 0, 0),
(0, 1, 1, 1, 1, 1, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 1, 1, 0, 0),
(0, 1, 0, 0, 0, 1, 1, 1, 1, 0),
(0, 1, 0, 0, 0, 1, 1, 1, 1, 0),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

Тут сколько?


 
Омлет ©   (2009-11-06 21:50) [14]

> [13] Омлет ©   (06.11.09 21:49)

две единички забыл выделить. Но они тоже есть :)


 
trxnet ©   (2009-11-06 22:06) [15]

Не залитых не должно быть.

Прямоугольником считатется, если подрят идут 2 и более по горизонтали и вертикали.


 
Сергей М. ©   (2009-11-06 22:34) [16]


> trxnet ©   (06.11.09 22:06) [15]


Это тот самый 3-й прямоугольник, который у тебя "получается":

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 1, 1, 1, 0, 0, 0, 0),
(0, 0, 0, 1, 1, 1, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 1, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(0, 1, 0, 0, 0, 0, 1, 1, 0, 0),
(0, 1, 0, 0, 0, 0, 1, 1, 0, 0),
(0, 1, 0, 0, 0, 0, 1, 1, 0, 0),
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

И где здесь "2 и более по горизонтали" ?
Ты и вправду дибил или прикидываешься ?)


 
TUser ©   (2009-11-06 22:55) [17]

в этом массиве три прямоугольника, ты сам сказал


 
Игорь Шевченко ©   (2009-11-06 23:24) [18]

lines пишем...


 
trxnet ©   (2009-11-06 23:30) [19]

Прямоугольником считатется, если подрят идут 2 и более едениц по горизонтали или вертикали. Но если есть такая запись:
11
11
11

или такая: 1111
               1111

то считаем как прямоугольник.


 
TUser ©   (2009-11-06 23:37) [20]

11
11
1111
1111

тут сколько?


 
trxnet ©   (2009-11-06 23:41) [21]


> TUser ©   (06.11.09 23:37) [20]


  Сам незнаю)) Для такого размещения едениц условия нету)) Короче, похоже мне нужно узнать конкретные условия.


 
RWolf ©   (2009-11-06 23:44) [22]

Ещё неплохо бы уточнить, сколько прямоугольников вот тут:

0000000
0001100
0001100
0110000
0110000
0000000



Страницы: 1 вся ветка

Текущий архив: 2010.01.10;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.016 c
15-1257924086
@!!ex
2009-11-11 10:21
2010.01.10
Почему мы всегда пытаемся "догонять"??


4-1226307753
DimDim
2008-11-10 12:02
2010.01.10
Лажа с округлениями???


3-1233215568
Роман
2009-01-29 10:52
2010.01.10
как выбрать все дубликаты талицы SQL запросом


15-1257433390
test
2009-11-05 18:03
2010.01.10
Lazarus + Excel


2-1258470387
Pascal96
2009-11-17 18:06
2010.01.10
Задача на сортировку.