উপকূলরেখাটি সন্ধান করুন


14

আপনার কাজটি কোনও ASCII মানচিত্রে দ্বীপপুঞ্জের মানচিত্রের উপকূলরেখার দৈর্ঘ্য সন্ধান করা। ইনপুট মানচিত্রে 1 বা ততোধিক #অক্ষর থাকবে যা জমি নির্দেশ করে এবং স্পেসগুলি যা জল নির্দেশ করে। উপকূলরেখাটি অভ্যন্তরীণ হ্রদ এবং দ্বীপপুঞ্জ সহ স্থল এবং জলের মধ্যে যে কোনও প্রান্ত হিসাবে বিবেচিত হয়।

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

লাইনগুলি বিভিন্ন দৈর্ঘ্যের হতে পারে।

উদাহরণ:

Input:
##
##
Output: 8

Input:
    ###    ###
  #####     #
   ##
Output: 26

Input:
  #####
  #   #
  # # #
  #   #
  #####
Output: 36

এটি কোড গল্ফ, তাই ক্ষুদ্রতম বাইট গণনা জিতে।


আমরা কি ধরে নিতে পারি যে ইনপুটটি ফাঁকা স্থানগুলির সাথে একটি আয়তক্ষেত্রে প্যাড করা আছে?
মার্টিন এন্ডার

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

@ মার্টিনব্যাটনার, হ্যাঁ আমি আশা করছিলাম যে "মানচিত্রের সীমানাগুলি স্থান (জল) বলে ধরে নেওয়া হয়েছে" এটি আচ্ছাদিত। যদি আমাকে আরও পরিষ্কার করা উচিত তবে আমাকে জানান।
লজিক নাইট 12

@ নিমিমি, আমি আপনার উদ্বেগটি বুঝতে পারি, তবে চ্যালেঞ্জটি 12 ঘন্টা পুরানো হওয়ায় 4 টি উত্তর রয়েছে এবং অন্যান্য ব্যক্তি এখনই এটিতে কাজ করছেন, আমি এটি পরিবর্তন করতে নারাজ।
লজিক নাইট

@ কার্পেট পাইথন না আমি এর অর্থ কি আমরা ধরে নিতে পারি যে ইনপুটটির সমস্ত লাইনের দৈর্ঘ্য একই।
মার্টিন এন্ডার

উত্তর:


14

শামুক , 8 বাইট

A
\#o!\#

Aবিকল্প সমস্ত মিলে যাওয়া পাথ বরং যা পয়েন্ট একটি ম্যাচ থেকে সফল শুরু গণনা মানে। \#একটি গ্রহণ করে #, oএকটি মূল দিক ঘুরিয়ে দেয় এবং !\#এটি একটি নেতিবাচক দৃ as়তা যা #আমাদের সামনে উপস্থিত না থাকলে সফল হয় ।


4

পাইথ - 25 23 বাইট

প্রথমে এটি একটি আয়ত্তে ইনপুট প্যাড করে। তারপরে " #"স্থানান্তরকরণের 4 টিরও বেশি ক্রিয়াকলাপগুলি এবং ইনপুট + স্পেসের বিপরীতগুলি গণনা করে ।

/ssm_B++;j;d;CB.t.zd" #

এটি এখানে অনলাইনে চেষ্টা করুন


কীভাবে ইনপুটটির প্রান্তে উপকূলরেখাগুলি সনাক্ত করা যায়?
feersum

আমি প্রথমে প্যাড করেছি, আমি তা বলতে ভুলে গেছি।
মালটিসেন

3

ES6, 123 115 114 বাইট

a=>a.map((s,i)=>s.replace(/#/g,(h,j)=>r+=(s[j-1]!=h)+(s[j+1]!=h)+((a[i-1]||'')[j]!=h)+((a[i+1]||'')[j]!=h)),r=0)|r

সম্পাদনা করুন: @ edc65 ধন্যবাদ 9 টি বাইট সংরক্ষণ করা।


স্টাডাউট বা স্ক্রিনে লিখতে এমন একটি সম্পূর্ণ প্রোগ্রামের মৌমাছি সম্পর্কে আমি অনিশ্চিত। এগুলি ছাড়াও: আপনার প্রতিস্থাপন ফাংশনের প্যারাম ব্যবহার করা উচিত। a=>['',...a,''].map((s,i,a)=>s.replace(/#/g,(_,j)=>r+=(s[j-1]!=_)+(s[j+1]!=_)+(a[i-1][j]!=_)+(a[i+1][j]!=_)),r=0)|r
edc65

এবং আরও ভালa=>a.map((s,i)=>s.replace(/#/g,(_,j)=>r+=(s[j-1]!=_)+(s[j+1]!=_)+((a[i-1]||'')[j]!=_)+((a[i+1]||'')[j]!=_)),r=0)|r
edc65

@ edc65 আহ, অবশ্যই আমি অভ্যন্তরের অ্যারের মানটি ক্যাপচার করে দুটি বাইট হারাব। এছাড়াও, পরামিতি প্রতিস্থাপন যে দুর্দান্ত ধরা।
নীল

2

এমএটিএল , 42 বাইট

c2\FTFt!*Y+2*qFTFtl-4lhhbvv_2X53$Y+t0>)s2/

এটি ফর্মের স্ট্রিংগুলির একটি সেল অ্যারে হিসাবে ইনপুটটিকে গ্রহণ করে

{'#####', '#   #', '# # #', '#   #', '#####'}

এটি প্রথমে ইনপুটটিকে 2D চর অ্যারে রূপান্তর করে, স্পেস সহ প্যাডিং করে এবং তারপরে শূন্য এবং একের ম্যাট্রিক্সে রূপান্তর করে। 2 ডি-কনভ্যুলেশনটি দুটি পৃথক মুখোশ সহ দুটিবার প্রয়োগ করা হয়: ম্যাট্রিক্স প্রসারিত করার জন্য প্রথম, প্রান্ত সনাক্তকরণের জন্য দ্বিতীয়।

এটি অনলাইন চেষ্টা করুন!


0

জাপট, 22 19 বাইট

4o £UzX è"#%s|#$} x

ধরে নিই ইনপুটটি একটি আয়তক্ষেত্র গঠনের জন্য ফাঁকা জায়গায় প্যাডযুক্ত। এটি অনলাইন পরীক্ষা!

কিভাবে এটা কাজ করে

          // Implicit: U = input string, S = a space
4o £    } // Create the array [0,1,2,3], and map each item X to:
UzX       //  Rotate U by 90 degrees X times.
è"#%s|#$  //  Count the number of "#"s followed by a space, newline, or end-of-string.
x         // Sum the resulting array.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.