এন-কুইন্সের সমস্যা [বন্ধ]


9

দাবাতে কোনও রানী বোর্ডের অনুভূমিকভাবে, উল্লম্বভাবে বা ত্রিভুজের দ্বারা যতদূর প্রসারিত হয় move

একটি এনএক্সএন আকারের দাবাবোর্ড দেওয়া, বোর্ডে N কুইনগুলি কতগুলি সম্ভাব্য পজিশন স্থাপন করা যেতে পারে এবং মুদ্রণ করুন এবং 1 টি মুভিতে একে অপরকে আঘাত করতে সক্ষম হবেন না।


আমাদের কি 2 <= N <= 4 কেস পরিচালনা করতে হবে? যদি তাই হয়, কিভাবে?
st0le

কেসের কোনও সমাধান নেই: এন = 2,3। উইকিপিডিয়ায় এই ক্লাসিক সমস্যাটি সম্পর্কে একটি দুর্দান্ত লেখা রয়েছে। এটা তোলে সমাধান = থেকে নিম্নলিখিত থেকে 1 নম্বর সম্পর্কে Ver ভাল নথি এন = 14. (আমি এখনও কোড গলফ নতুন নই নিশ্চিত এখনো অংশগ্রহণের সবচেয়ে ভালো উপায় কি :)।।)
Dongshengcn

উত্তর:


4

এখানে একটি সমাধান রয়েছে (মূলত এই ব্লগ এন্ট্রি থেকে ) যেখানে আমি সমাধানের যৌক্তিক সাধারণ আকারে সমাধানটির যৌক্তিক বিবরণ তৈরি করি যা পরে গণিত দ্বারা সমাধান করা হয়:

(* Define the variables: Q[i,j] indicates whether there is a 
   Queen in row i, column j *)
Qs = Array[Q, {8, 8}];

(* Define the logical constraints. *)
problem =
  And[
   (* Each row must have a queen. *)
   And @@ Map[(Or @@ #) &, Qs],
   (* for all i,j: Q[i,j] implies Not[...] *)
   And @@ Flatten[
     Qs /. Q[i_, j_] :>
       And @@ Map[Implies[Q[i, j], Not[#]] &, 
         Cases[Qs, 
          Q[k_, l_] /;
           Not[(i == k) && (j == l)] && (
             (i == k) ||          (* same row *)
                 (j == l) ||          (* same column *)
             (i + j == k + l) ||  (* same / diagonal *)
             (i - j == k - l)),   (* same \ diagonal *)
          2]]]];

(* Find the solution *)
solution = FindInstance[problem, Flatten[Qs], Booleans] ;

(* Display the solution *)
Qs /. First[solution] /. {True -> Q, False -> x} // MatrixForm

এখানে ফলাফল:

x   x   x   x   Q   x   x   x
x   Q   x   x   x   x   x   x
x   x   x   Q   x   x   x   x
x   x   x   x   x   x   Q   x
x   x   Q   x   x   x   x   x
x   x   x   x   x   x   x   Q
x   x   x   x   x   Q   x   x
Q   x   x   x   x   x   x   x

0

চুনি

আমি কোনও golfট্যাগ দেখছি না , তাই আমি ধরে নিচ্ছি এটি কেবল একটি চ্যালেঞ্জ।

এখানে উইকিপিডিয়ায় উল্লিখিত অ্যালগরিদমের একটি বাস্তবায়ন রয়েছে। এটি আমার দ্বারা নয়, এটি রোসটা স্টোন এবং এটি এখানে পাওয়া যাবে

CommWikied এই উত্তর।


0

পাইথন 2, 190 185 অক্ষর

ইটারটুলগুলি আমদানি থেকে *
এন = ইনপুট ()
মুদ্রণ লেন (ফিল্টার (ল্যাম্বদা এক্স: সমস্ত (1 ^ (y ইন (জেড, জেড + আইজ, জেড-আই + জে))) i এর জন্য, জনের জন্য গণিতে (এক্স), জনের মধ্যে গণনার (x [: i] + + (1e9,) + X [আমি + 1:])), একাধিক বিন্যাসন (পরিসীমা (1,, n + 1), ঢ)))

আমি স্রেফ কোড গল্ফ ট্যাগ ধরে নিলাম যদিও এটি ছিল না। এনটি স্টিডিন থেকে পড়া হয়, প্রোগ্রামটি গ্রহণযোগ্য সময়ে এন = 10 পর্যন্ত সমাধান গণনা করে।


0

খাঁজকাটা

n=8
s=(1..n).permutations().findAll{ 
  def x=0,y=0
  Set a=it.collect{it-x++} 
  Set b=it.collect{it+y++} 
  a.size()==it.size()&&b.size()==it.size() 
}

সমস্ত রানির সমাধানের তালিকা এই জাতীয়ভাবে সরবরাহ করে:

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

গ্রাফিকাল উপস্থাপনার জন্য যুক্ত করুন:

s.each { def size = it.size()
         it.each { (it-1).times { print "|_" }
                   print "|Q"
                   (size-it).times { print "|_" }
                   println "|"
                 }
         println ""
         }      

যা দেখতে এরকম দেখাচ্ছে:

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