একটি লুপের অভ্যন্তর সন্ধান করুন


14

কার্য

একটি লুপের একটি ASCII চিত্র দেওয়া হয়েছে

যেমন

....................
......@@@@@.........
......@...@.........
.....@@...@@@@@.....
....@@........@.....
....@........@@.....
....@@@@@@@@@@......
....................
....................

এবং লুপ একটি অবস্থান

যেমন

(7,1)

আপনাকে অবশ্যই লুপটির অভ্যন্তর এবং বাইরের সন্ধান করতে হবে

যেমন

00000000000000000000
00000011111000000000
00000011111000000000
00000111111111100000
00001111111111100000
00001111111111100000
00001111111111000000
00000000000000000000
00000000000000000000

বিশেষ উল্লেখ

  • ডায়াগ্রামের জন্য আপনি ইনপুট নিতে পারেন স্ট্রিং হিসাবে নিউলাইনস বা সুস্পষ্ট সমতুল্য দ্বারা পৃথক

  • আপনি আপনার ইনপুট অংশ হিসাবে লুপ (0 বা 1 ইনডেক্সড) উপর একটি সমন্বয় পাবেন। আপনি যে কোনও জায়গায় আপনার উত্স তৈরি করতে পারেন। আপনি এই মধ্যে তুল্য সময় লাগতে পারে (<row>, <column>), (<column>, <row>)বা স্ট্রিং উপর রৈখিক অবস্থান হিসাবে। আপনি কোনও যুক্তিসঙ্গত পদ্ধতিতে এই তথ্যগুলি পেতে পারেন। লুপের সমস্ত অক্ষর সেই সূচীর অক্ষরের মতো হবে।

  • পছন্দের আউটপুট truthy এবং falsy মূল্যবোধের 2 মাত্রিক অ্যারে, এর স্ট্রিং তবে 1এবং 0নতুন লাইন বা পরে দুই কোন সুস্পষ্ট সমতুল্য গ্রহন করা হয় দ্বারা পৃথক। অভ্যন্তরীণ এবং বাইরের অবশ্যই পৃথক পৃথক মান থাকতে হবে তবে কোনটি কোন তা বিবেচ্য নয়।

  • একটি লুপকে অক্ষরের একটি গ্রুপ হিসাবে সংজ্ঞায়িত করা হয় যে এগুলি সমস্ত একই অক্ষর ( যেমন@ ) এবং যাতে লুপের প্রতিটি অক্ষরের মূল চরিত্রের একটি পথ থাকে (ইনপুটের স্থানাঙ্কে অক্ষর) যা কেবল সেই একই মধ্য দিয়ে যায় অক্ষর (ট্যাক্সিক্যাব জ্যামিতি কোনও তির্যক নয় )।

  • ভিতরে সমস্ত লুপ নিজেই এবং সেই জায়গাগুলি যা লুপটি অতিক্রম না করে ডায়াগ্রামের প্রান্তে পৌঁছাতে পারে না।

  • বাহিরটি অন্য কোথাও

  • এটি

পরীক্ষার কেস

PasteBin


আমরা কি স্ট্রিংগুলিতে রৈখিক স্থানাঙ্ক হিসাবে স্থানাঙ্কগুলি নিতে পারি?
flawr

@ ফ্লোয়ার আপনি পারেন।
পোস্ট রক গার্ফ হান্টার

আমরা কি স্ট্র্যাচ অক্ষরের ম্যাট্রিক্স হিসাবে ডায়াগ্রাম নিতে অনুমতি দিচ্ছি? মত [['.', '.'],['.', '@']]পরিবর্তে নতুন লাইন দিয়ে একটি স্ট্রিং?
এইচবিডার্ট

@ hbaderts এটি একটি সুস্পষ্ট সমতুল্য
পোস্ট রক গার্ফ হান্টার

1
@ ওয়েট উইজার্ড অতিরিক্ত পরীক্ষার মামলার জন্য ধন্যবাদ! তবে আমি চ্যালেঞ্জটিকে আরও কিছুটা
বিভ্রান্ত

উত্তর:


6

ম্যাটল্যাব, 163 159 146 78 বাইট

function m=f(m,y,x);[~,i]=bwfill(m~=m(y,x),x,y,8);m=m*0;m(i)=1;m=bwfill(m,'h')

ধন্যবাদ @ rahnema1 -66 বাইটের জন্য !!!

এখন এটি অনলাইনে চেষ্টা করে দেখুন! তবে ম্যাটল্যাব এবং অক্টাভ সম্পূর্ণরূপে সামঞ্জস্যপূর্ণ না হওয়ায় কয়েকটি সমন্বয় প্রয়োজন হয়েছিল।

ব্যাখ্যা

প্রথমে আমরা একটি বাইনারি চিত্র তৈরি করি যা প্রাথমিক অক্ষরের সমান সমস্ত অক্ষরকে কেবল মুখোশ দেয়। তারপরে আমরা সংযুক্ত উপাদানটিকে প্রাথমিক অক্ষরটি নির্ধারণ করি।

% determine the connected component that is contains initial character

[~,i]=bwfill(m~=m(y,x),x,y,8);     % i contains the indices of the connected component
m=m*0;m(i)=1;                      % create an image of the connected component

এর পরে আমরা সেই সংযুক্ত উপাদানটির একটি চিত্র তৈরি করি এবং চিত্রের সমস্ত "গর্ত" পূরণ করি।

m=bwfill(m,'h')

আমি মনে করি গল্ফিংয়ের জন্য অক্টাভ আরও ভাল তাই আপনি এটিকে কমপক্ষে 72 বাইটে হ্রাস করতে পারবেন
rahnema1

@ rahnema1 আমি ইতিমধ্যে ম্যাটল্যাব-এ শুরু করেছি, সুতরাং আমি এখন এই জমাটি পরিবর্তন করব না, তবে পরামর্শের জন্য ধন্যবাদ =)
flawr

5

ম্যাটল্যাব: 67 বাইট

function A=f(A,r,c),A=bwlabel(A==A(r,c),4);A=imfill(A==A(r,c),'h');

একটি দম্পতি সতর্কতা:

  • A এটি একটি চরিত্রের অ্যারে হিসাবে ধরে নেওয়া হয়।
  • ম্যাটল্যাবে সূচকগুলি 1-ভিত্তিক, সারিগুলি প্রথমে সূচিকৃত হয়। ধারণা করা হচ্ছে এই পরিবর্তনগুলি ফাংশন ইনপুটটিতে করা হবে (উদাহরণস্বরূপ প্রশ্ন উদাহরণ হিসাবে ডাকা হবে output = f(A,2,8))।
  • bwlabelএবং imfillইমেজ প্রসেসিং টুলবক্সের অংশ।

1
কোডগল্ফ স্বাগতম!
rahnema1

@ রাহনেমা 1: অবাক হয়ে আমি শীঘ্রই দেখা করতে পারি নি, যেহেতু এই সাইটের জন্মের আগে আমি এসও তে কিছু গল্ফ করেছিলাম।
gnovice
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.