10
بابەتی گرینگ 3, ئاب 2016

(Knight’s Tour): بابەتێكی بیركاری – پرۆگرامسازی

screen-0

ئایە لە یاری شەتڕەنج شارەزایت؟
ئایە دەتوانیت گەشتێك بە ئەسپەكە بكەیت لە یارییەكەدا بەجۆرێك بە هەموو خانەكاندا بڕوات بەمەرجێک هەر خانەیەك تەنها یەكجار پێیدا بڕوات؟
سەرنج: جوڵەی ئەسپەكە هەر وەكو ئەسپی یاری شەتڕەنجە واتە بە گوێرەی پیتی (L).

تۆ ئەتوانیت بە قەڵەم و كاغەزێك هەوڵی ئەمە بدەیت، سەرەتا گرنگ نیە لە خاڵێکەوە دەست پێ دەکەیت، دواتر ئەسپەکە بجووڵێنە بۆ خانەیەکی دیکە و لەو خانەیە ژمارە ٢ بنووسە کە مانای ئەوە دەدات لە هەنگاوی دوو لەوێ بوویتە، بەم شێوەیە بەردەوام بە تا دەگەیتە خانەیەک کە توانای جوڵەت نیە، (لەهەر خانەیەكدا تەنها ژمارەی هەنگاوەكەی تێدا بنووسە و نابێت دووجار بچیتە هەمان خانە و لە بیرت بێت گەشتێكی تەواو لە ٦٤ هەنگاو پێك هاتووە)
لەوانەیە تێبینی ئەوە بكەیت كە چەند هەنگاوێكی كەم دەبڕیت و دەگەیتە خاڵێك كە ناتوانیت هیچ هەنگاوێك بنێیت مەگەر بچیتە خانەیەك كە پێشتر تێیدا بوویت.
ئەمە باسێكی بیركارییە كە پێی دەگوترێت گەشتی ئەسپ سوارەكە (Knight’s Tour) كە چەندین شیكاری جیاوازی هەیە، ئێمە لێرە باسی یەكێك لە ڕێگاكان دەكەین و دواتر بە زمانی جاڤا ئەو ڕێگایە جێبەجێ دەكەین.

پرسیار: ئایە گەشتی تەواو (٦٤ هەنگاو) بوونی هەیە؟
وەڵام: بەڵێ، ڕاستیەكەی 26,534,728,821,064 گەشتی تەواو بوونی هەیە لەسەر بۆردێكی 8×8.
یەكێك لە ڕێگاكان (Algorithm) بۆ ئەوەی گەشتێكی درێژتر بەدەست بهێنیت ئەوەیە کە ئەسپەكە بجوڵێنیت بۆ ئەو خانەیەی كە ئەگەری گەیشتن پێی كەمترە، بۆ نموونە لە خانەی (H1) تەنها دەتوانیت لە هەردوو خانەی (G3) لەگەڵ (F2) ـەەوە بجوڵێی بۆی، بەڵام خانەی (E4) كە دەكەوێتە ناوەڕاست دەكرێت لە هەشت خانەوە بۆی بجوڵێت، ئێمە دەتوانین هەریەك لە خانەكان نرخێكی پێ بدەین كە ژمارەی ئەو خانانە دیاری دەكات كە دەكرێت لە ڕێگایەوە بگەینە ئەو خانەیە (وەک لە وێنەی دووەمدا دەردەكەوێت)، بۆیە ئێستا تۆ لەهەر خانەیەك دەستت پێكرد بڕۆ بۆ ئەو خانەیەی كە كەمترین نرخی هەیە.
ئەم ڕێگەیە مەرج نیە بۆ هەموو خاڵە دەستپێكە جیاوازەكان گەشتی تەواو بدات بەدەستەوە بەڵام ژمارەی جوڵەكان بەگوێرەی خاڵی دەستپێك دەگۆڕێت.

وێنەى دووەم
وێنەى دووەم
  • ئەم ڕێگەیە دەكرێت بە كۆمپیوتەر جێبەجێ بكرێت، من ئەم ڕێگایەم بە زمانی جاڤا نووسیوە دەتوانیت كۆدەكەی لێرە بەدەست بهێنیت:
    لە (گێت هەب) یان لە (گوگڵ درایڤ)

سەرچاوەکە (Source) لە دوو چین (Class) پێك هاتووە یەكەمیان بەناوی Board ئەمە چینە سەرەكییەكەیە كە بۆردی شەتڕەنجەكە دەنوێنێت لەگەڵ ئەسپەكەش لەسەری.
بەهۆی كۆنستڕەكتەری (Board int,int) دەتوانیت شوێنی سەرەتای ئەسپەكە دیاری بكەیت لەسەر بۆردەكە، یەكەم پارامیتەر بریتیە لە شوێنی ئەسپەكە لە تەوەرەی ستوونی و دووەم دانە بریتیە لە ژمارەت ڕیز(ئاسۆیی)
(من لە جیاتی پیت تەنها ژمارەم بەكارهێناوە لەنێوان 0-7 ڕاستیەكەی جیاوازیەكی وای نیە، خانەی A1 بۆ نموونە دەكاتە (0,0)
وە بەهۆی ڕێگای (move) ئەسپەكە یەك جووڵە دەكات و خۆی جوڵەی گونجاو هەڵدەبژێرێت بە گوێرەی ئەو ڕێگایەی باسمان كرد، و گۆڕاوی (numberOfMovesint) ژمارەی جووڵەكان دیاری دەكات كە تا ئێستا كردووتە، و ێگای (showData) هەموو ئەو جووڵانە پیشان دەدات كە كردووتە
و چینەکەی تر تەنها چینێکی Board دروست دەكات و ٦٤ جار جوڵەی پێدەكات، بەڵام مەرج نیە ٦٤ جار بجوڵێت بەڵكو گەر ئەسپەكە لەهەر جێگەیەك گیری كرد ئەوە ناجوڵێت.
تۆ دەتوانی هەموو دەست پێكە جیاوازەكان تاقیبكەیتەوە بەم كۆدە (ژمارەی تەواوی جووڵەكان نیشان دەدات كە دەكرێت لەو دەستپێكەوە بكرێت بەو ڕێگەیەی سەرەوە):

for(char i=0;i<=7;i++)
for(char j=0;j<=7;j++){
Board myBoard = new Board(i,j);
for(int n=1;n<=64;n++)
myBoard.move();
System.out.printf("%c%d:%d\n",i+65,j+1,myBoard.numberOfMoves);
}

دەبینی ژمارەی گەشتەتەواوەكان (٦٤ جوڵە) بریتیە لە چواردە دانە، بەڵام دەكرێت كۆدەكە پێشبخرێت بۆئەوەی گەر كەوتە خانەیەك و دوو جووڵە یان زیاتری لە پێشبوو كە هەمان نرخیان هەبوو ئەوا بڕیار بدات بچێت بۆئەوەیان كە باشترە، بەوەی لەهەریەكە لەو خانانەوە سەیر بكات كامیان دەینێرن بۆخانەیەك كە نرخێكی كەمتری دەدەنێ لەچاوخانەكانی تر!

//سەرچاوەکە (Source) لەوانەیە هەندێك هەڵەی تێدابێت و دەكرێت پێشبخرێت بەڵام گەر بەگونجاوی بەكاری بێنیت كێشە دروست ناكات.

 

تێبینى: ئەم بابەتەكە لە كتێبی (Java How To Program (9th e) Chapter: 7/exercises) باسكراوە.

تاگەکان knight's tour جاڤا
بۆچونی تۆ