এন-বাই-এন বোর্ডে একটি নাইটের গ্রাফ


20

দাবাতে, একটি নাইট কেবলমাত্র তার বর্তমান অবস্থানের সাথে X এর সাথে চিহ্নিত marked সহ চিহ্নিত অবস্থানগুলিতে চলে যেতে পারে:

যেখানে একটি নাইট চলে যেতে পারে


একটি নাইট গ্রাফ এমন একটি গ্রাফ যা দাবাবোর্ডে নাইট দাবা টুকরোটির সমস্ত আইনী পদক্ষেপের প্রতিনিধিত্ব করে। এই গ্রাফের প্রতিটি শীর্ষবিন্দু দাবাবোর্ডের একটি বর্গক্ষেত্রকে উপস্থাপন করে এবং প্রতিটি প্রান্ত দুটি স্কোয়ারকে সংযুক্ত করে যা একে অপরের থেকে পৃথক পৃথক নাইটের পদক্ষেপ।

গ্রাফটি একটি আদর্শ 8-বাই -8 বোর্ডের মতো দেখাচ্ছে।

এখানে চিত্র বর্ণনা লিখুন


চ্যালেঞ্জ:

একটি পূর্ণসংখ্যা এন দেওয়া হয় , যেখানে 3 ≤ N ≤ 8 , একটি বোর্ডকে প্রতিনিধিত্ব করে একটি এন-বাই-এন ম্যাট্রিক্স আউটপুট দেয় , যেখানে প্রতিটি অবস্থান থেকে সম্ভাব্য চলনের সংখ্যা প্রদর্শিত হয়। জন্য এন = 8 , আউটপুট উপরে গ্রাফে থাকা প্রতিটি প্রান্তবিন্দু মান দেখাচ্ছে একটি ম্যাট্রিক্স হবে।

আউটপুট বিন্যাস নমনীয়। তালিকাগুলির তালিকা বা সমতল তালিকা ইত্যাদি গ্রহণযোগ্য ফর্ম্যাটগুলি।


পরীক্ষার মামলার সম্পূর্ণ সেট:

--- N = 3 ---
2 2 2
2 0 2
2 2 2
--- N = 4 ---
2 3 3 2
3 4 4 3
3 4 4 3
2 3 3 2
--- N = 5 ---
2 3 4 3 2
3 4 6 4 3
4 6 8 6 4
3 4 6 4 3
2 3 4 3 2
--- N = 6 ---
2 3 4 4 3 2
3 4 6 6 4 3
4 6 8 8 6 4
4 6 8 8 6 4
3 4 6 6 4 3
2 3 4 4 3 2
--- N = 7 ---
2 3 4 4 4 3 2
3 4 6 6 6 4 3
4 6 8 8 8 6 4
4 6 8 8 8 6 4
4 6 8 8 8 6 4
3 4 6 6 6 4 3
2 3 4 4 4 3 2
--- N = 8 ---
2 3 4 4 4 4 3 2
3 4 6 6 6 6 4 3
4 6 8 8 8 8 6 4
4 6 8 8 8 8 6 4
4 6 8 8 8 8 6 4
4 6 8 8 8 8 6 4
3 4 6 6 6 6 4 3
2 3 4 4 4 4 3 2

এটি তাই প্রতিটি ভাষার সংক্ষিপ্ত সমাধান জিততে পারে। ব্যাখ্যা উত্সাহিত হয়!


1
8 * 8 বোর্ডে বর্গ থেকে নাইটের চালনের সংখ্যা জিজ্ঞাসা করা সম্পর্কিত চ্যালেঞ্জ
xnor

আউটপুট কি এন * এন উপাদানগুলির একটি সমতল তালিকা হতে পারে?
xnor

13
এটি আক্ষরিকভাবে কেবল প্রান্ত-কেস! :)
জোনাথন অ্যালান

উত্তর:


13

এমএটিএল , 17 16 বাইট

t&l[2K0]B2:&ZvZ+

এটি অনলাইন চেষ্টা করুন!

(-১ বাইট @ লুইস মেন্ডোকে ধন্যবাদ।)

কে

কে=(0101010001000001000101010)

(ম্যাট্রিক্সের কেন্দ্রের সাথে সম্পর্কিত, প্রতিটি 1 বৈধ নাইটের পদক্ষেপ))

t&l- সমস্ত 1 এস (যেখানে এন ইনপুট হয়) এর একটি এনএক্সএন ম্যাট্রিক্স গঠন করুন। এই এম করা যাক।

[2K0] - স্ট্যাকের [2, 4, 0] সমেত একটি অ্যারে পুশ করুন

B - সমস্ত বাইনারি রূপান্তর করুন, 0s প্রয়োজন হিসাবে প্যাডিং

0 1 0
1 0 0
0 0 0

2:&Zv- মিরর যে উভয় মাত্রায় চূড়ান্ত সারি / কলাম পুনরাবৃত্তি না করে ("প্রতিসম রেঞ্জ সূচক")। এটি আমাদের প্রয়োজনীয় ম্যাট্রিক্স কে দেয়

0 1 0 1 0
1 0 0 0 1
0 0 0 0 0
1 0 0 0 1
0 1 0 1 0

Z+- conv2(M, K, 'same')প্রতিটি পদের জন্য আইনী নাইট মুভ টার্গেটে 1s যোগ করে আগের ম্যাট্রিক্স এম ( ) এর তুলনায় কে এর 2 ডি কনভোলিউশন সম্পাদন করুন

ফলাফল ম্যাট্রিক্স স্পষ্টভাবে প্রদর্শিত হয়।


আপনি কনভ্যুলেশন ম্যাট্রিক্স হিসাবে এনকোড করতে পারেন 11043370BP5eতবে এটি কোনও ছোট নয় ...
জিউসেপ


8

জাভাস্ক্রিপ্ট (ES6), 88 বাইট

একটি স্ট্রিং প্রদান করে।

n=>(g=k=>--k?[n>3?'-2344-6-6'[(h=k=>k*2<n?~k:k-n)(k%n)*h(k/n|0)]||8:k-4&&2]+g(k):2)(n*n)

এটি অনলাইন চেষ্টা করুন!

কিভাবে?

এন=3

20

(222202222)

3<এন8

(এক্স,Y)0এক্স<এন0Y<এনআমিএক্স,Y

আমিএক্স,Y=সর্বনিম্ন(এক্স+ +1,এন-এক্স)×সর্বনিম্ন(Y+ +1,এন-Y)

এন=8

(1234432124688642369121296348121616128448121616128436912129632468864212344321)

টি

টি=[0,2,3,4,4,0,6,0,6]

0

(এক্স,Y)

{টি(আমিএক্স,Y)যদি আমিএক্স,Y88অন্যভাবে

জাভাস্ক্রিপ্ট (ES7), 107 বাইট

একটি নিষ্পাপ বাস্তবায়ন যা আসলে সমস্ত পদক্ষেপের চেষ্টা করে।

n=>[...10**n-1+''].map((_,y,a)=>a.map((k,x)=>~[...b=i='01344310'].map(v=>k-=!a[x-v+2]|!a[y-b[i++&7]+2])+k))

এটি অনলাইন চেষ্টা করুন!


6

জেলি ,  23 22 14  10 বাইট

²ḶdðạP€ċ2)

ফ্ল্যাট তালিকার জন্য একটি মোনাডিক লিঙ্ক - এটি পাইথন উত্তরে প্রথমে কেএসএব দ্বারা ব্যবহৃত ধারণাটি ব্যবহার করে - নাইটের পদক্ষেপে "পক্ষ" 1 এবং 2 রয়েছে, এটি 2 এর একমাত্র কারণ।

এটি অনলাইন চেষ্টা করুন! (পাদলেখ প্রোগ্রামটির একমাত্র লিঙ্ককে কল করে এবং তারপরে ফলাফলটিকে গ্রিড হিসাবে ফর্ম্যাট করে)

²Ḷdðạ²§ċ5)5

কিভাবে?

²ḶdðạP€ċ2) - Link: integer, n (any non-negative) e.g. 8
²          - square n                                 64
 Ḷ         - lowered range                            [0,    1,    2,    3,    4,    5,    6,    7,    8,    9,    10,   11,   12,   13,   14,   15,   16,   17,   18,   19,   20,   21,   22,   23,   24,   25,   26,   27,   28,   29,   30,   31,   32,   33,   34,   35,   36,   37,   38,   39,   40,   41,   42,   43,   44,   45,   46,   47,   48,   49,   50,   51,   52,   53,   54,   55,   56,   57,   58,   59,   60,   61,   62,   63]
  d        - divmod (vectorises) i.e. x->[x//n,x%n]   [[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[1,0],[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[1,7],[2,0],[2,1],[2,2],[2,3],[2,4],[2,5],[2,6],[2,7],[3,0],[3,1],[3,2],[3,3],[3,4],[3,5],[3,6],[3,7],[4,0],[4,1],[4,2],[4,3],[4,4],[4,5],[4,6],[4,7],[5,0],[5,1],[5,2],[5,3],[5,4],[5,5],[5,6],[5,7],[6,0],[6,1],[6,2],[6,3],[6,4],[6,5],[6,6],[6,7],[7,0],[7,1],[7,2],[7,3],[7,4],[7,5],[7,6],[7,7]]
   ð     ) - new dyadic chain for each - call that L ( & e.g. R = [1,2] representing the "2nd row, 3rd column" ...-^ )
    ạ      -   absolute difference (vectorises)       [[1,2],[1,1],[1,0],[1,1],[1,2],[1,3],[1,4],[1,5],[0,2],[0,1],[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[1,2],[1,1],[1,0],[1,1],[1,2],[1,3],[1,4],[1,5],[2,2],[2,1],[2,0],[2,1],[2,2],[2,3],[2,4],[2,5],[3,2],[3,1],[3,0],[3,1],[3,2],[3,3],[3,4],[3,5],[4,2],[4,1],[4,0],[4,1],[4,2],[4,3],[4,4],[4,5],[5,2],[5,1],[5,0],[5,1],[5,2],[5,3],[5,4],[5,5],[6,2],[6,1],[6,0],[6,1],[6,2],[6,3],[6,4],[6,5]]
     P€    -   product of €ach                        [2,    1,    0,    1,    2,    3,    4,    5,    0,    0,    0,    0,    0,    0,    0,    0,    2,    1,    0,    1,    2,    3,    4,    5,    4,    2,    0,    2,    4,    6,    8,    10,   6,    3,    0,    3,    6,    9,    12,   15,   8,    4,    0,    4,    8,    12,   16,   20,   10,   5,    0,    5,    10,   15,   20,   25,   12,   6,    0,    6,    12,   18,   24,   30]
       ċ2  -   count 2s                          6:    ^-...1                  ^-...2                                                                  ^-...3                  ^-...4                        ^-...5      ^-...6
           - )                                                                                                     v-...that goes here
           -   ->                                  -> [2,    3,    4,    4,    4,    4,    3,    2,    3,    4,    6,    6,    6,    6,    4,    3,    4,    6,    8,    8,    8,    8,    6,    4,    4,    6,    8,    8,    8,    8,    6,    4,    4,    6,    8,    8,    8,    8,    6,    4,    4,    6,    8,    8,    8,    8,    6,    4,    3,    4,    6,    6,    6,    6,    4,    3,    2,    3,    4,    4,    4,    4,    3,    2]

পূর্ববর্তী 22 বাইটার

2RżN$Œp;U$+,ḟ€³R¤Ẉ¬Sðþ

একটি সম্পূর্ণ প্রোগ্রাম (কারণে ³)।

এটি অনলাইন চেষ্টা করুন! (পাদলেখ প্রোগ্রামটির একমাত্র লিঙ্ককে কল করে এবং তারপরে ফলাফলটিকে গ্রিড হিসাবে ফর্ম্যাট করে)

সমস্ত চলন সন্ধান করে এবং বোর্ডে যেগুলি অবতরণ করে তাদের গণনা করে সম্ভবত নিশ্চিতভাবে বীটযোগ্য ("বোর্ডের জমি" যুক্তি পরিবর্তন করে সম্ভবত বীটযোগ্য)।


4

এপিএল (ডায়ালগ ক্লাসিক) , 18 বাইট

+/+/2=×/¨|∘.-⍨⍳2⍴⎕

এটি অনলাইন চেষ্টা করুন!

মূল্যায়ন ইনপুট এন

2⍴⎕ এন এর দুটি কপি

⍳2⍴⎕ একটি এন × এন ম্যাট্রিক্সের সূচকগুলি - দৈর্ঘ্য -২ ভেক্টরের একটি ম্যাট্রিক্স

∘.-⍨ প্রতিটি জোড়া সূচকের একে অপরের জুটি থেকে বিয়োগ করুন, একটি N × N × N × অ্যারে পান

| পরম মান

×/¨ প্রতিটি পণ্য

2=2s কোথায়? একটি বুলিয়ান (0/1) ম্যাট্রিক্স প্রদান করুন

মনে রাখবেন যে একটি নাইট এক অক্ষের উপরে 1 ডলার এবং অন্য দিকে 2 ডলার সরে যায়, সুতরাং এই পদক্ষেপগুলির পণ্যের যথার্থ মান 2 হয় 2 অন্য কোনও উপায়ে ফ্যাক্টর করা যায় না, এটি কেবল নাইট চালের জন্য বৈধ।

+/+/ শেষ মাত্রা বরাবর, দুইবার যোগফল


3

আরএডি , 51 46 39 বাইট

{+/(⍵∘+¨(⊖,⊢)(⊢,-)(⍳2)(1¯2))∊,W}¨¨W←⍳⍵⍵

এটি অনলাইন চেষ্টা করুন!

কিভাবে?

কোন নাইট চালগুলি বোর্ডে অবতরণ করবে তা দেখে প্রতিটি বর্গক্ষেত্রের জন্য বৈধ নাইট নথের সংখ্যা গণনা করে:

{+/(⍵∘+¨(⊖,⊢)(⊢,-)(⍳2)(1¯2))∊,W}¨¨W←⍳⍵⍵
 +/                                     - The number of ...
                            ∊,W         - ... in-bounds ...
        (⊖,⊢)(⊢,-)(⍳2)(1¯2)             - ... knight movements ...
   (⍵∘+¨                   )            - ... from ...
{                              }¨¨W←⍳⍵⍵ - ... each square

3

ব্র্যাচল্যাগ , 65 40 33 বাইট

এটি 9 এর পরে এন এর চেয়ে বড় হবে 9 সুতরাং আমি আনন্দিত এন কেবল 8 = এ যেতে পারে)

⟦₅⟨∋≡∋⟩ᶠ;?z{{hQ&t⟦₅↰₁;Qz-ᵐ×ȧ2}ᶜ}ᵐ
  • কেএসবের সূত্রে স্যুইচ করে -25 বাইট
  • -7 বাইটগুলি অ্যারে সমতল করে সূন্দরকে ধন্যবাদ

এটি অনলাইন চেষ্টা করুন!


ব্র্যাচ্ল্যাগ , 44 36 বাইট

এইটি 9 এর পরেও উচ্চতর সংখ্যার জন্য কাজ করে

gP&⟦₅⟨∋≡∋⟩ᶠ;z{{hQ&t⟦₅↰₁;Qz-ᵐ×ȧ2}ᶜ}ᵐ
  • -8 বাইটগুলি অ্যারে সমতল করে সূন্দরকে ধন্যবাদ

এটি অনলাইন চেষ্টা করুন!


1
আপনি ⟨∋≡∋⟩ম্যাট্রিক্স স্থানাঙ্কগুলিও উত্পন্ন করতে প্রথম দিকে ব্যবহার করতে পারেন এবং সামগ্রিকভাবে 7 বাইট সংরক্ষণ করতে পারেন (আউটপুট একটি সমতল তালিকা, যা ওপি দ্বারা অনুমোদিত): অনলাইন চেষ্টা করে দেখুন!
সূন্দর - মনিকা পুনরায় ইনস্টল করুন

2

রেটিনা , 161 বাইট

.+
*
L$`_
$=
(?<=(¶)_+¶_+)?(?=(?<=(¶)_*¶_*)__)?(?<=(¶)__+)?(?=(?<=(¶)_*)___)?_(?=(?<=___)_*(¶))?(?=__+(¶))?(?=(?<=__)_*¶_*(¶))?(?=_+¶_+(¶))?
$.($1$2$3$4$5$6$7$8)

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

.+
*

অ্যানারিতে রূপান্তর করুন।

L$`_
$=

প্রতিটি মানের জন্য একবারে মান _তালিকাবদ্ধ করুন, অর্থাত্ একটি বর্গ তৈরি করুন।

(?<=(¶)_+¶_+)?
(?=(?<=(¶)_*¶_*)__)?
(?<=(¶)__+)?
(?=(?<=(¶)_*)___)?
_
(?=(?<=___)_*(¶))?
(?=__+(¶))?
(?=(?<=__)_*¶_*(¶))?
(?=_+¶_+(¶))?

_রেজেক্সের মাঝামাঝি থেকে শুরু করে আটটি নাইটের প্রতিটি পদক্ষেপ সম্ভব কিনা তা নির্ধারণ করার জন্য পর্যাপ্ত প্রসঙ্গে মিলানোর চেষ্টা করুন। ম্যাচটি সফল হলে প্রতিটি প্যাটার্ন একটি একক অক্ষর ধারণ করে। আমি নামী গোষ্ঠীগুলি ব্যবহার করার চেষ্টা করেছি যাতে ক্যাপচারের সংখ্যা সরাসরি পছন্দসই ফলাফলের সমান হয় তবে এর জন্য 15 বাইট খরচ হয়।

$.($1$2$3$4$5$6$7$8)

সমস্ত সফল ক্যাপচারকে জড়িত করুন এবং দৈর্ঘ্যটি নিন।


2

ওল্ফ্রাম ভাষা (গণিত) , 34 বাইট

তবুও অন্তর্নির্মিত আরেকটি গণিত a

VertexDegree@KnightTourGraph[#,#]&

সমতল তালিকা ফিরিয়ে দেয়।

এটি অনলাইন চেষ্টা করুন!


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


1

সি (জিসিসি) , 133 125 বাইট

এই সমাধানটি যে কোনও আকারের বোর্ডে কাজ করা উচিত।

#define T(x,y)(x<3?x:2)*(y<3?y:2)/2+
a,b;f(i){for(a=i--;a--;)for(b=i+1;b--;)printf("%i ",T(a,b)T(i-a,b)T(a,i-b)T(i-a,i-b)0);}

এটি অনলাইন চেষ্টা করুন!


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