হারিয়ে যাওয়া পদ্মার সমস্যা
দাবা খেলা শেষ হওয়ার পরে, বেঁচে থাকা শৈশবকে শত্রু লাইনের পিছনে ফেলে রাখা হয়েছিল। আসুন তাকে বাড়ি ফেরার সবচেয়ে সংক্ষিপ্ততম উপায় খুঁজে পেতে সহায়তা করি।
মূল সমস্যাটি একটি এনএক্সএন "দাবা" বোর্ড এবং f: {1,..,n-1}X{1,..,n}X{-1,0,1} => R+
ওজনের একটি ফাংশন বর্ণনা করে। লক্ষ্যটি হ'ল বাটম লাইনের কিছু বর্গক্ষেত্র থেকে শীর্ষ রেখার অন্য কোনও স্কোয়ারে যাওয়ার সর্বোত্তম পথ সন্ধান করা, যেখানে সম্ভাব্য পদক্ষেপগুলি রয়েছে: বাম-আপ, উপরে, ডান-আপ এবং আপনি বোর্ড থেকে প্রস্থান করতে পারবেন না।
গতিশীল প্রোগ্রামিং ব্যবহার করে O (n ^ 2) এ সমস্যাটি সমাধান করা তুলনামূলকভাবে সহজ, তবে এটি কোডগল্ফ এবং আমরা সময় বেঁধে চলমান জটিলতার মতো অকেজো জিনিসগুলির বিষয়ে চিন্তা করি না ...
সমস্যাটি
ইনপুট: একটি ত্রি-মাত্রিক অ্যারে (বা আপনার পছন্দসই কিছু অন্যান্য সংগ্রহ, স্ট্ডিনের মাধ্যমে প্রাপ্ত, বা একটি ফাংশন আর্গুমেন্ট হিসাবে), নিয়মিত দাবা বোর্ডের সাথে হুবহু আকারে: 7X8X3 (# লাইনপ্যাসেস এক্স # মরোজ সাইজ এক্স # মওভেসপাস) সমন্বিত অ-নেতিবাচক পূর্ণসংখ্যার প্যাচসমূহ খরচ থেকে কিছু অবস্থান (i,j)
যেখানে i
সারি সূচক, এবং j
কলাম সূচক হয়, আছেন:
a[i][j][0]
খরচ ভ্রমণ করতে স্কয়ার পর্যন্ত-বাম(i+1,j-1)
, অথবা গ্রাফিক্যালি:\
।a[i][j][1]
খরচ ভ্রমণ করতে স্কয়ার থেকে(i+1,j)
, অথবা গ্রাফিক্যালি:|
।a[i][j][2]
খরচ ভ্রমণ করতে জন্য আপ-ডান বর্গাকার করতে(i+1,j+1)
, অথবা গ্রাফিক্যালি:/
।
আপনি ধরে নিতে পারেন এটিতে এমন কোনও পথ থাকবে না যা তার চেয়ে বেশি পরিমাণের হবে MAX_INT
।
আউটপুট: একটি 8X8 এসকিআই আউটপুট সেরা (সংক্ষিপ্ততম, অর্থাৎ ওজনের সর্বনিম্ন যোগফল) পথ দেখায় (যদি 1 টিরও বেশি অনুকূল ফলাফল থাকে তবে আপনি আপনার পছন্দের একটি স্বেচ্ছাসেবক পথ প্রদর্শন করতে পারেন)। পাথ নীচে থেকে উপরে টানা হয়, যেখানে প্রতিটি লাইনে, পথের প্যাঁচার অবস্থানের সাথে সম্পর্কিত চরিত্রটিই এটি তৈরি করতে চলেছে। উদাহরণস্বরূপ, যদি প্যাডটি কলাম 3 (কলাম 2 এ) থেকে বাম দিকে উপরে যেতে চলেছে তবে আপনার আঁকতে হবে:
#?######
##\#####
যেখানে ?
পরবর্তী পদক্ষেপের সাথে প্রতিস্থাপন করা উচিত। চূড়ান্ত অবস্থান হিসাবে আঁকা প্রয়োজন X
।
উদাহরণ
ইনপুট:
[
[[1,1,1],[1,1,1],[0,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
[[1,1,1],[1,0,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
[[1,1,1],[1,1,0],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
[[1,1,1],[1,1,1],[1,1,0],[1,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
[[1,1,1],[1,1,1],[1,1,1],[1,0,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
[[1,1,1],[1,1,1],[1,1,1],[1,0,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]],
[[1,1,1],[1,1,1],[1,1,1],[0,1,1],[1,1,1],[1,1,1],[1,1,1],[1,1,1]]
]
আউটপুট:
##X#####
###\####
###|####
###|####
##/#####
#/######
#|######
##\#####
ইনপুট:
[
[[41,27,38],[12,83,32],[50,53,35],[46,32,26],[55,89,82],[75,30,87],[2,11,64],[8,55,22]],
[[56,21,0],[83,25,38],[43,75,63],[56,60,77],[68,55,89],[99,48,67],[94,30,9],[62,62,58]],
[[23,18,40],[24,47,61],[96,45,72],[71,6,48],[75,63,98],[93,56,51],[23,31,30],[49,34,99]],
[[20,47,42],[62,79,72],[32,28,44],[68,61,55],[62,39,57],[4,17,49],[97,85,6],[91,18,12]],
[[51,50,11],[32,39,56],[12,82,23],[33,88,87],[60,55,22],[29,78,14],[70,11,42],[63,94,67]],
[[75,64,60],[27,79,86],[70,72,56],[55,45,32],[95,67,12],[87,93,98],[81,36,53],[38,22,93]],
[[31,80,50],[77,71,22],[59,46,86],[64,71,53],[41,19,95],[62,71,22],[92,80,41],[26,74,29]]
]
আউটপুট:
######X#
#####/##
####/###
#####\##
#####|##
######\#
######|#
#######\
এটি কোড-গল্ফ , তাই সংক্ষিপ্ততম কোড জয়ী।
ন্যায্য খেলা. কোন ফাঁক নেই ...
সম্পাদনা করুন:
আইভি'র স্ক্যালায় আপনি লক্ষ্য রাখতে পারেন এমন একটি অ-গল্ফ করা সরাসরি এগিয়ে সমাধান লিখেছেন । অনলাইনে স্কাল কোড সহ আপনি খেলতে পারেন এমন একটি সাইটও রয়েছে : স্কালাকাটা ( স্ক্যালাকাটায় কেবল গিস্টটি অনুলিপি করুন এবং পেস্ট করুন এবং প্লে বোতামটি চাপুন)