কোনও গ্রিডে টাইলসের সেট কোনও বদ্ধ আকারের আকার দেয় কিনা তা নির্ধারণ করুন


10

একটি গ্রিডে টাইলসের সেট দেওয়া, আমি তা নির্ধারণ করতে চাই:

  • টাইলস যদি একটি বদ্ধ চিত্র তৈরি করে
  • বোর্ডের পাশগুলিকে চিত্রের প্রান্ত হিসাবে গণনা করার সময় যদি টাইলগুলি একটি বদ্ধ চিত্র তৈরি করে
  • পূর্ববর্তী দুটি বিবৃতিগুলির মধ্যে যদি সত্য হয়, তবে অতিরিক্ত টাইলগুলি সংযুক্ত চিত্রের অভ্যন্তরে প্রারম্ভিক টাইলস ফর্মটি পড়ে।

প্লেয়ারটি এক টাইলের উপর চাপ দিয়ে শুরু করবে, তারপরে একই রঙের টাইলগুলির একটি শৃঙ্খল তৈরি করতে তাদের আঙ্গুলটি অন্য টাইলগুলিতে টেনে আনবে। আমি পরের টাইলটি বৈধ কিনা তা দেখতে আমি যাচ্ছি check যাত্রা। প্লেয়ার একটি লাল টালি শুরু পারেন, তাদের একমাত্র পরবর্তী বৈধ পদক্ষেপ একটি নিকটবর্তী লাল টালি (কর্ণ হয় না COUNT)। যখন ব্যবহারকারী তাদের আঙুলটি তুলে রাখেন, উপরের 3 টি আইটেমের জন্য আমার চেক করতে সক্ষম হওয়া দরকার।

সুতরাং আমার প্রাথমিক ধারণাটি ছিল যেহেতু আমি যখনই গেছি প্রতিবার শৃঙ্খলার বৈধতা যাচাই করছিলাম , যখন খেলোয়াড়টি আঙুল তুলেছিল আমি প্রথম এবং শেষ টাইল সংলগ্ন কিনা তা পরীক্ষা করতে পারি। (আমি ইতিমধ্যে জানি যে তারা একই রঙ)) তারা যদি সংলগ্ন হয় তবে আমার কাছে এমন একটি কুঁড়ি ছিল যে আমি একটি বদ্ধ চিত্র তৈরি করতাম এবং আমি এখানে আসার চেষ্টা করব এবং দেখি যে আমি কোনও বড় কিছু মিস করছি কিনা, এবং পেতে আমার হান্চ সঠিক ছিল এমন কোনও ধরণের যৌক্তিক / গাণিতিক প্রমাণ (বা এটি উদাহরণ হিসাবে ভুল প্রমাণ করে))

আমি যখন আইটেম নম্বর 2 এর কথা ভেবেছিলাম তখন: আমার কাছে চেইনগুলির জন্যও অ্যাকাউন্ট করতে হবে যা বোর্ডের প্রান্তটি বদ্ধ চিত্রটির পাশ হিসাবে ব্যবহার করে। সেক্ষেত্রে চেইনের প্রথম এবং শেষ আইটেমগুলি সংলগ্ন হবে না তবে আমার কাছে এখনও একটি সংযুক্ত চিত্র থাকবে। তাই এখন আমি আবার এক বর্গাকারে ফিরে এসেছি।

গ্রিড স্থানাঙ্কগুলির এই চেইনটি আমি কী করতে পারি যদি তারা কোনও সংযুক্ত চিত্র তৈরি করে বা না করে তা নির্ধারণ করতে? এবং একবার যখন আমি জানতে পারি যে আমার একটি সংযুক্ত চিত্র রয়েছে, তখন সমস্ত টাইলগুলির সীমানার মধ্যে পড়ার একটি অতিরিক্ত তালিকা পাওয়ার সর্বোত্তম উপায় কী?

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

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

উপরে আমি যা আশা করি তার ছবি আঁকলাম এই পরীক্ষার 4 টি সম্ভাব্য ফলাফল হতে পারে।

  1. চেইন একটি বদ্ধ চিত্র তৈরি করে না।

  2. চেইন একটি বদ্ধ চিত্র তৈরি করে।

  3. আপনি যদি বোর্ডের পাশগুলি চিত্রের একটি প্রান্ত (বা একাধিক প্রান্ত) হিসাবে গণনা করেন তবে চেইনটি একটি বদ্ধ চিত্র তৈরি করে।

  4. চেইন একটি বদ্ধ চিত্র তৈরি করে, তবে অতিরিক্ত তথ্য পয়েন্ট রয়েছে (ব্যবহারকারী দ্বারা চেইনের অংশ হিসাবে বৈধভাবে নির্বাচিত) যা তৈরি করা চিত্রটির অংশ নয়।

কেস। হ'ল কৌশলযুক্ত, কারণ আপনাকে বদ্ধ চিত্র এবং এর ভিতরে যে টুকরা পড়েছে তা খুঁজে পেতে "অতিরিক্ত" চেইন লিঙ্কগুলি বের করতে হবে (তবে "অনিবন্ধিত" অঞ্চলের আশেপাশে নয়)।

সুতরাং ... কারও কাছেই এটি সমাধান করার ভাল উপায় সম্পর্কে ধারণা আছে, বা আমার কাছে কেবল একটি সূচনা পয়েন্ট? আমি এই মুহুর্তে চেনাশোনাগুলিতে যাচ্ছি এবং চোখের আরও একটি সেট ব্যবহার করতে পারি।


1
চিত্র -8, বা পেন্টগ্রামের মতো ছেদ করার পথগুলি সম্পর্কে কী ? আপনি কি নন-শূন্য বা সম-বিজোড় পূরণের নিয়মটি ধরে নেবেন ?
আনকো

বোর্ডের পক্ষ ব্যবহার সীমাবদ্ধ, অতিরিক্ত তথ্য সমেত: কেস 4 এছাড়াও কেস 3 একত্রীকরণ পারে
ChargingPun

আপনার বোর্ডের কেন্দ্রের উপরের প্রান্ত থেকে নীচে অবধি যদি একটি উল্লম্ব রেখা চলমান থাকে তবে বোর্ডের কোন দিকটি 'বদ্ধ'?
স্টিভেন স্টাডনিকি

আমি মনে করি আমাদের ধরে নেওয়া উচিত যে ক্ষুদ্রতম স্থানটি আপাতত সংযুক্ত। ওপি অন্যথায় নির্দিষ্ট না করে।
টম 'ব্লু' পিডক

উত্তর:


3

1. টাইলগুলির একটি লুপ সনাক্তকরণ

সমস্যাটি একটি গ্রাফের একটি চক্র (লুপ) সনাক্তকরণের সাথে একযোগে বলে মনে হচ্ছে, এখানে বা এখানে দেখুন

  • Vসেই গ্রাফের নোডের সেট হ'ল G=(V, E)টাইলস,
  • e = (v1, v2)টাইলগুলি সরাসরি বা তির্যক প্রতিবেশী হলে দুটি প্রান্তের মধ্যে একটি প্রান্ত বিদ্যমান

2. পর্দার সীমানা কেস পরিচালনা করা

স্ক্রিন বর্ডারটিতে সেই কাল্পনিক টাইল রয়েছে যা দৃশ্যমান টাইলগুলির পর্দার চারপাশে একটি এক টাইল প্রশস্ত রিম গঠন করবে।

আপনার স্পেসিফিকেশন অনুসারে স্ক্রিনের সীমানার অংশটি বন্ধ লুপের অন্তর্নিহিত অংশ গঠন করবে। কেবল একটি বদ্ধ লুপটি সনাক্ত করতে, এই নিয়মের মাধ্যমে সংযোগটি সম্মান করে Gগ্রাফটি গ্রাফে প্রসারিত করার পক্ষে যথেষ্ট হবে G':

  • অন্য দুটি প্রান্তটি যে কোনও দুটি পৃথক নোডের মধ্যে উপস্থিত রয়েছে, যদি দুটি টাইল প্রতিটি পর্দার সীমানার কাছে সরাসরি অবস্থিত হয়

সুতরাং (0,0) এবং (1,0) এ টাইলসটি "বর্ডার টাইলস" (-1,0), (-1, -1), (0, -1) এর সাথে একত্রে বন্ধ লুপের অংশ হবে , (1, -1)

3. একটি লুপেড অঞ্চলের অভ্যন্তরীণ অংশ

ব্যবহারকারী আর্থার ওল্ফ হোয়াইট কী পরামর্শ দিয়েছেন সে সম্পর্কে আমি একটি অবিশ্বাস্য দিকে যেতে চাই :

লুপ টাইলসের বাউন্ডিং বাক্স দ্বারা আমাদের টাইলসের সেটটি সীমাবদ্ধ করতে হবে।

তারপরে বাউন্ডিং বাক্সের মধ্যে থাকা সমস্ত টাইলগুলি নির্বাচিত করতে বন্যার ফিল ব্যবহার করুন যা বন্ধ লুপের বাহ্যিক বা অভ্যন্তরীণ। এটি কেবলমাত্র এই দুটি ক্ষেত্রে একটি হতে পারে। এর পরে আমাদের কোনটি খুঁজে বের করতে হবে।

প্রতিটি দিকের এক টাইল দ্বারা বাউন্ডিং বক্সটি প্রসারিত করা ভাল ধারণা হবে, ফলন হবে extbb, সুতরাং আমরা কেবল একটি বাহ্যিক টাইল দিয়ে বন্যার ভরাট শুরু করার ক্ষেত্রে, কেবলমাত্র একটি বাহ্যিক পয়েন্টগুলির সাথে একটি সংযুক্ত সেট দিয়ে শেষ করব।

একবার আমরা বন্যা ভরাট এলাকায় আছে, আমরা, পাশাপাশি তার সীমান্ত বক্স নিরূপণ করবে ffbb। যদি আমরা একটি বাহ্যিক টাইল দিয়ে শুরু করি তবে এটি বর্ধিত লুপের বাউন্ডিং বাক্সের মতো হওয়া উচিত।

ffbb == extbb

যদি আমরা একটি অভ্যন্তরীণ টাইল দিয়ে শুরু করি, তবে এটি একটি স্পষ্টভাবে ছোট বাউন্ডিং বাক্স পাওয়া উচিত, কারণ লুপ টাইলগুলি উভয় বাউন্ডিং বাক্সের মধ্যে স্যান্ডউইচ করতে হবে।

ffbb < extbb

বন্যার ভরাটের প্রাথমিক প্রাথমিক টাইলটি কোনও extbbফ্রি টাইলের মধ্যে কোনও টাইল হতে পারে । হতে পারে এলোমেলোভাবে একটি বাছাই সেরা পন্থা।

যদি আমি আগে জানতে পারি যে অভ্যন্তরটি বাহ্যিক চেয়ে ছোট, তবে আমি লুপ পয়েন্টগুলির ভর কেন্দ্রের চারপাশে শুরু করব যা অনেকগুলি অঞ্চলের অভ্যন্তরে রয়েছে (পাল্টা উদাহরণ: সি আকৃতির অঞ্চল), অন্যথায় এর সীমানায় extbb। তবে এটি কীভাবে অনুমান করা যায় তা আমার কোনও ধারণা নেই।

চূড়ান্ত মন্তব্য

সাধারণভাবে আমি বলব যে কোনও টাইল থেকে শুরু করে একটি সরল পদচারণা এবং দেখা টাইলগুলির একটি তালিকা রাখা একটি চক্র সনাক্ত করার জন্য যথেষ্ট তবে পর্দার সীমানা শর্তটি আরও জটিল গ্রাফ পেতে পারে, তাই আপনার গ্রাফ অ্যালগরিদমের সাথে নিরাপদ দিকে থাকা উচিত ।

নীচে একটি উদাহরণ রয়েছে যেখানে অভ্যন্তরটি সংযুক্ত নয়, অন্যদিকে চক্র সনাক্তকরণের ক্ষেত্রে দুটি লুপ খুঁজে পাওয়া উচিত, একজনকে ফেলে দেওয়া উচিত।

কিছু কারন


1

আপনি এটি দ্বারা সমাধান করতে পারেন:

  1. Shape আকারের বাউন্ডিং বক্স সন্ধান করা।
  2. প্রতিটি দিকে এটির আকার 1 বাড়ানো।
  3. নতুন কিছুটা বর্ধিত বাউন্ডিং বাক্সের ফ্রেমের উপরে আইট্রেটিং এবং বন্যা-ফিল প্রয়োগ করা।
  4. যদি এমন কোনও টাইল থাকে যা আপনি বন্যা-পূরণের সাথে চিহ্নিত করেন নি যা সেই চেইনে নেই তবে সেগুলি আবদ্ধ। আমি অনুমান করি যে আপনার সংজ্ঞা অনুসারে যদি আকারের চেয়ে বদ্ধ টাইল থাকে তবে একটি বদ্ধ চিত্র।

এক, বারবার চেইন সব টাইলস উপর কাজের জন্য এবং এটি তাদের minX, minY, maxXএবং maxYএবং আপনার সীমান্ত বক্স বা AABB হয়।

দুটি তুচ্ছ।

ফ্রেমের উপরে আইট্রেট করা সহজ, কেবল গ্রিডের বাইরে বন্যা ভরাট না হওয়ার বিষয়টি নিশ্চিত করুন। আপনি কীভাবে উইকিপিডিয়ায় বন্যা ভরাবেন তা শিখতে পারেন ।

চার নম্বরের জন্য আপনি কেবল চেইন সংলগ্ন টাইলগুলি পরীক্ষা করে শুরু করতে পারেন। আপনি যে টাইলটি খুঁজে পান সেটি আরও টাইলস চিহ্নিত করার জন্য চিহ্নিত না করে আপনি বন্যা ভরাতে পারবেন।


0

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

প্রথমত, আমাদের সমস্যার সংজ্ঞা দেওয়া দরকার to আমি ধরে নিতে চলেছি যে পরিস্থিতিটি দেখতে দেখতে (2), যেমন কোনও লেজ কেটে ফেলা হয়েছে, এবং শেষটি আবার শুরুতে সংযোগ স্থাপন করে, যাতে প্রতিটি টাইলের শৃঙ্খলে ঠিক একটি "পূর্বসূরি" এবং ঠিক একটি "উত্তরসূরি" থাকে (যেখানে টাইল এক্স এর উত্তরসূরীর পূর্বসূরীরা সর্বদা টাইল এক্স থাকে)। এছাড়াও, আপনি যদি যথেষ্ট সময়ের জন্য "উত্তরসূরিদের" অনুসরণ করেন তবে শেষ পর্যন্ত আপনি যেখানে শুরু করেছিলেন সেখানে ফিরে পাবেন। লুপ আসলে যে কোনও সময়ে নিজের উপর আবার ফিরে যায় কিনা তা সনাক্ত করতে আপনি গুরুগডুর্গেনের পরামর্শ ব্যবহার করতে পারেন। ধরে নিলে আপনি যখন ব্যবহারকারীর ইনপুটটি শেষ করেন তখন এটি লুপের পরে কয়েকটি লাইনের নোডের মতো দেখাবে। লুপটি পেতে লাইনটি ছিঁড়ে ফেলতে পারেন।

এখন আমরা, প্রতিটি সারির জন্য নিম্নলিখিতটি করি:

  1. বাম প্রান্তে শুরু করুন এবং প্রতিটি টাইলের জন্য একটি বুলিয়ান ট্র্যাক করুন যা আমাদের জানায় বা আউট কিনা তা জানায়। আউট শুরু করুন।
  2. যদি বর্তমান টাইলটি শৃঙ্খলার অংশ হয় তবে উত্তরসূরি এবং পূর্বসূরীর উভয়ই দেখুন (যা অবশ্যই সংলগ্ন হতে হবে)। উভয়ই যদি কঠোরভাবে উপরে থাকে (যেমন উত্তর, উত্তর পূর্ব, বা বর্তমান টাইলের উত্তর পশ্চিম), বর্তমান টাইলের রাজ্যটি টালিটির বিপরীতে তার বামে সেট করুন। অন্যথায়, এটি বামদিকে টাইলের মতো সেট করুন। গোটো 4।
  3. যদি বর্তমান টাইলটি শৃঙ্খলার অংশ না হয়, টাইলটিকে তার বামে শিরোনামের রাজ্যে সেট করুন। গোটো 4।
  4. ডানদিকে এক টাইল এখনকার টাইল। গোটো 2।

এখন সমস্ত টাইলস যা IN- এ নিয়ে যান, সীমান্তের টাইলগুলিতে যোগ করুন (একটি লেজ সহ যদি আপনি এটি আগে ছিনিয়ে নেন বা নাও, আপনার পছন্দ) এবং অঞ্চলটিকে কল করুন।

আপনি যদি ব্যবহারকারীকে সীমানা ব্যবহারের অনুমতি দিতে চান তবে মনে রাখবেন যে এটি বোর্ডে IN / OUT সংজ্ঞায়িত করে না, কেবল এটি দুটি ভাগে ভাগ করে। আপনি ছোট অঞ্চলটি বেছে নিতে পারেন, উদাহরণস্বরূপ, অথবা ব্যবহারকারীর দুটি সংলগ্ন দিক (যেমন, বাম এবং নীচে, তবে উপরের / নীচে বা বাম / ডান নয়) ব্যবহার করতে হবে।

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

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