Nejdříve naznačím o co mi v základě jde. Mám nějaký čtverec A, který si rozdělím na čtyři stejně velké čtverce a,b,c,d. Bude mě zajímat kde se nachází rohové souřadnice každého čtverce. Včechny ty souřadnice leží ve čtverkové soustavě.
Pro zjednodušení, každý čtverec identifikuju podle levého horního rohu, takže A má souřadnici 0,0 a konří vpravo dole na 1,1 . Podobně a začíná na 0,0, b na 0,1 , c na 1,0 , d na 1,0
No a teď mi jde o nějakou definici čtverců které hledám. Když chci najít všechny čtverce jednoduše stačí zadat levý horní a pravý dolní čili rozsah 0,0-1,1. Tohle je jednoduché a jasné. Dobře, ale co když chci zadat pravidlo, že mě zajímají všechny čtverce kromě a? Tak musím definovat pole rozsahů, kde je popsáno b + c až d. Zjednodušeně řečeno. Jinak číselně dva rozsahy a: {1,0 až 2,1} + b až c: {0,1 až 2,2}.
No a teď pokročme dále. Co když ty čtverce dozdělím dále stejným způsobem? Nebudeme tedy pracovat se 4 čtverci, ale s 4x4 = 16 čtverci. Můj problém se týká toho, že se to začíná komplikovat. Když řeknu, chci vybrat všechny čtverce, je ta definice jednoduchá. Když řeknu, chci vybrat všechny kromě jednoho, je to taky jednoduché. Ale co když si vyberu tři čtverce, které nechci vybrat? Pak musím nějak zjistit (navrhnout funkci a pomocný objekt) jaké čtverce mám vybrat, tedy jak si rozvrhnout ty jednotlivé rozsahy. Je to jako puzzle, akorát že potřebuju vymyslet funkci která dokáže inteligentně vybrat ty čtverce (rohové souřadnice).
Nakonec co když to bude 8x8 (64) nebo 16x16 (256) čtverců pak už to bude o dost komplikovanější.
Takže bych potřeboval pomoct s realizací, protože nemám ani ponětí jak něco takového zrealizovat pomocí C. Jestli by tam měla být nějaká rekurzivní funkce, která zjišťuje minimální hodnoty v "exkluzivních" součadnicích a porovnává hodnoty ve smyčce. Nemám jasnou představu. Rozlišuji exclusivní a inclusivní souřadnice, ale zadání by mohlo být naopak: zadáš co chceš, a výsledkem by bylo co nechceš, ale to asi řešit nebudu a zůstanu jen u té inkluze.
Edit:
Zapoměl jsem napsat, že mě ne vždy zajímá celý čtverec A. Takže pokud bych měl 256x256 čtverců, tak mě bude třeba zajímat pouze určitá oblast a v té budu dělat tu exluzi. Ve skutečnosti těch čtverců může být třeba 4096x4096 a v tom mě bude zajímat nějaká vnořená oblast, kterou bych popsal mopocí vyloučení některých čtverců. Snad jsem tu základní myšlenku popsal.
PS:
Kdyby někdo tápal proč jsem to pojmenoval hledání průsečíku, tak asi proto, že to co chci vyloučit - (a) je průsečík ve čtverci A , zbytek je b,c,d.
PS 2:
Ještě dodám příklady na obrázcích. Červený čtverec je exkluzivní (co máme zadáno že máme hledat), bílé jsou incluzivní (pouze to co mě ve výsledku zajímá). Souřadnice mohou být prakticky jakékoliv, protože oblast hledání může začínat třeba na 256,256 a končit na 264,264