বিকল্প নাম: ChessMoveQ
৩২ টি পর্যন্ত উপাদানগুলির একটি তালিকা দেওয়া হয়েছে, যার মধ্যে প্রতিটি 4 টি উপাদান রয়েছে এবং 4 টি উপাদান সহ একটি দ্বিতীয় তালিকা, দ্বিতীয় ইনপুটটিতে বিশদ পদক্ষেপটি বৈধ দাবা পদক্ষেপ কিনা তা নির্ধারণ করে।
প্রথম তালিকাটি বোর্ডের সমস্ত 32 টুকরোটির অবস্থান নির্দেশ করে। প্রতিটি উপাদান কাঠামো অনুসরণ করবে <colour>, <piece-name>, <x-coord>, <y-coord>
, যেমন ["W", "K", 5, 1]
, যা সূচিত করে যে সাদা রাজা চালু আছে 5, 1
( e1
একটি সাধারণ দাবা বোর্ডে)। প্রথম ইনপুটটির সমস্ত উপাদান অনন্য হবে। <x-coord>
এবং <y-coord>
সর্বদা 1 থেকে 8 এর মধ্যে থাকবে One একটি উদাহরণ হ'ল:
[["B", "K", 3, 8], ["B", "Q", 1, 5], ["B", "N", 4, 7], ["B", "N", 7, 8],
["B", "B", 2, 4], ["B", "R", 4, 8], ["B", "R", 8, 8], ["B", "P", 1, 7],
["B", "P", 2, 7], ["B", "P", 3, 6], ["B", "P", 5, 6], ["B", "P", 6, 7],
["B", "P", 7, 7], ["B", "P", 8, 7], ["W", "K", 5, 1], ["W", "Q", 6, 3],
["W", "N", 3, 3], ["W", "B", 5, 2], ["W", "B", 6, 4], ["W", "R", 1, 1],
["W", "R", 8, 1], ["W", "P", 1, 3], ["W", "P", 2, 2], ["W", "P", 3, 2],
["W", "P", 4, 4], ["W", "P", 6, 2], ["W", "P", 7, 2], ["W", "P", 8, 3]]
যা বোর্ডের প্রতিনিধিত্ব করবে:
দ্বিতীয় ইনপুটটিতে প্রথমটির সাবলিস্টগুলির মতো একই কাঠামোগুলি সমন্বিত থাকবে, তবে টুকরাটি কোথায় রয়েছে তা নির্দেশ করে এক্স এবং ওয়াই স্থানাঙ্কের পরিবর্তে তারা নির্দেশ করছে যে এটি কোথায় যাওয়ার চেষ্টা করছে।
উপরের উদাহরণের জন্য, একটি বৈধ পদক্ষেপ হতে পারে ["W", "B", 4, 3]
(বিশপ এক বর্গাকার এবং বাম দিকে এগিয়ে যায়), এবং একটি অবৈধ পদক্ষেপ ["B", "R", 4, 1]
যেমন নরকটি নাইটের মধ্য দিয়ে যেতে হয়েছিল, এবং চৌকোতে পৌঁছানোর জন্য পদ্মরোগটি হতে পারে। পদক্ষেপ সময়ে একাধিক টুকরা পড়ুন পারে হিসাবে, আপনি পরীক্ষা হবে কিনা কোন নিদিষ্ট টুকরা সরানো, তাদের না শুধু একটা করে তুলতে পারে। উদাহরণস্বরূপ, প্রথম উদাহরণটি কেবলমাত্র একটি বিশপের জন্য বৈধ, তবে এটি এখনও একটি বৈধ পদক্ষেপ। যাইহোক, কালো ছোকরা উভয়ই দ্বিতীয় পদক্ষেপটি সম্পাদন করতে পারে না, তাই এটি অবৈধ।
আপনার কাজটি দ্বিতীয় ইনপুটটিতে বিশদ পদক্ষেপটি বৈধ দাবা পদক্ষেপ কিনা তা নির্ধারণ করা। কোনও বিধিটির বৈধতা পরিবর্তিত হয়, টুকরাটি স্থানান্তরের চেষ্টা করার উপর নির্ভর করে (বৈধ চালের ডায়াগ্রামের জন্য টুকরাটির নামে ক্লিক করুন):
- যে কোনও টুকরা : কোনও টুকরো ইতিমধ্যে দখলকৃত স্কোয়ারের উপরে বা বোর্ডের বাইরে চলে যেতে পারে না, যদি না square বর্গটি অন্য রঙের কোনও অংশে দখল করে। উদাহরণস্বরূপ, একটি সাদা টুকরা একটি কালো টুকরা দ্বারা দখলকৃত স্কোয়ারের দিকে চলে যেতে পারে তবে কোনও সাদা টুকরা নয়। অতিরিক্তভাবে, নাইটস ব্যতীত কোনও টুকরো স্কোয়ারগুলিতে যেতে পারে না যা সরাসরি অন্য টুকরা দ্বারা বাধা হয়ে থাকে।
- টুকরা বি দিয়ে বর্গাকার সিতে সরানো একটি টুকরো A দ্বারা "সরাসরি বাধা" থাকে যদি A সরাসরি হয়, বি এবং সি এর মধ্যে একটি সোজা (অরথোগোনাল বা তির্যক) লাইনে থাকে ।
- যে কোনও টুকরো : রাজার অবস্থানও কোনও টুকরোটির পদক্ষেপের বৈধতাকে প্রভাবিত করতে পারে। যদি এই দুটি শর্তের কোনও একটি পূরণ করা হয় তবে পদক্ষেপটি অবৈধ:
- বিপদে পড়া রাজার মতো একই অংশে টুকরো টুকরো করে চেক করতে রাজাটিকে উন্মোচিত করছেন। এটি কেবল তখনই প্রযোজ্য যখন কোনও বিরোধী টুকরোটি চলাফেরা করে, বরং বিরোধী টুকরোটি বাদশাহকে তদন্তের জন্য রাখে।
- চেক রাজা, যে ক্ষেত্রে এটা দিয়া গেছে চেক আউট সরাতে। অতএব, যদি রাজা তদন্তে থাকে এবং সরানো যদি আদেশ দেয় যে অন্য টুকরা সরে যায় তবে এটি একটি অবৈধ পদক্ষেপ, যদি না অন্য টুকরা চেক প্রতিরোধ না করে। একটি টুকরো দুটি মাধ্যমে চেক প্রতিরোধ করতে পারে: হয় এটি টুকরা সম্পাদনকারী চেক নেয়, বা এটি টুকরা সম্পাদনকারী চেক এবং রাজার মধ্যে পথকে বাধা দেয়।
- "চেক" এমন একটি পরিস্থিতি যেখানে রাজার প্রতিপক্ষ আইনীভাবে সেই রাজার উপরে কোনও টুকরো স্থানান্তর করতে পারে (যদি তাদের সরানোর পালা হয়)। এই নিয়মটি পুনরাবৃত্তির সাথে প্রযোজ্য নয়, অর্থাত কোনও রাজা যদি সেই রাজার দিকে প্রতিপক্ষের পদক্ষেপটি তাদের নিজস্ব রাজাকে ছেড়ে দেয় তবে তা তদন্তের মধ্যে রয়েছে।
- পাউন্ডস : একটি গিরিটি এক বর্গাকারকে একটি অনিয়মিত স্কোয়ারের দিকে এগিয়ে যেতে পারে (অর্থাত্ সাদা যদি নীচে দিকে, কালো হয়) square এছাড়াও তিনটি বিশেষ পরিস্থিতি রয়েছে:
- যদি পদ্মটি এখনও সরানো না হয় (আপনি ওয়াই-স্থানাঙ্ক ব্যবহার করে এটি নির্ধারণ করতে পারেন; হোয়াইট কোয়েনডেটগুলি যদি 2 হয় তবে হোয়াইট প্যাঁকাগুলি স্থানান্তরিত হয় নি, যদি তাদের ওয়াই-কো-অর্ডিনেটটি 7 হয় তবে কালো প্যাঁকাগুলি সরেনি) দুটি স্কোয়ারকে অব্যক্ত স্কোয়ারের দিকে এগিয়ে যাওয়ার অনুমতি দেওয়া হয়।
- শৈশবকালে সামনের দিকে যদি কোনও প্রতিপক্ষের অংশটি তির্যকভাবে থাকে (যেমন শ্বেতকণ্ঠে শুকনোভাবে উত্তর-পশ্চিম বা উত্তর-পূর্ব দিকে বর্গাকারে, অথবা এটি দক্ষিণ-পশ্চিম বা দক্ষিণ-পূর্বে যদি কালো হয়), ভাঁড়াকে প্রশ্নযুক্ত দখলকৃত স্কোয়ারের দিকে যাওয়ার অনুমতি দেওয়া হয়েছে।
- যদি কোনও মহিরা চেসের সাধারণ নিয়মে চূড়ান্ত ওয়াই-কোঅর্ডিনেটে (হোয়াইটের জন্য 8, বা কালো রঙের 1 টি) দিকে চলে যায় তবে এটিকে একই রঙের রানী, নড়বড়, নাইট বা বিশপ হিসাবে প্রচার করতে হবে। এই প্রশ্নের উদ্দেশ্যগুলির জন্য, পদোন্নতির পছন্দটি পদক্ষেপটি বৈধ কিনা এবং (এবং ইনপুট ফর্ম্যাটে প্রকাশ করা যায় না) সম্পর্কিত অপ্রাসঙ্গিক, তবে পদোন্নতির পদক্ষেপের ফলে অনুমোদনের ফলে অবশ্যই অনুমতি দেওয়া উচিত allowed
- বিশপস : বিশপগুলি যে কোনও অবিচ্ছিন্ন অ-বাধা ইন্টারকার্ডিনাল (অর্থাত্ ডায়াগোনাল) পথে বরাবর 1 থেকে 8 স্কোয়ারের মধ্যে যেতে পারে।
- নাইটস : নাইটগুলি কোনও
L
আকারেচলতেপারে, নিম্নলিখিতগুলির (সমতুল্য) পদক্ষেপগুলির মধ্যে দুটি থাকে:- যে কোনও মূল দিকের একক বর্গক্ষেত্র, তার পরে 90/270 ° টার্ন, তারপরে 2 স্কোয়ারের চূড়ান্ত অগ্রসর হয়।
- কোনও কার্ডিনাল দিকের 2 স্কোয়ার, তার পরে 90/270 ° টার্ন এবং তারপরে একটি একক বর্গক্ষেত্রের চূড়ান্ত স্থানান্তর।
- রুকস : যে কোনও অবিচ্ছিন্ন অ-বাধা কার্ডিনাল পথ ধরে রুকগুলি 1 থেকে 8 স্কোয়ারের মধ্যে যেতে পারে।
- কুইনস : কুইন্সগুলি কোনও অবিচ্ছিন্ন কার্ডিনাল বা আন্তঃকার্ডিনাল (অর্থাত্ ডায়াগোনাল) অ-বাধা পথ ধরে 1 থেকে 8 স্কোয়ারের মধ্যে যেতে পারে।
- কিং : কিংরা রানির মতো চলাফেরা করে, কেবল সেগুলি প্রতি চলন্ত মাত্র একটি বর্গক্ষেত্রের মধ্যে সীমাবদ্ধ (যেমন কোনও রাজা কেবল কার্ডিনালি বা ত্রিভুজ সংলগ্ন স্কোয়ারগুলিতে যেতে পারেন)। অনুস্মারক হিসাবে, আপনি এমন কোনও পদক্ষেপ করতে পারবেন না যা আপনার রাজাকে পরীক্ষা করে রাখবে; সুতরাং আপনি আপনার রাজাকেও পরীক্ষা করতে পারবেন না।
দাবা সংক্রান্ত নিয়মগুলিতে "কাস্টলিং" এবং "এন পাসেন্ট" নামে একটি বিশেষ চাল রয়েছে। তবে, এই পদক্ষেপগুলির বৈধতা গেমের ইতিহাসের উপর নির্ভর করে, কেবলমাত্র বর্তমান অবস্থান নয় (এবং কারণ ক্যাসলিংয়ে একবারে দুটি টুকরো সরানো দরকার যা ইনপুট ফর্ম্যাটটির সাথে খাপ খায় না), আপনার এই চালগুলির কোনওটিই বিবেচনা করা উচিত নয় উপস্থিত থাকার জন্য (অর্থাত্ একটি পদক্ষেপ যা কাস্টিং বা প্রবেশকারীকে অবৈধ মনে করা উচিত)।
কোনও পদক্ষেপের বৈধতা নির্দেশ করতে আপনি যে কোনও দুটি পৃথক ফলাফল আউটপুট করতে পারেন এবং আপনি যে পদ্ধতিতে চান তাতে ইনপুট নিতে পারেন। আপনি যদি পছন্দ করেন তবে পজিশনের জন্য 1-ইনডেক্সিংয়ের পরিবর্তে 0-ইনডেক্সিংও চয়ন করতে পারেন। এটি একটি কোড-গল্ফ , তাই সংক্ষিপ্ততম কোড জয়!
পরীক্ষার মামলা
Board
Move => Output (Reason)
[["B", "K", 3, 8], ["B", "Q", 1, 5], ["B", "N", 4, 7], ["B", "N", 7, 8], ["B", "B", 2, 4], ["B", "R", 4, 8], ["B", "R", 8, 8], ["B", "P", 1, 7], ["B", "P", 2, 7], ["B", "P", 3, 6], ["B", "P", 5, 6], ["B", "P", 6, 7], ["B", "P", 7, 7], ["B", "P", 8, 7], ["W", "K", 5, 1], ["W", "Q", 6, 3], ["W", "N", 3, 3], ["W", "B", 5, 2], ["W", "B", 6, 4], ["W", "R", 1, 1], ["W", "R", 8, 1], ["W", "P", 1, 3], ["W", "P", 2, 2], ["W", "P", 3, 2], ["W", "P", 4, 4], ["W", "P", 6, 2], ["W", "P", 7, 2], ["W", "P", 8, 3]]
["W", "R", 8, 2] => True (The rook on h1 can move forward one)
[['B', 'K', 6, 8], ['B', 'Q', 1, 7], ['B', 'N', 1, 3], ['B', 'N', 7, 1], ['B', 'B', 8, 8], ['B', 'B', 2, 5], ['B', 'R', 4, 3], ['B', 'R', 1, 5], ['B', 'P', 5, 5], ['B', 'P', 7, 2], ['B', 'P', 5, 7], ['B', 'P', 5, 6], ['B', 'P', 4, 4], ['W', 'K', 7, 3], ['W', 'Q', 3, 2], ['W', 'N', 4, 8], ['W', 'N', 7, 5], ['W', 'B', 1, 1], ['W', 'B', 8, 1], ['W', 'R', 1, 8], ['W', 'R', 3, 7], ['W', 'P', 8, 2], ['W', 'P', 6, 3], ['W', 'P', 4, 2], ['W', 'P', 1, 4], ['W', 'P', 8, 7]]
['W', 'N', 1, 5] => False (Neither knight to move to a5 from where they are)
[['B', 'K', 7, 3], ['B', 'Q', 2, 4], ['B', 'N', 5, 2], ['B', 'N', 1, 6], ['B', 'B', 7, 7], ['B', 'B', 1, 8], ['W', 'K', 7, 1], ['W', 'Q', 6, 1], ['W', 'N', 5, 6], ['W', 'N', 3, 3], ['W', 'B', 2, 2], ['W', 'B', 6, 5]]
['B', 'K', 8, 3] => False (The white bishop would put the king in check)
[['B', 'K', 7, 6], ['B', 'Q', 8, 3], ['B', 'N', 7, 7], ['B', 'N', 8, 7], ['B', 'B', 2, 2], ['B', 'B', 3, 8], ['B', 'R', 1, 1], ['B', 'R', 1, 6], ['B', 'P', 8, 5], ['B', 'P', 4, 3], ['B', 'P', 8, 6], ['W', 'K', 7, 8], ['W', 'Q', 7, 2], ['W', 'N', 5, 1], ['W', 'N', 4, 6], ['W', 'B', 1, 2], ['W', 'B', 2, 6], ['W', 'R', 4, 4], ['W', 'R', 3, 6], ['W', 'P', 5, 2], ['W', 'P', 6, 2]]
['B', 'N', 5, 8] => False (The white queen currently has the king in check, and this move doesn't prevent that)
[['B', 'K', 7, 6], ['B', 'Q', 8, 3], ['B', 'N', 7, 7], ['B', 'N', 8, 7], ['B', 'B', 2, 2], ['B', 'B', 3, 8], ['B', 'R', 1, 1], ['B', 'R', 1, 6], ['B', 'P', 8, 5], ['B', 'P', 4, 3], ['B', 'P', 8, 6], ['W', 'K', 7, 8], ['W', 'Q', 7, 2], ['W', 'N', 5, 1], ['W', 'N', 4, 6], ['W', 'B', 1, 2], ['W', 'B', 2, 6], ['W', 'R', 4, 4], ['W', 'R', 3, 6], ['W', 'P', 5, 2], ['W', 'P', 6, 2]]
['B', 'N', 7, 5] => True (The king is in check, and the knight blocks that)
[['B', 'K', 8, 3], ['B', 'Q', 6, 5], ['B', 'N', 7, 8], ['B', 'N', 3, 7], ['B', 'B', 4, 1], ['B', 'B', 1, 1], ['W', 'K', 7, 7], ['W', 'Q', 7, 1], ['W', 'N', 2, 2], ['W', 'N', 1, 3], ['W', 'B', 3, 5]]
['B', 'B', 2, 2] => True (takes the white knight)
[['B', 'K', 6, 1], ['B', 'Q', 6, 2], ['W', 'K', 8, 1]]
['B', 'Q', 7, 1] => True (Smallest checkmate possible, in terms of bounding box)
এই চ্যালেঞ্জটি স্যান্ডবক্সযুক্ত ছিল । এটি ডাউনভিটস পেয়েছে, কোনও ব্যাখ্যা ছাড়াই, তাই আমি যাইহোক এটি পোস্ট করার সিদ্ধান্ত নিয়েছি