আয়তক্ষেত্র দিয়ে একটি অঞ্চল কভার করুন


22

ইনপুট

এই চ্যালেঞ্জটিতে আপনার ইনপুট হল পূর্ণসংখ্যার জোড়ার একটি তালিকা। তারা বিমানের ইউনিট স্কোয়ারগুলির দক্ষিণ-পশ্চিম কোণগুলিকে উপস্থাপন করে এবং তালিকাটি তাদের ইউনিয়নকে বিমানের উপসেট হিসাবে উপস্থাপন করে। উদাহরণস্বরূপ, তালিকা

[(0,0),(1,0),(0,1),(1,1),(2,1),(1,2),(2,2)]

এই ছবিতে লাল রঙের সেটটি উপস্থাপন করে:

একটি ডোমেন

আউটপুট

ইয়ার আউটপুট হ'ল বিমানের আয়তক্ষেত্রাকার উপগ্রহের প্রতিনিধিত্ব করে পূর্ণসংখ্যা চতুর্ভুজগুলির একটি তালিকা। আরও স্পষ্টতই, একটি চতুর্ভুজ (x,y,w,h)প্রস্থ w > 0এবং উচ্চতার একটি আয়তক্ষেত্র পুনরাবৃত্তি করে h > 0যার দক্ষিণ-পশ্চিম কোণটি রয়েছে (x,y)। আয়তক্ষেত্রগুলি অবশ্যই ইনপুট অঞ্চলের যথাযথ প্রচ্ছদ গঠন করতে পারে, এই অর্থে যে ইউনিট স্কোয়ারগুলির প্রত্যেকটিই কিছু আয়তক্ষেত্রের উপসেট হয়, প্রতিটি আয়তক্ষেত্রটি অঞ্চলের একটি উপসেট হয় এবং দুটি আয়তক্ষেত্রগুলি কেবল তাদের সীমানায় ওভারল্যাপ হতে পারে। তুচ্ছ সমাধানগুলি নিষিদ্ধ করতে, আচ্ছাদনটিতে দুটি আয়তক্ষেত্র থাকতে হবে না যেগুলি একটি বৃহত আয়তক্ষেত্রে একত্রিত হতে পারে।

উদাহরণস্বরূপ, তালিকা

[(0,0,2,1),(0,1,3,1),(1,2,2,1)]

আইনী আচ্ছাদন প্রতিনিধিত্ব করে

একটি আইনী আচ্ছাদন

উপরের অঞ্চলটি যেখানে প্রচ্ছদ দেওয়া হয়েছে

[(0,0,2,2),(2,1,1,1),(1,2,1,1),(2,2,1,1)]

অবৈধ, যেহেতু প্রতিবেশী 1-বাই -1 স্কোয়ারগুলি একত্রীকরণ করা যেতে পারে:

একটি অবৈধ আচ্ছাদন

বিধি

আপনি একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন দিতে পারেন। ইনপুট এবং আউটপুটটির সুনির্দিষ্ট বিন্যাস কারণের মধ্যে গুরুত্বপূর্ণ নয়। সংক্ষিপ্ততম বাইট গণনা জয় এবং মানক লুফোলগুলি অনুমোদিত নয়। আপনি আপনার অ্যালগরিদম এবং কিছু উদাহরণ আউটপুট ব্যাখ্যা ব্যাখ্যা করতে উত্সাহিত করা হয়।

পরীক্ষার মামলা

একটি U- আকারের অঞ্চল:

[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(2,0),(2,1),(3,0),(3,1),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5)]

ইউ-আকৃতি

একটি বৃহত ত্রিভুজ:

[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(0,9),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(3,0),(3,1),(3,2),(3,3),(3,4),(3,5),(3,6),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(5,0),(5,1),(5,2),(5,3),(5,4),(6,0),(6,1),(6,2),(6,3),(7,0),(7,1),(7,2),(8,0),(8,1),(9,0)]

ত্রিভুজ

গর্তযুক্ত একটি বর্গ:

[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9),(3,0),(3,1),(3,2),(3,4),(3,5),(3,6),(3,7),(3,8),(3,9),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(4,6),(4,7),(4,8),(4,9),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5),(5,7),(5,8),(5,9),(6,1),(6,2),(6,3),(6,5),(6,6),(6,7),(6,8),(6,9),(7,0),(7,1),(7,2),(7,3),(7,4),(7,5),(7,6),(7,7),(7,8),(7,9),(8,0),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),(8,8),(8,9),(9,0),(9,1),(9,2),(9,3),(9,4),(9,5),(9,6),(9,7),(9,8),(9,9)]

হল্ড স্কোয়ার

সংযুক্ত অঞ্চল:

[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(1,0),(1,1),(1,2),(1,3),(1,4),(1,6),(1,7),(1,8),(1,9),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9),(4,0),(4,1),(4,2),(4,4),(4,5),(4,6),(4,7),(4,8),(4,9),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5),(5,6),(5,7),(5,8),(5,9),(6,0),(6,1),(6,2),(6,4),(6,5),(6,6),(6,7),(6,8),(6,9),(8,0),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),(8,8),(8,9),(9,0),(9,1),(9,2),(9,3),(9,7),(9,8),(9,9),(10,0),(10,1),(10,2),(10,3),(10,4),(10,5),(10,6),(10,7),(10,8),(10,9)]

সংযোগ বিচ্ছিন্ন

যাচাইকারী

আপনার সমাধানটি যাচাই করতে এই পাইথন 2 প্রোগ্রামটি ব্যবহার করুন । এটি STDIN থেকে কমা দ্বারা পৃথককৃত টিপলগুলির একটি তালিকা (ইনপুট) এবং চতুর্ভুজগুলির একটি তালিকা (আপনার আউটপুট) লাগে।

আমি ছবি তৈরি করতে এই পাইথন 2 প্রোগ্রামটিও লিখেছিলাম এবং আপনি এটি ব্যবহার করতে পারেন। এটি STDIN থেকে টিপলস বা চতুর্ভুজগুলির একটি তালিকা নেয় এবং একটি ফাইল তৈরি করে out.png। এটি পিআইএল লাইব্রেরি প্রয়োজন। আপনি চাইলে গ্রিড সেলগুলির আকার এবং গার্ড লাইনের প্রস্থও পরিবর্তন করতে পারেন।

উত্তর:


12

পাইথন: 196 193 182 চরিত্র

def g(r):
 for p in r:
  for q in r:
   for h in 0,1:
    if p[h::2]==q[h::2]and p[1-h]+p[~h]==q[1-h]:p[~h]+=q[~h];r.remove(q);return g(r)
 return r
f=lambda P:g([x+[1,1]for x in P])

আমার প্রথম সমাধানটি কেএসএফটি হিসাবে ঠিক একই অ্যালগরিদম ব্যবহার করেছে, তাই আমি অন্যান্য পদ্ধতির সাথে পরীক্ষামূলক।

প্রথমে আমি কিছু প্রাকপ্রসেসিং করি, আমি সমস্ত পয়েন্টকে ছোট 1x1 আয়তক্ষেত্রগুলিতে রূপান্তর করি {x+(1,1)for x in P}। এই আয়তক্ষেত্রগুলির সাথে, আমি ফাংশনটি কল করি ggআয়তক্ষেত্রগুলির প্রতিটি সংমিশ্রণে পুনরাবৃত্তি হয়। যদি এটি 2 টি আয়তক্ষেত্র খুঁজে পায়, তবে এটি একটি বৃহত একটিতে একীভূত হতে পারে, এটি উভয়ই মুছে ফেলে এবং নতুনটি সংযোজন করে। পরে এটি নতুন আয়তক্ষেত্রগুলির সেট দিয়ে নিজেকে কল করে।

ব্যবহার

f([[0,0],[1,0],[0,1],[1,1],[2,1],[1,2],[2,2]])

ফলাফল

এখানে ফলাফলের দৃশ্যায়ন রয়েছে। নোট করুন যে তারা বর্তমান সংস্করণে কিছুটা আলাদা হতে পারে। ধারণাটি যদিও, কোনও ধরণের লক্ষণীয় প্যাটার্ন নেই।

একটি U- আকারের অঞ্চল:

একটি বিশাল ত্রিভুজ

গর্তযুক্ত একটি বর্গ:

সংযুক্ত অঞ্চল:

শুধু মজাদার জন্য: পাইথ: 73 69 অক্ষর

D!HFGHFZHV2I&q%2>GN%2>ZNqs%2>G-1N@Z-1N X-3NG@Z-3NR!-H]Z)))RH!m+d*2]1Q

কেবল অফলাইন সংস্করণে কাজ করে। অনলাইন সংস্করণে বাগ এখন ঠিক করা হয়েছে। এটি এখানে চেষ্টা করুন: পাইথ সংকলক / নির্বাহক । তালিকার তালিকার তালিকা নয়, তালিকার একটি তালিকা প্রত্যাশা করে।

সম্পাদনা: @ edc65 থেকে একটি ধারণা ব্যবহৃত হয়েছে: উভয় আয়তক্ষেত্র মুছে ফেলার পরিবর্তে এবং একটি নতুন তৈরি করার পরিবর্তে আমি একটিটিকে পরিচালনা করি এবং কেবল একটি মুছি। পাইথন সলিউশনে আমি সেটগুলি এবং টিউপল-তালিকা-টুপল কাস্টগুলিতে চড়ে যেতে পারি। পাইথনে -11 অক্ষর / পাইথের -4 অক্ষর


2
পাইথন 3: স্মাইলি মুখগুলি এখন বৈধ কোড।
flawr

আমি ভুল হতে পারে, কিন্তু আমি মনে করি আপনি পরিবর্তন করতে পারেন 3-hকরতে ~h?
Sp3000

পাইথ সংস্করণের জন্য গৃহীত।
Zgarb

14

পাইথন - 272 261 258 251 224

আমি মনে করি আমি আরও গল্ফ করতে পারি। আমি নিশ্চিত যে এটি কাজ করে, তবে আমি এখনও পরীক্ষার সমস্ত ক্ষেত্রে এটি পরীক্ষা শেষ করি নি। আমি এটি পরীক্ষা শেষ। এটি পরীক্ষার সমস্ত ক্ষেত্রে কাজ করে।

a=sorted(input())
b=[]
r=range
for i in a:
 c=set(a)-set(b);w=h=1;x,y=i
 if i in b:continue
 while not{(x,y+h)}-c:h+=1
 while all((x+w,y+j)in c for j in r(h)):w+=1
 for j in r(w):
  for k in r(h):b+=(j+x,k+y),
 print x,y,w,h

আমি ফলাফলের চিত্র যুক্ত করতে কাজ করছি। সম্পাদনা করুন: উদাহরণ এবং পরীক্ষার ক্ষেত্রে ফলাফলগুলি এখানে:

উদাহরণ আউটপুট পরীক্ষার কেস 1 আউটপুট পরীক্ষার কেস 2 আউটপুট টেস্ট কেস 3 আউটপুট টেস্ট কেস 4 আউটপুট

আমি পার্লে এটি লেখার চেষ্টা করছি, তবে স্টিডিনের কাছ থেকে বিপুল সংখ্যক চরিত্র ছাড়াই কীভাবে বহুমাত্রিক অ্যারে পাবেন তা আমি বুঝতে পারি না। যে কেউ কোন পরামর্শ আছে?


দুটি জিনিস (i[0]+w,i[1]+j)not in cকরতে {(i[0]+w,i[1]+j)}-cএবং আপনার স্থানান্তর করতে পারেন w=h=1থেকে c=set(a)-set(b)লাইন
Sp3000

আরও কয়েকটি: b+=[(j+i[0],k+i[1])]আপনি b+=(j+i[0],k+i[1]),এবং আপনি rangeতিনবার ব্যবহার করেন যাতে এটি সংক্ষিপ্ততর হয়r=range
Sp3000

এছাড়াও আমি নিশ্চিত নই, কিন্তু এটা কি সম্ভব x,y=iতারপর ব্যবহার xএবং yপরিবর্তে i[0]এবং i[1]? এটি অনেকগুলি বাইট সংরক্ষণ করতে পারে।
Sp3000

এটি পরীক্ষা করা হয়নি, তবে আমি মনে করি এটি কার্যকর হয়: while not[j for j in r(h)if(x+w,y+j)not in c]:w+=1ব্যবহারের পরিবর্তে while all((x+w,y+j)in c for j in r(h)):w+=1
জাকুবে

@ Sp3000 / Jakube আমি আপনার সমস্ত পরামর্শ ব্যবহার করেছি।
কেএসএফটি

8

পাইথন 2, 139

প্রোগ্রামটি স্ট্যান্ডার্ড ইনপুটটিতে কোঁকড়া ধনুর্বন্ধনী দ্বারা ঘেরা অর্ডারযুক্ত জোড়গুলির তালিকা গ্রহণ করে। যেমন,{(0,0),(1,0),(0,1),(1,1),(2,1),(1,2),(2,2)}

s=input()
while s:x,y=min(s);w=h=0;exec"while(x+w,y)in s:w+=1\nwhile%s<=s:s-=%s;h+=1"%(("{(X,y+h)for X in range(x,x+w)}",)*2);print x,y,w,h

এটি প্রায়শ বিরক্তিকর (শুধুমাত্র গল্ফ নয়) যে পাইথন লুপ পরীক্ষার অভ্যন্তরে কোনও অ্যাসাইনমেন্টের অনুমতি দেয় না। এটির কাজ করার জন্য, আমি স্ট্রিং ফর্ম্যাটিং অপারেশন ব্যবহার করেছি।


ঐটা চিত্তাকর্ষক. কেএসএফটি হিসাবে একই অ্যালগরিদম, 'কেবল' 85 (!!!) অক্ষর ছোট।
জাকুব

5

গণিত - 315 285 267 বাইট

f=(r={};For[m=MemberQ;t=Table;s=Sort@#,s!={},For[{x,y,w,h}=#~Join~{1,1}&@@s;i=j=0,i<1||j<1,If[s~m~{x+w,y+a-1}~t~{a,h}==True~t~{h},w++,i++];If[s~m~{x+a-1,y+h}~t~{a,w}==True~t~{w},h++,j++]];s=s~Cases~_?(!m[Join@@t[{x+a,y+b}-1,{a,w},{b,h}],#]&);r~AppendTo~{x,y,w,h}];r)&

@ মার্টিনব্যাটনার কাছ থেকে কিছু সহায়তার সাথে।

Ungolfed:

f = (
    rectangles = {};
    For[squares = Sort[#], squares != {},
        For[{x, y, w, h} = Join[squares[[1]], {1, 1}]; i = j = 0, i < 1 || j < 1,
            If[Table[MemberQ[squares, {x + w, y + a - 1}], {a, h}] == Table[True, {h}], w++, i++];
            If[Table[MemberQ[squares, {x + a - 1, y + h}], {a, w}] == Table[True, {w}], h++, j++];
        ];
        squares = Cases[squares, _ ? (!MemberQ[Join@@Table[{x + a - 1, y + b - 1}, {a, w}, {b, h}], #] &)];
        AppendTo[rectangles, {x, y, w, h}]
    ];
    rectangles
)&

ব্যবহার:

In: f @ {{0,0},{1,0},{0,1},{1,1},{2,1},{1,2},{2,2}}
Out: {{0, 0, 2, 2}, {1, 2, 2, 1}, {2, 1, 1, 1}}

এখানে চিত্র বর্ণনা লিখুন

পরীক্ষার মামলা

একটি U- আকারের অঞ্চল

এখানে চিত্র বর্ণনা লিখুন

{{0, 0, 6, 2}, {0, 2, 2, 4}, {4, 2, 2, 4}}

একটি বিশাল ত্রিভুজ

এখানে চিত্র বর্ণনা লিখুন

{{0, 0, 6, 5}, {0, 5, 3, 3}, {0, 8, 2, 1}, {0, 9, 1, 1}, {3, 5, 2, 1}, {3, 6, 1, 1}, {6, 0, 3, 2}, {6, 2, 2, 1}, {6, 3, 1, 1}, {9, 0, 1, 1}}

গর্তযুক্ত একটি বর্গক্ষেত্র

এখানে চিত্র বর্ণনা লিখুন

{{0, 0, 6, 3}, {0, 3, 3, 6}, {1, 9, 9, 1}, {3, 4, 3, 2}, {3, 6, 2, 3}, {4, 3, 6, 1}, {5, 7, 5, 2}, {6, 1, 4, 2}, {6, 5, 4, 2}, {7, 0, 3, 1}, {7, 4, 3, 1}}

সংযুক্ত অঞ্চল

এখানে চিত্র বর্ণনা লিখুন

{{0, 0, 2, 5}, {0, 5, 1, 4}, {1, 6, 2, 4}, {2, 1, 1, 5}, {4, 0, 3, 3}, {4, 4, 3, 6}, {5, 3, 1, 1}, {8, 0, 3, 4}, {8, 4, 1, 6}, {9, 7, 2, 3}, {10, 4, 1, 3}}

4

হাস্কেল, 158

f[]=[]
f s@((x,y):_)=(x,y,w-x,h-y):f[r|r@(a,b)<-s,a<x||a>=w||b<y||b>=h]where w=[i|i<-[x..],notElem(i,y)s]!!0;h=[i|i<-[y..],not$all(\x->elem(x,i)s)[x..w-1]]!!0

পরীক্ষার কেস এবং চিত্রগুলি শীঘ্রই এখানে উপস্থিত হবে।

অ্যালগরিদম: প্রথম স্কোয়ারটি ধরুন। ইনপুটটিতে নয় এমন কোনও স্কোয়ারের মুখোমুখি না হয়ে ডানদিকে পৌঁছান। তারপরে ইনপুটটিতে স্কোয়ার না রেখে যতদূর সম্ভব পৌঁছান। অনুপস্থিত স্কোয়ার ছাড়াই আমাদের এখন একটি আয়তক্ষেত্র রয়েছে। এটি আউটপুটে যুক্ত করুন, ইনপুট থেকে এর সমস্ত স্কোয়ার সরিয়ে ফেলুন এবং পুনরাবৃত্তভাবে কল করুন।


আপনি প্রতিস্থাপন 1 বাইট সংরক্ষণ করতে পারবেন not$all(\x->elem(x,i)s)সঙ্গে any(\x->notElem(x,i)s)
নিমি

4

জাভাস্ক্রিপ্ট (ES6) 148 155 199

Edit2 আরো কিছু টিউনিং
সম্পাদনা কিছু golfing + + পুনরাবৃত্তির ব্যবহার পুনর্লিখন। এমন হ্রাস আশা করেনি। এখন এটি অনুসরণ করা একটু কঠিন, তবে অ্যালগরিদম একই is

অ্যালগরিদমটি @ জাকুবের উত্তরের অনুরূপ।

  1. প্রতিটি পয়েন্ট 1x1 বর্গ হয় (প্রাক প্রসেসিং)
  2. প্রতিটি উপাদান জন্য, এটি অন্য
    হ্যাঁ সঙ্গে একত্রীকরণ করা যেতে পারে কিনা তা পরীক্ষা করে দেখুন ? প্রথম উপাদান বৃদ্ধি পায়, দ্বিতীয় উপাদান মোছা হয়, দ্বিতীয় ধাপে আবার শুরু করুন
    , পরবর্তী উপাদানটিতে যান
F=l=>
  (l.map(x=>x.push(1,1)),R=f=>
    l.some(u=>
      (l=l.filter(t=>
        [0,1].every(p=>u[p]-t[p]|u[p^=2]-t[p]|u[p^=3]-t[p]+u[p^=2]||!(f=u[p]+=t[p]))
      ),f)
    )?R():l
  )()

স্নিপেটে পরীক্ষা

F=l=>(l.map(x=>x.push(1,1)),R=f=>l.some(u=>(l=l.filter(t=>[0,1].every(p=>u[p]-t[p]|u[p^=2]-t[p]|u[p^=3]-t[p]+u[p^=2]||!(f=u[p]+=t[p]))),f))?R():l)()

// Test
MyCanvas.width= 600;
MyCanvas.height = 220;
var ctx = MyCanvas.getContext("2d");
ctx.fillStyle="#f23";

Draw=(x,y,f,l)=>l.forEach(p=>ctx.fillRect(x+p[0]*f,y+p[1]*f,p[2]*f-1||f-1,p[3]*f-1||f-1));

test=[
[[0,0],[1,0],[0,1],[1,1],[2,1],[1,2],[2,2]],
[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[1,0],[1,1],[1,2],[1,3],[1,4],[1,5],[2,0],[2,1],[3,0],[3,1],[4,0],[4,1],[4,2],[4,3],[4,4],[4,5],[5,0],[5,1],[5,2],[5,3],[5,4],[5,5]],
[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[1,0],[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[1,7],[1,8],[2,0],[2,1],[2,2],[2,3],[2,4],[2,5],[2,6],[2,7],[3,0],[3,1],[3,2],[3,3],[3,4],[3,5],[3,6],[4,0],[4,1],[4,2],[4,3],[4,4],[4,5],[5,0],[5,1],[5,2],[5,3],[5,4],[6,0],[6,1],[6,2],[6,3],[7,0],[7,1],[7,2],[8,0],[8,1],[9,0]],
[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[1,0],[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[1,7],[1,8],[1,9],[2,0],[2,1],[2,2],[2,3],[2,4],[2,5],[2,6],[2,7],[2,8],[2,9],[3,0],[3,1],[3,2],[3,4],[3,5],[3,6],[3,7],[3,8],[3,9],[4,0],[4,1],[4,2],[4,3],[4,4],[4,5],[4,6],[4,7],[4,8],[4,9],[5,0],[5,1],[5,2],[5,3],[5,4],[5,5],[5,7],[5,8],[5,9],[6,1],[6,2],[6,3],[6,5],[6,6],[6,7],[6,8],[6,9],[7,0],[7,1],[7,2],[7,3],[7,4],[7,5],[7,6],[7,7],[7,8],[7,9],[8,0],[8,1],[8,2],[8,3],[8,4],[8,5],[8,6],[8,7],[8,8],[8,9],[9,0],[9,1],[9,2],[9,3],[9,4],[9,5],[9,6],[9,7],[9,8],[9,9]],
[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[1,0],[1,1],[1,2],[1,3],[1,4],[1,6],[1,7],[1,8],[1,9],[2,1],[2,2],[2,3],[2,4],[2,5],[2,6],[2,7],[2,8],[2,9],[4,0],[4,1],[4,2],[4,4],[4,5],[4,6],[4,7],[4,8],[4,9],[5,0],[5,1],[5,2],[5,3],[5,4],[5,5],[5,6],[5,7],[5,8],[5,9],[6,0],[6,1],[6,2],[6,4],[6,5],[6,6],[6,7],[6,8],[6,9],[8,0],[8,1],[8,2],[8,3],[8,4],[8,5],[8,6],[8,7],[8,8],[8,9],[9,0],[9,1],[9,2],[9,3],[9,7],[9,8],[9,9],[10,0],[10,1],[10,2],[10,3],[10,4],[10,5],[10,6],[10,7],[10,8],[10,9]]
]

Draw(0,0,10,test[0]),Draw(0,110,10,F(test[0]))
Draw(50,0,10,test[1]),Draw(50,110,10,F(test[1]))
Draw(130,0,10,test[2]),Draw(130,110,10,F(test[2]))
Draw(250,0,10,test[3]),Draw(250,110,10,F(test[3]))
Draw(370,0,10,test[4]),Draw(370,110,10,F(test[4]))
<canvas id=MyCanvas></canvas>


3

গণিত, 153 151 144 136 133

Sort[{##,1,1}&@@@Input[]]//.{a___,r:{x_,y_,__},b___,{X_,Y_,W_,H_},c___}/;r=={x,Y,X-x,H}||r=={X,y,W,Y-y}:>{a,r+Sign@{0,0,X-x,Y-y},b,c}

উদাহরণ:

ইনপুট:

{{0, 0}, {1, 0}, {0, 1}, {1, 1}, {2, 1}, {1, 2}, {2, 2}}

আউটপুট:

{{0, 0, 2, 2}, {1, 2, 2, 1}, {2, 1, 1, 1}}

এখানে চিত্র বর্ণনা লিখুন

ইনপুট:

{{0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}, {0, 6}, {0, 7}, {0, 8}, {1, 0}, {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}, {1, 7}, {1, 8}, {1, 9}, {2, 0}, {2, 1}, {2, 2}, {2, 3}, {2, 4}, {2, 5}, {2, 6}, {2, 7}, {2, 8}, {2, 9}, {3, 0}, {3, 1}, {3, 2}, {3, 4}, {3, 5}, {3, 6}, {3, 7}, {3, 8}, {3, 9}, {4, 0}, {4, 1}, {4, 2}, {4, 3}, {4, 4}, {4, 5}, {4, 6}, {4, 7}, {4, 8}, {4, 9}, {5, 0}, {5, 1}, {5, 2}, {5, 3}, {5, 4}, {5, 5}, {5, 7}, {5, 8}, {5, 9}, {6, 1}, {6, 2}, {6, 3}, {6, 5}, {6, 6}, {6, 7}, {6, 8}, {6, 9}, {7, 0}, {7, 1}, {7, 2}, {7, 3}, {7, 4}, {7, 5}, {7, 6}, {7, 7}, {7, 8}, {7, 9}, {8, 0}, {8, 1}, {8, 2}, {8, 3}, {8, 4}, {8, 5}, {8, 6}, {8, 7}, {8, 8}, {8, 9}, {9, 0}, {9, 1}, {9, 2}, {9, 3}, {9, 4}, {9, 5}, {9, 6}, {9, 7}, {9, 8}, {9, 9}}

আউটপুট:

{{0, 0, 3, 9}, {1, 9, 9, 1}, {3, 0, 3, 3}, {3, 4, 1, 5}, {4, 3, 1, 6}, {5, 3, 1, 3}, {5, 7, 1, 2}, {6, 1, 1, 3}, {6, 5, 1, 4}, {7, 0, 3, 9}}

এখানে চিত্র বর্ণনা লিখুন

অ্যালগরিদম:

অঞ্চলটিকে ইউনিট স্কোয়ারগুলি দিয়ে Coverেকে দিন, তারপরে তাদের একত্র করুন।

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.