Как стать автором
Обновить

Комментарии 3

Свой запрос на третью потом получилось сократить до 564.

with recursive b as(select min(x)a,max(x)b,min(y)c,max(y)d from elevation3d),j as(select q,string_agg(l,'0'order by e)s,k from(select q,e,string_agg((select coalesce(max('0'),'w')from elevation3d where(x,y)=(w,e)and h>=q),''order by w)l,sum(1)::int k from b,generate_series(1,10)q,generate_series(c-1,d+1)e,generate_series(a-1,b+1)w group by q,e)group by q,k),r as(select','||s s,k from j union select regexp_replace(s,'w(.{'||k||'})?,|,(.{'||k||'})?w',',\1\2,','g'),k from r)cycle s set n using m select coalesce(sum(length(translate(s,',0',''))),0)from r where n

Спасибо за интересные задачи!

Всегда пожалуйста! Расскажите, Никита, как пришла в голову такая идея и главное — как удалось это отладить? Я долго разбирался (:

На работе часто регулярки пишу. Тут прямо руки чесались их применить.

У меня проблема была другая — с тем, чтобы из таблицы сечение получить покороче.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий