সিকিয়ার লেপারস


19

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

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

চ্যালেঞ্জ

আপনাকে পজিটিভ 2 ডি পূর্ণসংখ্যার স্থানাঙ্কগুলির তালিকার আকারে একটি "দাবা বোর্ড" দেওয়া হয়েছে যা বোর্ডের অংশ হিসাবে বর্গগুলি উপস্থাপন করে। আপনার টাস্কটি এমন একটি লিপার খুঁজে বের করা যা পর্যাপ্ত পদক্ষেপের পরে বোর্ডের যে কোনও স্কোয়ারে পৌঁছতে পারে।

আসুন কিছু উদাহরণ তাকান। স্ট্যান্ডার্ড দাবাবোর্ডটি 8x8 স্কোয়ারের নিয়মিত গ্রিড ব্যবহার করে (নোট করুন যে আমরা এই চ্যালেঞ্জের জন্য সাদা এবং কালো স্কোয়ারের মধ্যে পার্থক্য করি না):

########
########
########
########
########
########
########
########

স্ট্যান্ডার্ড নাইট এই সমস্তটিতে পৌঁছতে (2, 1)পারে , সুতরাং এটি একটি বৈধ আউটপুট হবে। যাইহোক, (1, 1)উদাহরণস্বরূপ বৈধ হবে না, যেহেতু এই জাতীয় অংশটি যেখানেই শুরু হোক না কেন কেবল স্কোয়ারের অর্ধেক পর্যন্ত পৌঁছতে পারে। (1, 0)অন্যদিকে, একটি বৈধ আউটপুটও হবে, যেহেতু সমস্ত স্কোয়ারটি orthogonally সংযুক্ত।

এখন যদি আমাদের মতো অনিয়মিত বোর্ড থাকে:

#   #
 # # #
  # # #
 # #
    #

তারপরে সম্ভাব্য সমাধানগুলি হ'ল (1, 1)এবং (3, 1)। আমরা সম্পূর্ণরূপে সংযোগ বিচ্ছিন্ন অঞ্চলগুলির সাথে একটি বোর্ডও রাখতে পারি:

#### ####
#### ####
#### ####
#### ####

স্ট্যান্ডার্ড নাইটটি (2, 1)এখনও এখানে সমস্ত স্কোয়ারে পৌঁছে যেতে পারে, যা বাস্তবে একমাত্র সমাধান।

এবং পরিশেষে, নিম্নলিখিত সরল বোর্ডে কোনও লিটারের দ্বারা সম্পূর্ণভাবে পৌঁছানো যায় না:

#
 ##

নোট করুন যে ইনপুট ফর্ম্যাটটি ASCII উপস্থাপনা হিসাবে হবে না বরং পরিবর্তে স্থানাঙ্কের একটি তালিকা হবে। যেমন উপরের দ্বিতীয় উদাহরণটি দেওয়া যেতে পারে:

[[1, 1], [5, 1], [2, 2], [4, 2], [6, 2], [3, 3], [5, 3], [7, 3], [2, 4], [4, 4], [5, 5]]

বিধি

আপনি STDIN (অথবা নিকটতম বিকল্প), কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিয়ে কোনও প্রোগ্রাম বা ফাংশন লিখতে এবং STDOUT (বা নিকটতম বিকল্প), ফাংশন রিটার্ন মান বা ফাংশন (আউট) প্যারামিটারের মাধ্যমে ফলাফল আউটপুট করতে পারেন।

ইনপুট স্থানাঙ্কগুলি যে কোনও সুবিধাজনক তালিকা বিন্যাসে নেওয়া যেতে পারে (সমতল তালিকা, জোড়ের তালিকা, জটিল পূর্ণসংখ্যার তালিকা, ধারাবাহিক বিভাজকগুলির সাথে স্ট্রিং ইত্যাদি)।

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

আপনার প্রোগ্রামটির এক মিনিটের মধ্যে যে কোনও পরীক্ষার কেস পরিচালনা করতে হবে । এটি কিছুটা অস্পষ্ট বাধা, তবে সাধারণ জ্ঞানটি ব্যবহার করুন: আপনার মেশিনে যদি এটি 2 মিনিট সময় নেয় তবে আমি মনে করি যে আমরা এটি অনুমান করতে পারি যে এটি অন্য কারও সাথে 1 এর মধ্যে চলতে পারে, তবে যদি এটির 20 লাগে তবে এর সম্ভাবনা কম থাকে। প্রতিটি পরীক্ষার কেসকে কয়েক সেকেন্ডের মধ্যে সমাধান করা শক্ত হওয়া উচিত নয়, সুতরাং এই নিয়মটি কেবল নিরীহ প্রাণীর শক্তিকে বাতিল করতে কাজ করে।

স্ট্যান্ডার্ড বিধি প্রযোজ্য।

পরীক্ষার মামলা

প্রতিটি পরীক্ষার কেস ফর্মের হয় board => all valid leapers। মনে রাখবেন যে আপনাকে কেবল তার মধ্যে একটি আউটপুট করতে হবে। যদি লিপারগুলির তালিকা খালি থাকে তবে এমন কোনও কিছু ফেরত দিতে ভুলবেন না যা বৈধ লিটার নয়।

Examples above:
[[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8]] => [[0, 1], [1, 2], [1, 4], [2, 3], [3, 4]]
[[1, 1], [5, 1], [2, 2], [4, 2], [6, 2], [3, 3], [5, 3], [7, 3], [2, 4], [4, 4], [5, 5]] => [[1, 1], [1, 3]]
[[1, 1], [2, 2], [3, 2]] => []
[[1, 1], [1, 2], [1, 3], [1, 4], [2, 1], [2, 2], [2, 3], [2, 4], [3, 1], [3, 2], [3, 3], [3, 4], [4, 1], [4, 2], [4, 3], [4, 4], [6, 1], [6, 2], [6, 3], [6, 4], [7, 1], [7, 2], [7, 3], [7, 4], [8, 1], [8, 2], [8, 3], [8, 4], [9, 1], [9, 2], [9, 3], [9, 4]] => [[1, 2]]

Square boards:
[[1, 1], [1, 2], [2, 1], [2, 2]] => [[0, 1]]
[[1, 1], [1, 2], [1, 3], [2, 1], [2, 2], [2, 3], [3, 1], [3, 2], [3, 3]] => [[0, 1]]
[[1, 1], [1, 2], [1, 3], [1, 4], [2, 1], [2, 2], [2, 3], [2, 4], [3, 1], [3, 2], [3, 3], [3, 4], [4, 1], [4, 2], [4, 3], [4, 4]] => [[0, 1], [1, 2]]
[[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5]] => [[0, 1], [1, 2]]
[[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6]] => [[0, 1], [1, 2], [2, 3]]
[[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7]] => [[0, 1], [1, 2], [2, 3]]

Miscellaneous:
[[1, 1], [2, 1]] => [[0, 1]]
[[1, 1], [1, 2]] => [[0, 1]]
[[1, 1], [12, 35]] => [[11, 34]]
[[1, 1], [1, 2], [2, 1], [2, 2], [6, 1], [6, 2], [6, 3], [6, 4], [7, 1], [7, 2], [7, 3], [7, 4], [8, 1], [8, 2], [8, 3], [8, 4], [9, 1], [9, 2], [9, 3], [9, 4]] => []
[[1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [3, 1], [3, 2], [3, 5], [3, 6], [4, 1], [4, 2], [4, 5], [4, 6], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6]] => [[0, 1], [1, 2], [1, 4]]
[[2, 2], [2, 4], [2, 6], [2, 8], [4, 2], [4, 4], [4, 6], [4, 8], [6, 2], [6, 4], [6, 6], [6, 8], [8, 2], [8, 4], [8, 6], [8, 8]] => [[0, 2], [2, 4]]

Random boards:
[[1, 5], [1, 9], [2, 6], [2, 8], [2, 10], [2, 12], [3, 5], [3, 7], [3, 9], [3, 11], [3, 13], [4, 2], [4, 4], [4, 6], [4, 8], [4, 14], [5, 1], [5, 3], [5, 5], [5, 7], [6, 2], [6, 4], [7, 1], [8, 2]] => [[1, 1], [1, 3]]
[[1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 1], [2, 2], [2, 3], [2, 4], [2, 7], [3, 1], [3, 2], [3, 3], [3, 4], [3, 6], [3, 7], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [5, 3], [5, 4], [5, 6]] => [[0, 1], [1, 2]]
[[1, 8], [2, 6], [2, 10], [3, 3], [3, 4], [3, 8], [4, 1], [4, 11], [5, 3], [5, 9], [6, 12], [8, 11], [10, 10], [11, 12], [12, 6], [12, 8], [13, 6], [13, 8], [13, 10], [13, 11], [14, 5], [14, 7], [14, 8], [14, 13], [14, 14], [15, 7], [15, 9], [15, 11], [15, 12], [16, 6], [16, 7], [16, 9], [16, 13], [16, 14], [17, 10], [17, 12], [18, 8], [18, 12], [20, 9], [21, 11], [22, 13], [23, 10], [23, 11], [23, 15], [24, 12]] => [[1, 2]]
[[1, 17], [1, 21], [3, 11], [3, 15], [3, 19], [3, 23], [5, 13], [5, 21], [7, 11], [7, 15], [7, 19], [9, 1], [9, 13], [9, 17], [11, 3], [11, 7], [11, 15], [11, 19], [13, 5], [13, 9], [13, 13], [13, 17], [13, 21], [15, 11], [15, 15], [15, 19], [17, 13], [17, 17]] => [[2, 2], [2, 6], [2, 10]]
[[1, 3], [2, 4], [2, 5], [3, 6], [4, 1], [5, 3], [5, 6], [5, 7], [6, 12], [6, 14], [6, 21], [7, 9], [7, 19], [8, 9], [8, 15], [8, 17], [8, 18], [8, 24], [9, 12], [9, 19], [10, 12], [10, 14], [10, 17], [10, 21], [11, 22], [12, 15], [12, 17], [12, 24], [13, 16], [14, 20], [14, 21], [14, 26], [15, 13], [15, 19], [16, 18], [16, 23], [17, 16], [17, 24]] => [[2, 3]]
[[1, 11], [3, 13], [4, 10], [6, 14], [8, 12], [9, 9], [9, 15], [12, 8], [13, 5], [13, 19], [13, 21], [14, 8], [15, 1], [15, 17], [16, 4], [16, 14], [16, 18], [16, 20], [17, 21], [18, 2], [18, 16], [18, 18], [19, 9], [19, 13], [19, 15], [20, 12], [21, 1], [21, 17], [22, 4], [22, 10], [23, 7]] => [[1, 3]]
[[1, 39], [6, 37], [8, 32], [10, 27], [11, 31], [11, 35], [12, 22], [16, 21], [16, 29], [16, 33], [18, 34], [21, 3], [21, 9], [21, 19], [23, 8], [23, 14], [23, 22], [23, 24], [23, 36], [24, 6], [25, 13], [25, 17], [26, 1], [26, 11], [28, 6], [28, 20], [28, 26], [28, 30], [28, 34], [30, 11], [30, 15], [30, 21], [32, 6], [33, 28], [33, 32], [35, 13], [35, 23]] => [[2, 5]]

একটি বিশেষ কেস হিসাবে, নোট করুন যে কেবল একটি কক্ষ সমন্বিত বোর্ডের জন্য, যে কোনও লেকার কাজ করে তবে আপনার আউটপুট অবশ্যই একটি প্রকৃত লেকের সাথে মিলিত হতে পারে, সুতরাং [0, 0]বৈধ আউটপুট নয়।


দ্রুত প্রশ্ন. নাইট কেমন হয় (2,1)? আমি ভুল হলে আমাকে সংশোধন করুন তবে আমি নিশ্চিত যে নাইটগুলি যে কোনও এক দিকে 3 স্কোয়ার সরিয়ে নিতে পারে, এবং তারপরে আগের দিকের লম্বের যে কোনও দিকের 1 বর্গক্ষেত্র, তাই এটি পরিবর্তে হওয়া উচিত (3,1)
আর কাপ,

1
@ আর.ক্যাপ আপনি ভুল বলেছেন। ;) En.wikipedia.org/wiki/Knight_(chess)#Movement
DLosc

@DLosc ঠিক আছে, বাহ! আমার ধারণা আমি ছিলাম তার জন্য ধন্যবাদ!
আর কাপ,

আমরা কি একটি তালিকাতে সমস্ত বৈধ লিপার আউটপুট করতে পারি? আমরা যদি করি তবে আমরা কি সমতুল্য লেপারগুলি আউটপুট দিতে [[1, 0], [0, 1]]পারি?
FryAmTheEggman

@ ফ্রাইআম দ্য এজিগম্যান তাদের মধ্যে কেবল (যে কোনও), দয়া করে দয়া করে।
মার্টিন এন্ডার

উত্তর:


12

Pyth, 41 35

hfqQu@+G+VM*s_BM*F_BMTGQ]hQ)maVhQdt

কোনও বৈধ লেপার না থাকলে ত্রুটি থেকে প্রস্থান করুন, এসটিডিআরআর উপেক্ষা করা হলে খালি স্ট্রিং দেওয়া।

এটি এখানে চেষ্টা করুন বা একটি টেস্ট স্যুট চালান

Isaacg ধন্যবাদ 6 বাইট সংরক্ষণ করা ! মূলত প্রথম টাইল থেকে একে অপরের টাইলের প্রতিটি বৈধ লিকারটি নির্বাচন করে সমস্ত লিটার প্রার্থীকে সন্ধান করে। তারপরে এইগুলির প্রত্যেকটির জন্য, এটি [x, y]অফসেটের সমস্ত আটটি কনফিগারেশন তৈরি করে যা লিটারটি নিতে পারে। এরপরে এটি প্রথম টাইল থেকে শুরু হওয়া সমস্ত পদক্ষেপগুলি সরিয়ে নিয়ে যায় যা সরানোর পরে অনুসরণ করে এবং ইনপুটটিতে না থাকাগুলি এড়িয়ে যায়। ফলাফল পরিবর্তন না হওয়া অবধি এটি এটি চালিয়ে যায়। যদি এই চূড়ান্ত তালিকাটি ইনপুট হিসাবে একই হয় তবে লিকারটি বৈধ ছিল।

আমি পরীক্ষার সময় স্ট্যান্ডার্ড দাবা বোর্ডটি সবচেয়ে দীর্ঘ সময় নিয়েছিল, এটি আমার খুব চিত্তাকর্ষক নয় এমন কম্পিউটারে প্রায় 3 সেকেন্ড সময় নিয়েছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.