এমএটিএল , 54 51 49 বাইট
n:"G~1@(2Y6Z+leG45>1e*5M@)*]vtz:"otY*g]G48-X:*sX>
ইনপুটটি এমএটিএল (এবি) ফর্ম্যাটে একটি 2D চর অ্যারে, ;
সারি বিভাজক হিসাবে। উদাহরণ এবং পরীক্ষার ক্ষেত্রে ইনপুট যথাক্রমে:
['11-011123';'111-010--';'0010---01';'111-01234']
['1']
['1-1-1-1';'-1-1-1-';'2-1-1-1';'-1-1-1-']
['12-45-';'4-65-9';'87-654';'12-487';'45----';'684764']
['111-12';'------';'21--10']
এটি অনলাইন চেষ্টা করুন!
ব্যাখ্যা
এটি "সংযুক্ত থাকা" সম্পর্কের দ্বারা সংজ্ঞায়িত গ্রাফের একটি সংলগ্ন ম্যাট্রিক্স তৈরি করে কাজ করে। উদাহরণ হিসাবে, 3 × 4 ক্ষেত্র বিবেচনা করুন
52-4
15-8
3-72
2 ডি অ্যারেতে প্রবেশগুলি এমএটিএলে সহজেই (কলাম-মেজর) লিনিয়ার সূচক ব্যবহার করে বর্ণনা করা হয়। 3 × 4 ক্ষেত্রে, প্রতিটি প্রবেশের রৈখিক সূচক হিসাবে দেওয়া হয়
1 4 7 10
2 5 8 11
3 6 9 12
সংলগ্ন ম্যাট্রিক্স ম্যাট্রিক্স গুণন ব্যবহার করে পদক্ষেপে নির্মিত। প্রথম পদক্ষেপে, অবিলম্বে প্রতিবেশীদের বিবেচনা করা হয়। উদাহরণস্বরূপ, সূচকযুক্ত বিন্দুটি 3 এবং নিজের সাথে সূচক 2 এর প্রতিবেশী It's এটি 6 এর প্রতিবেশী নয় কারণ সেই বিন্দুটিতে ক্ষেত্র অনুসারে কোনও সংখ্যা নেই। এই উদাহরণে "তাত্ক্ষণিক প্রতিবেশী" সম্পর্কের সংলগ্ন ম্যাট্রিক্সটি 12 × 12 ম্যাট্রিক্স এল হিসাবে দেওয়া হয়েছে
1 1 0 1 0 0 0 0 0 0 0 0
1 1 1 0 1 0 0 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 0 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 1
0 0 0 0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0 1 0 1 1
(এটা দেখা করতে পারে কলাম 3 মান আছে 1
সারি 2 এবং 3. এ) এই ম্যাট্রিক্স সবসময় প্রতিসম এবং তার তির্যক মূল্য আছে 1
পয়েন্ট যে থাকে না জন্য -
।
পরবর্তী পদক্ষেপটি হবে " এর মধ্যে সর্বাধিক এক বিন্দুর সাথে সংযুক্ত" সম্পর্কের সংলগ্ন ম্যাট্রিক্স । এটি পেতে, এটি নিজে থেকে এলকে গুণ করা এবং ননজারো এন্ট্রি সেট করা যথেষ্ট 1
। সাধারণভাবে, " কিছু পথ দ্বারা সংযুক্ত ", এম এর সম্পর্কের সংলগ্ন ম্যাট্রিক্সটি এলকে একটি ঘেরে বাড়িয়ে (ম্যাট্রিক্স অর্থে) প্রাপ্ত করা হয় যা সর্বোচ্চ সম্ভাব্য পথ দৈর্ঘ্যের প্রতিনিধিত্ব করে। সর্বাধিক পাথ দৈর্ঘ্যের উপরের সীমাটি হ'ল এল-তে ননজারো প্রবেশের সংখ্যা ।
সরাসরি ম্যাট্রিক্স পাওয়ার গণনা করার ফলে ওভারফ্লো হতে পারে, কারণ প্রচুর সংখ্যক দ্রুত ঘটে। সুতরাং ধীরে ধীরে একই ম্যাট্রিক্স দিয়ে গুন করা, নানজারো এন্ট্রিগুলিকে প্রতিটি পদক্ষেপের পরে 1 এ রূপান্তর করতে বৃহত সংখ্যক বাড়ানো থেকে রোধ করা ভাল।
কলাম আমি এর এম পয়েন্ট যে বিন্দু দিয়ে (যে কোন পথ দ্বারা) সংযুক্ত আছেন প্রতিনিধিত্ব করে আমি । এখন, স্তর ক্ষেত্রটি রৈখিক ক্রমে কলাম ভেক্টর সি- তে হ্রাস করা যেতে পারে , যেখানে প্রতিটি এন্ট্রিতে সংশ্লিষ্ট নম্বর বা একটি অপরিবর্তিত মান থাকে -
। সুতরাং এই ক্ষেত্রে সি হবে
5
1
3
2
5
-
-
-
7
4
8
2
এর প্রতিটি কলামের Mutiplying এম দ্বারা গ উপাদান ভিত্তিক এবং প্রতিটি কলামের যোগফল কম্পিউটিং দেয়, প্রতিটি পয়েন্টের জন্য আমি , এলাকার বিন্দু মোট স্কোর আমি জন্যে। একটি অঞ্চল পারস্পরিক সংযোগযুক্ত সমস্ত পয়েন্ট দ্বারা সংজ্ঞায়িত করা হয়। নোট করুন যে অনেক কলাম একই ফলাফল দেবে; যথা, কলাম আমি এবং ঞ একই যোগফল যদি পয়েন্ট দিতে হবে আমি এবং ঞ (একই এলাকায় অন্তর্গত) সংযুক্ত করা হয়। চূড়ান্ত ফলাফল those পরিমাণগুলির সর্বাধিক।
% Implicitly take input: 2D char array
n: % Range [1,...,N], where N is number of entries in the input
" % For loop. Each iteration builds a row of matrix L
G % Push input again
~ % Logical negate: transform into matrix of zeros
1 % Push 1, to be written into a matrix entry
@ % Iteration index. Ranges from 1 to N
( % Write that 1 into the N-th entry (linear order)
2Y6 % Push array [0 1 0; 1 1 1; 0 1 0]: mask of immediate neighbours
Z+ % Convolve and keep same-size result
le % Linearize into row array
G45> % Array of same size as the input that contains 1 for numbers, 0 for '-'
1e % Linearize into row array
* % Multiply element-wise
5M % Push last array again: 1 for numbers, 0 for '-'
@) % Get 0 or 1 value of that array corresponding to current iteration
* % Multiply. This is to give a row of zeros for non-numbers
] % End. We have all rows of L in the stack
v % Concatenate all rows into a matrix: L.
tz: % Duplicate. Range [1,...,K], where K is the number of nonzeros in L
" % For loop. Repear K times. This loop computes the 0/1 matrix power
o % Convert matrix entries to double
tY* % Duplicate and matrix-multiply
g % Convert to logical values, that is, nonzero values become 1
] % End. We have matrix M
G48- % Convert input chars to the corresponding numbers by subtractig 48
X: % Linearize into column array. This is vector c
* % Element-wise multiplication with broadcast (implicit repetition)
s % Sum of each column. Gives a row array
X> % Maximum of that row array
% Implicitly display