রোগুয়েলিকে পাথফাইন্ডিং
আপনার কাজটি নীচে বর্ণিত উপাদানগুলির দ্বি-মাত্রিক অ্যারে দেওয়া হবে, যা কোনও অন্ধকারের প্রতিনিধিত্ব করে, কোনও দানব জাগ্রত না করে দুর্বৃত্তরা যে পরিমাণ সোনার টুকরোগুলি সংগ্রহ করতে পারে তার প্রতিনিধিত্ব করে এমন একক সংখ্যাকে আউটপুট বা ফিরিয়ে দেয়।
অ্যারের উপাদানগুলি নিম্নরূপ:
- শূন্যস্থানগুলি
.
একটি বা একটি স্থান দ্বারা প্রতিনিধিত্ব করা হয় , আপনার কল; - রোগের প্রারম্ভিক অবস্থানটি অবশ্যই, প্রতিনিধিত্ব করে
@
; - একটি সোনার টুকরা প্রতিনিধিত্ব করে
$
; - দেয়াল দ্বারা প্রতিনিধিত্ব করা হয়
#
; - দানব নিম্নলিখিত regexp থেকে অক্ষর দ্বারা প্রতিনিধিত্ব করা হয়:
[a-zA-Z*&]
।
অ্যারেতে উপরে বর্ণিত কোনও অক্ষর থাকবে না, সুতরাং আপনি ধরে নিতে পারেন যে প্রাচীর, খালি জায়গা, দুর্বৃত্ত বা সোনার টুকরা নয় এমন কোনও কিছু দানব।
পাথফাইন্ডিংয়ের নিয়মগুলি হ'ল:
- দুর্বৃত্তরা কেবল খালি ঘর বা সোনার সমন্বিত কোষের মধ্য দিয়ে চলতে পারে;
- এটি একটি সংলগ্ন বা ত্রিভুজ সংলগ্ন কক্ষে যেতে একটি পালা লাগে;
- সোনা তোলা তাত্ক্ষণিক;
- দুর্বৃত্ত এটি জাগ্রত না করে একাধিক বারের জন্য দৈত্যের সাথে সংলগ্ন বা তির্যকভাবে সংলগ্ন থাকতে পারে না, যা নিষিদ্ধ;
- দুর্বৃত্ত একটি দৈত্য সময়ের কোন নম্বর, দৈত্য শুধুমাত্র জেগে উঠবে দুর্বৃত্ত দুই ব্যয় যদি সচেতনতা এলাকায় প্রবেশ করতে পারেন পরপর এটা কাছাকাছি পালাক্রমে।
ইনপুট এবং আউটপুট বিধি
দ্বিমাত্রিক অ্যারে, একটি ফ্ল্যাট অ্যারে, একটি স্ট্রিং বা অন্য যে কোনও কিছু সহ আপনি যেকোন যুক্তিসঙ্গত বিন্যাসে ইনপুট পেতে পারেন। যদি এটি আপনার জীবনকে আরও সহজ করে তোলে তবে আপনি অ্যারের মাত্রাগুলিও নিতে পারেন।
এটি গ্যারান্টিযুক্ত যে শুরুতে দুর্বৃত্তের কাছাকাছি থাকবে না।
একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন ঠিক আছে।
স্কোরিং
এটি কোড-গল্ফ , স্কোর হ'ল কম জমা হওয়ার সাথে আপনার জমা দেওয়ার বাইটস গণনা।
পরীক্ষার মামলা
পাঠযোগ্যতার উদ্দেশ্যে আমি এখানে খালি জায়গাগুলির জন্য বিন্দুগুলি ব্যবহার করি, যদি আপনি চান তবে আপনি ফাঁকা স্থান ব্যবহার করতে পারেন (উপরে দেখুন)। এছাড়াও মনে রাখবেন যে এটি একটি শুদ্ধ কাকতালীয় যে দুর্বৃত্ত সর্বদা উপরের-বাম কোণে থাকে, আপনার কোডটিতে অন্য কোনও বৈধ অবস্থানও পরিচালনা করা উচিত।
1)
@..
.$.
... -> 1
শুধু একটি বিবেক পরীক্ষা।
2)
@....
...g$
..... -> 0
আবার, একটি বিবেক পরীক্ষা।
3)
@....
...$g
..... -> 1
দুর্বৃত্ত বাম দিক থেকে সোনার দখল করতে পারে।
4)
@....g..
.......$
........
.....h.. -> 1
দুর্বৃত্তদের মধ্যে দুর্বৃত্তরা জিগ-জাগ করতে পারে, প্রতিটির কাছাকাছি সময়ে একাধিক বারের জন্য কখনই না থাকে।
5)
@....z..
.......$
.....b.. -> 0
পূর্ববর্তী পরীক্ষার কেস থেকে কৌশলগুলি এখানে কাজ করে না - দানব সংবেদনশীলতা অঞ্চলগুলি ওভারল্যাপ করে।
6)
@$#.
###$
.... -> 1
বিবেক পরীক্ষা।
7)
@..#..
$.$g.$
...#.. -> 2
পূর্বোক্ত।
8)
@#.d#$
$...##
e.....
..$...
##..$b
.#..g$ -> 3
এখানকার সমস্ত সোনার মধ্যে কেবল তিনটিই নিরাপদে পৌঁছে যেতে পারে: প্রারম্ভিক অবস্থানের নিকটবর্তী সোনারটি একটি নীচে এবং তারপরে আবার শুরুর অবস্থানে ফিরে পাওয়া যায়। উপরের বাম কোণ থেকে অব্যাহতি পেতে দুর্বৃত্তকে তির্যকভাবে নীচে-ডানদিকে দু'বার সরতে হবে। মাঝের সোনার কোনও চ্যালেঞ্জ নেই। বাইরের সোনার দ্বারা রক্ষিত g
এবং b
মাঝারি সোনার ডানদিকে এবং পরে পিছনে স্থান থেকে তির্যকভাবে সরানো যায়। বাকিটি পাওয়া যায় না: শীর্ষ-ডান স্বর্ণটি দেয়ালগুলি দ্বারা অবরুদ্ধ করা হয়েছে, এবং নীচে-ডান স্বর্ণের দৈত্য সংবেদনশীলতার ক্ষেত্রে দুটি পালা দরকার।
নিম্নলিখিত পরীক্ষার ক্ষেত্রে mbomb007 দ্বারা উদারভাবে দান করা হয়েছিল।
9)
12345678
a @....g.D
b .......$
c ......#.
d .....h.. -> 1
এই এক কঠিন। একটি পথ b4-b5-c6-b7-c8-b8(grab)
।
10)
12345678
a @....g.D
b .......$
c .......#
d .....h.. -> 1
একটি পথ [bc]4-c5-b6-c7-b8(grab)
।
11)
12345678
a @....g.D
b ......#$
c .......#
d .....h.. -> 1
অতিরিক্ত প্রাচীর আসলে কিছুই পরিবর্তন করে না, [bc]4-c5-b6-c7-b8(grab)
এটি এখনও একটি সমাধান।
@
বৈধ ইনপুট?