Комментарии 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
Спасибо за интересные задачи!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
«IT-Планета 2025»: задачи третьего этапа по PostgreSQL