поиск замкнутых контуров в списке координат
-
- Завсегдатай
- Сообщения: 472
- Зарегистрирован: 09 янв 2011, 09:11
- Репутация: 7
- Откуда: Хабаровский край
поиск замкнутых контуров в списке координат
здравствуйте.
есть длинный непрерывный список пар координат замкнутых контуров (примерно как на вложении)
нужно выделить каждый замкнутый контур по одинаковым координатам начальной и конечной точки.
У этой задачи есть какое то специальное название ( по типу задача о трех ферзях или там задача Монти-Пайтона -Разумовского или что то типа того)
есть длинный непрерывный список пар координат замкнутых контуров (примерно как на вложении)
нужно выделить каждый замкнутый контур по одинаковым координатам начальной и конечной точки.
У этой задачи есть какое то специальное название ( по типу задача о трех ферзях или там задача Монти-Пайтона -Разумовского или что то типа того)
- Вложения
-
- контуры.jpg (84.66 КБ) 674 просмотра
-
- Гуру
- Сообщения: 3933
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1029
- Ваше звание: программист
- Откуда: Казань
Re: поиск замкнутых контуров в списке координат
если незамкнутых контуров и "хвостов" нет, то это тривиальная задача, мы из на 1 курсе решали
вспомнил молодость
Она нетривиальная, только если есть "хвосты" вне циклов

вспомнил молодость

Код: Выделить всё
# generate rings
sink("foo")
n.ring = 10
max.rad=10
set.seed(123)
n.pnt = sample(3:20,n.ring)
rad=runif(n.ring,3,max.rad-1)
m=matrix(0,nrow=sum(n.pnt)+n.ring,ncol=2)
ncol=round(sqrt(n.ring))
pos=0
for(i in 1:n.ring) {
x.shift = i %% ncol
y.shift = i %/% ncol
x0 = i*x.shift*max.rad
y0 = i*y.shift*max.rad
for(j in 0:n.pnt[i]) {
pos=pos+1
delta = (2*pi)/n.pnt[i]
m[pos,]=c(round(x0+rad[i]*cos(delta*j)),round(y0+rad[i]*sin(delta*j)))
cat(m[pos,1]," ",m[pos,2],"\n")
}
}
sink()
# plot points
plot(m)
# find rings
p=read.table("foo",header=FALSE)
state="new"
ring.list=list()
for(i in 1:nrow(p)) {
if(state == "new") {
cur.ring=as.double(p[i,])
state="old"
} else {
cur.pnt=as.double(p[i,])
cur.ring=rbind(cur.ring,cur.pnt)
if(cur.pnt[1] == cur.ring[1,1] && cur.pnt[2] == cur.ring[1,2]) {
state="new"; ring.list=append(ring.list,list(cur.ring))
}
}
}
# plot rings
for(i in 1:length(ring.list)) {
points(ring.list[[i]],col="red",type="l")
}
-
- Завсегдатай
- Сообщения: 472
- Зарегистрирован: 09 янв 2011, 09:11
- Репутация: 7
- Откуда: Хабаровский край
Re: поиск замкнутых контуров в списке координат
в гугл или яндекс в запросе если писать "тривиальная задача" много что вылетает.
как называется она? есть же название? в комментариях что то про кольца?
как называется она? есть же название? в комментариях что то про кольца?
-
- Гуру
- Сообщения: 3933
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1029
- Ваше звание: программист
- Откуда: Казань
-
- Завсегдатай
- Сообщения: 472
- Зарегистрирован: 09 янв 2011, 09:11
- Репутация: 7
- Откуда: Хабаровский край
Re: поиск замкнутых контуров в списке координат
Но если задача и тривиальная, вы когда на первом курсе код по ее решению писали в процессе работы же вдохновлялись какой то областью знаний( не одним же здравым смыслом). Какой именно? не ботанику и не уроки труда ведь в школе вспоминали и не квадратные уравнения
Теорию кодирования ?
Теорию кодирования ?
-
- Гуру
- Сообщения: 3933
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1029
- Ваше звание: программист
- Откуда: Казань
-
- Завсегдатай
- Сообщения: 472
- Зарегистрирован: 09 янв 2011, 09:11
- Репутация: 7
- Откуда: Хабаровский край
Re: поиск замкнутых контуров в списке координат
понятно, спасибо
-
- Гуру
- Репутация: 994
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: поиск замкнутых контуров в списке координат
Вычислительная геометрия
-
- Завсегдатай
- Сообщения: 472
- Зарегистрирован: 09 янв 2011, 09:11
- Репутация: 7
- Откуда: Хабаровский край
-
- Завсегдатай
- Сообщения: 472
- Зарегистрирован: 09 янв 2011, 09:11
- Репутация: 7
- Откуда: Хабаровский край
Re: поиск замкнутых контуров в списке координат
Но если нужно преобразовать таблицу координат ( многостраничную таблицу) из 4х колонок сделать одну либо не таблицу экселя ,а файл такой же но csv
- Вложения
-
- таблица.jpg (955.32 КБ) 537 просмотров
-
- Гуру
- Репутация: 994
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: поиск замкнутых контуров в списке координат
любой язык программирования
-
- Завсегдатай
- Сообщения: 472
- Зарегистрирован: 09 янв 2011, 09:11
- Репутация: 7
- Откуда: Хабаровский край
Re: поиск замкнутых контуров в списке координат
Но может есть какой-то специальный подход.
Или что-ли двигаться по строкам до конца страницы потом перескакивать опять в начало таблицы но во вторую колонку с парой координат и опять до конца страницы.
Если так то это тоже самое что пальцем по таблице водить но только со скоростью компьютера?
Или что-ли двигаться по строкам до конца страницы потом перескакивать опять в начало таблицы но во вторую колонку с парой координат и опять до конца страницы.
Если так то это тоже самое что пальцем по таблице водить но только со скоростью компьютера?
-
- Гуру
- Сообщения: 3933
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1029
- Ваше звание: программист
- Откуда: Казань
Re: поиск замкнутых контуров в списке координат
1) Ёксель - зло, создающее проблемы при обработке данных. Причем всегда, в самых неожиданных местах, и в самое неподходящее время.
2) Данные нужно готовить в нормальном виде. Если кто-то умудрился написать таблицу кусками в несколько частей, то его нужно заставить скопипастить ее на новую страницу в нормальном виде. И сделать строгий выговор, чтобы не чудил. Наверняка эти данные в таблицу не руками вбивали, а брали из файла, где все было нормально, а не кусками. Вот с этим нормальным файлом и нужно работать, а не бороться с искуственно созданными трудностями
2) Данные нужно готовить в нормальном виде. Если кто-то умудрился написать таблицу кусками в несколько частей, то его нужно заставить скопипастить ее на новую страницу в нормальном виде. И сделать строгий выговор, чтобы не чудил. Наверняка эти данные в таблицу не руками вбивали, а брали из файла, где все было нормально, а не кусками. Вот с этим нормальным файлом и нужно работать, а не бороться с искуственно созданными трудностями

-
- Завсегдатай
- Сообщения: 472
- Зарегистрирован: 09 янв 2011, 09:11
- Репутация: 7
- Откуда: Хабаровский край
Re: поиск замкнутых контуров в списке координат
Необязательно эксель. Например питон. Но не не так что взять первую строку выбрать данные затем вторую третью и т д. Так то сделать можно но может быть есть другой подход. Какой то тривиальный алгоритм для таких случаев.
А первоначальный файл вообще в pdf и им по лицу его создателям не по возишь ибо ведомство какое-то
А первоначальный файл вообще в pdf и им по лицу его создателям не по возишь ибо ведомство какое-то
-
- Гуру
- Сообщения: 3933
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1029
- Ваше звание: программист
- Откуда: Казань
Re: поиск замкнутых контуров в списке координат
4 куска проще скопировать руками на новую страницу, чем парсер городить.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя