# مهندسی نرم افزار > مباحث مرتبط با مهندسی نرم‌افزار > الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها >  کد و الگوریتم مسئله پازل 8 تایی (لطفا هر چه زودتر کمکم کنید)

## utmost

کد برنامه به زبان C#‎ یا C++‎ مسئله پازل 8 تایی را می خواستم
اگر لینک دانلود را می دانید لطفا آدرس لینک را بدهید
باتشکر

----------


## dousti_design

توضیحات مسئله 8 وزیر به روش الگوریتم ژنتیک رو میتونید اینجا 
الگوریتم ژنتیک
ببینید. سورسش رو هم از اینجا بردارید:
سورس مسئله n وزیر با الگوریتم ژنتیک

----------


## yasemi

سلام

نوشتن این برنامه خیلی آسونه 300 خط بیشتر نیست با لیست پیوندی هم نزدیک 400 خط میشه ببین برنامه رو دارم اما اونو بهت نمی دم چون میخوام خودت بنویسیش خیلیم ساده هست همیشه هلو برو تو گلو نباشید ( البته توهین قلمداد نشه) ببین اینجا اومدی چیزی یاد بگیری نه چیزی دانلود کنی حالا برای نوشتنش 
1. تابعی که کنترل کنه خانه خالی کجاست
2. تابعی که بنا به اطلاعات از تابع قبل ماتریس های جدید رو تولید کنه 
3. تابع نمایش که هروقت به نتیجه رسیدی ماتریس ها رو چاپ کنه 

مشکلی بود در خدمتم
موفق باشی

----------


## sarakh

سلام این برنامه رو با چه روش جستجویی می شه  نوشت؟؟؟؟؟؟؟؟؟؟؟

----------


## qwerty11

> سلام این برنامه رو با چه روش جستجویی می شه  نوشت؟؟؟؟؟؟؟؟؟؟؟


اول عمق
اول سطح
IDS
َA Star
و خلاصه هر جستجویی که وجود داره !

----------


## yasemi

با روش های مختلفی نوشته شده اما به نظرم اول سطح  از همه ساده تر نوشته میشه

----------


## sarakh

ممنون از راهنماییتون.فقط متوجه نمی شم منظورتون از مورد 2 و 3 چیه(2. تابعی که بنا به اطلاعات از تابع قبل ماتریس های جدید رو تولید کنه 
3. تابع نمایش که هروقت به نتیجه رسیدی ماتریس ها رو چاپ کنه)؟

از بین این روش های جستجو که گفتین کدومش زودتر به جواب می رسونه؟؟؟؟؟؟

----------


## qwerty11

> از بین این روش های جستجو که گفتین کدومش زودتر به جواب می رسونه؟؟؟؟؟؟


جواب اون سوالای بالاییتونو اون دوستمون باید بگه اما جواب این سوالتون A Star میشه.

----------


## narcis_86

مهندس من هم از جنس شمام ولی الآن وقت ندارم سریع upload کن میخوام بردارم :خیلی عصبانی:  :متعجب:

----------


## sarakh

بازم ممنون.من به راهنمایی نیاز دارم می خوام این  مسئله رو با visual basic بنویسم از یه طرفم ویندوز vista استفاده می کنم که نمی دونم چرا componentهای vb رو پشتیبانی نمی کنه و نمی شه از component هاش استفاده کرد.برای نوشتن این برنامه نیاز به component هست یا نه؟؟؟؟؟؟؟؟؟تقریبا برای نوشتنش یک ماه و نیم وقت دارم  راهنماییم کنین از کجا باید شروع کنم؟اصلا vb برای این مسئله خوبه؟؟؟

----------


## yasemi

برای نوشتنش فقط باید بلد باشی تابع تعریف کنی به هیچ چیز دیگه ای احتیاج نیست




> 1. تابعی که کنترل کنه خانه خالی کجاست


ببین برای راحتی خانه خالی رو صفر درنظر بگیر بعد توی تابع با یه for  ساده و if ببین خانه صفر کجاست بعد از اینکه پیدا کردی اگه توی خانه های 1 و 3 و 7و9 باشه یعنی باید دوتا ماتریس براش تولید کنی اگه توی خانه های 2 و 4و6و8 باشه سه تا ماترس دیگه تولید باید بکنی و اگه توی خانه وسط بود 4 تا ماتریس جدید داری البته ما گفتیم خانه ماتری از یک شروع میشه اما اگه از صفر بگیری مثل ++c  اونوقت باید با صفر محاسبه کنی




> 2. تابعی که بنا به اطلاعات از تابع قبل ماتریس های جدید رو تولید کنه


بعد از اینکه فهمیدی چند تا ماتریس جدید باید تولید کنی توی این تابع ماتریس های جدید رو تولید کن مثلا اگه خانه خالی توی اولین خانه ماتریس باشه ( خانه یک یا توی ++c صفر) باید دوتا ماتریس تولید کنیم که مثل ماتریس فعلی اما با این تفاوت که توی یکی جای خانه اول رو با خانه روبه روش و توی اون یکی با خانه زیریش عوض میشه 




> 3. تابع نمایش که هروقت به نتیجه رسیدی ماتریس ها رو چاپ کنه


بعد از اینه به هدف رسیدی باید مسیر رو چاپ کنی که این تابع این کارو میکنه

البته هرجور بلدی میتونی تغیرش بدی اما حتما کارا رو تقسیم کن بر ای راحتی حتما یه خانه شماره گره رو اضافه کن و توی یه خانه دیگه شماره پدر گره فعلی رو ذخیره کن 

موفق باشی

----------


## kebriya

سلام خسته نباشید من هم توی الگوریتمش مشکل دارم میخوام از روش عمقی بنویسم که از باید از استک استفاده بشه ولی نمیدونم تا کجا پیش برم. یعنی نمیدونم تا کجا باید push کنم و کجا باید pop کنم اگه میشه کمکم کنید. ممنون

----------


## qwerty11

هر وقت که گره جدیدی تولید میشه و میدونیم که این گره قبلاً تولید نشده باید push کنین.

اینم یه سودو کد که خودم نوشتم  :گیج:  :گیج: 

stack.push(source)
while(stack is not empty){
    node=stack.pop();
    if(node=destination) break;
    foreach child of node{
        if(child is not generated before){
            parent[child]=node;
            stack.push(child);
        }
    }
}

----------


## kebriya

از کجا بفهمم قبلا تولید نشده؟ چجوری کدشو بنویسم

----------


## qwerty11

3 تا راه داری :

1- یه لیست در نظر بگیر که گره هایی رو نگهداری میکنه که تولید شدن. وقتی به یه گره جدید رسیدی این لیست رو نگاه کن ببین این گره توش هست یا نه !؟ اما این راه یه عیب بزرگی که داره اینه که خیلی کنده چون search تو لیست O(n) I هستش!

2- از map استفاده کن. هم راحت تره و هم سرعتش خیلی بالاست چون search تو این ساختار پیچیدگیش O(1) I هستش.

3- نمیدونم، شاید راه دیگه ای هم داشته باشه ...

----------


## kebriya

ممنون از لطفت
میشه در مورد map توضیح بدین؟ نمیدونم چیه.
ببینین من یه کلاس که ماتریس رو نگه می داره و یه کلاس که استک است رو نوشتم و استک هم از نوع ماتریس باید باشه.
حالا باید بازگشتی بنویسم؟ تا به آخرش برسه یا اینکه غر بازگشتی هم میشه؟

----------


## qwerty11

خوب تو  پیشرفته/ساختمان داده  به شما چی یاد دادن پس !؟

با چه زبانی میخوای بنویسی !؟ C++‎‎ !?

شاید از همون لیست استفاده کنی برای شما بهتر باشه. اما اینکه map چیه رو توی این لینک میتونی ببینی.

چرا بازگشتی بنویسی !؟ مگه اون سودو کدی که من نوشتم بازگشتی بود !؟ اگر این سوال رو بازگشتی بنویسی با این الگوریتم stack overflow میگیری. پس جواب بازگشتی رو فراموش کن.

----------


## kebriya

والا 7-8 سال پیش این چیزا یادمون ندادن شاید دادن من یادم نیست. ولی در کل من لینکی نمی بینم. دلم می خواد بدونم map چیه!!!

----------


## qwerty11

مگه C++‎‎ دیروز یا امروز اختراع شده !؟

لینک رو نمیبینی !؟ : http://www.yolinux.com/TUTORIALS/CppStlMultiMap.html

----------


## sarakh

یکی راهنماییم کنه.لطفا"

----------


## sarakh

> برای نوشتنش فقط باید بلد باشی تابع تعریف کنی به هیچ چیز دیگه ای احتیاج نیست
> 
> 
> 
> ببین برای راحتی خانه خالی رو صفر درنظر بگیر بعد توی تابع با یه for ساده و if ببین خانه صفر کجاست بعد از اینکه پیدا کردی اگه توی خانه های 1 و 3 و 7و9 باشه یعنی باید دوتا ماتریس براش تولید کنی اگه توی خانه های 2 و 4و6و8 باشه سه تا ماترس دیگه تولید باید بکنی و اگه توی خانه وسط بود 4 تا ماتریس جدید داری البته ما گفتیم خانه ماتری از یک شروع میشه اما اگه از صفر بگیری مثل ++c اونوقت باید با صفر محاسبه کنی
> 
> 
> 
> بعد از اینکه فهمیدی چند تا ماتریس جدید باید تولید کنی توی این تابع ماتریس های جدید رو تولید کن مثلا اگه خانه خالی توی اولین خانه ماتریس باشه ( خانه یک یا توی ++c صفر) باید دوتا ماتریس تولید کنیم که مثل ماتریس فعلی اما با این تفاوت که توی یکی جای خانه اول رو با خانه روبه روش و توی اون یکی با خانه زیریش عوض میشه 
> ...


ببخشید یه سوال این روشی که گفتین روش جستجوش چیه؟؟؟؟؟
این جمله آخری رو هم متوجه نشدم "البته ما گفتیم خانه ماتریس از یک شروع میشه اما اگه از صفر بگیری مثل ++c اونوقت باید با صفر محاسبه کنی"؟؟؟؟

----------


## yasemi

جستجوی سطحی عزیزم 

منظورم درباره جمله اخر این بود که اگه بخوای از ++C استفاده کنی خانه آرایه از صفر شروع میشه همین 

موفق باشی

----------


## sarakh

چجوری باید به گره هایی که تولید میشه شماره داد و در یک خانه ذخیره کرد؟چه طور می شه مسیر رو ذخیره کرد که بدونیم تا حالا کدوم گره ها چک شدن؟

----------


## sarakh

سلام این برنامه رو با روش اول سطح نوشتم اما با اینکه یه تابع نوشتم که ماتریسهای تکراری رو حذف کنه باز هم ماتریسهای زیادی رو تولید می کنه و پیغام می ده که تعداد عناصر از حد گذشته.چکار کنم لطفا راهنمایی کنین.

----------


## yasemi

برنامه رو بزار ببینم چکار کردی

----------


## sarakh

سلام اگر بخوام این مسئله رو با روش dfs حل کنم.بعد از اینکه به هدف رسید چه طور می تونیم مسیری رو که رفتیم تا به جواب رسیدیم رو پیدا کنم؟؟؟؟ :متفکر:  :گریه:

----------


## yasemi

شما باید توی برنامه اسم پدر گره ها رو ذخیره کنید وقتی به هدف رسیدی طبق شماره پدر میتونی به ریشه برسی و بعد مسیر رو چاپ کنی

موفق باشی

----------


## sarakh

> شما باید توی برنامه اسم پدر گره ها رو ذخیره کنید وقتی به هدف رسیدی طبق شماره پدر میتونی به ریشه برسی و بعد مسیر رو چاپ کنی
> 
> موفق باشی


سلام مگه این طور نیست که وقتی یک گره pop می شه از پشته حذف می شه اگر جواب نبود فرزندانش تولید می شه.حالا اگر یکی از این فرزندان جواب بود گره های قبلی که چک شدن از پشته حذف شده چه طور می شه از اون گره ها که حذف شدن  استفاده کرد آیا باید گره های pop شده را در یک آرایه ذخیره کرد؟؟؟؟

----------


## yasemi

این روش شما فقط گره هدف رو پیدا میکنه اما شما اگه بخوای مسیر رو چاپ کنی باید گره های قبلی رو نگه داری

----------


## sarakh

سلام این برنامه رو با vb و روش جستجوی dfs نوشتم چطوری می تونم از push شدن گره های تکراری در پشته جلوگیری کنم؟؟؟؟؟؟؟؟؟؟

----------


## sarakh

اگر بخوام برای جستجو تک تک گره ها که تولید می شه رو توی یک آرایه دو بعدی ذخیره کنم  تعداد سطرها زیاد می شه و همون خطایی که در روشbfs بهم داده می شد رو دریافت می کنم.
لطفا خیلی دقیق راهنمایی کنید.یک هفته بیشتر فرصت ندارم. :افسرده:  :گریه:

----------


## sarakh

هیچکس نمی خواد برنامه ای که نوشتم رو ببینه؟؟؟؟ببینه کجاش مشکل داره که چه با bfs و چه با dfs جواب رو پیدا نمی کنه و تعداد گره هایی که تولید می کنه خیلیییییییییییییییییییییی  ییییی زیاده؟

----------


## yasemi

خوب حتما جایی مشکل داری برنامه رو خوب نگاه کن ببین منطق برنامه چطوری بعد براش راه حل بنویس

----------


## sarakh

سلام برنامه رو با روش اول سطح نوشتم طبق راهنماایی دوستان اما. مشکل برنامه اینه که اگر تعداد خانه هاخیلی جابه جا شده باشن تعداد گره های تولیدشده زیاد می شه.و به جواب نمی رسه.ولی در بعضی حالات که خانه ها خیلی جا به جا نشده باشن جواب میده.برنامه رو نگاه کنین ببنید چی باید بهش اضافه بشه.توی برنامه گره مبدا رو مقدار دهی کردم که با 6 جا به جایی جواب می ده با زدن دکمه enter.لطفا راهنماییم کنین چکار کنم که در هر حالتی جواب بده 
خیلی لازم دارم.ممنون.

----------


## yasemi

اگه با حالت های ساده کار میکنه پس درست نوشتی برای حالتهای پیچیده هم باید توی برنامه خود کاری کنی که مثلا وقتی یه گره تولید میشه بری این گره رو با گره های قبلی مقایسه کنی اگه با حالت های قبلی یکی بود حذفش کنی اما اگه نبود اضافه بشه اینجوری حالت های پیچیده تر رو هم حل میکنه البته بعضی حالت ها ممکنه خیلی حل شدنش طول بده طوری که ممکنه حتی کل حافظه رو هم پر کنه البته اونجوری که من خودم تحقیق کردم میگن بعضی از حالات اصلا قابل حل نیست اما در هر صورت اکه تکراری ها رو حذف کنی خیلی از حات ها رو حل میکنه


موفق باشی :تشویق:

----------


## sarakh

> اگه با حالت های ساده کار میکنه پس درست نوشتی برای حالتهای پیچیده هم باید توی برنامه خود کاری کنی که مثلا وقتی یه گره تولید میشه بری این گره رو با گره های قبلی مقایسه کنی اگه با حالت های قبلی یکی بود حذفش کنی اما اگه نبود اضافه بشه اینجوری حالت های پیچیده تر رو هم حل میکنه البته بعضی حالت ها ممکنه خیلی حل شدنش طول بده طوری که ممکنه حتی کل حافظه رو هم پر کنه البته اونجوری که من خودم تحقیق کردم میگن بعضی از حالات اصلا قابل حل نیست اما در هر صورت اکه تکراری ها رو حذف کنی خیلی از حات ها رو حل میکنه
> 
> 
> موفق باشی


  سلام این کار رو هم انجام دادم یعنی یه تابع نوشتم که گره های تکراری رو حذف می کنه و درست کار می کنه.نمی دونم چرا برای همه حالت ها کار نمی کنه.بر نامه فقط  برای چند حالت خیلی ساده جواب می ده.

----------


## yasemi

چون توی چند حالت جواب میده درست نوشتی اما بشین یه حالت رو قدم به قدم دنبال کن ببین کجا مشکل ایجاد میکنه 


موفق باشی

----------


## sarakh

سلام. دوستانی که این پازل رو با روش اول سطح نوشتن لطفا توضیح بدن که برای جواب گرفتن چقدر طول می کشه؟؟؟؟؟؟برنامه ای که نوشتم تا 13 حرکت رو سریعا پیدا می کنه ولی برای خیلی حالات دیگه جواب نمی ده.یا خیلی طول می کشه تا جواب بده.
ممنون.

----------


## sarakh

می خوام برنامه رو با روش Astar بنویسم لطفا راهنماییم کنین که چه مراحلی باید داشته باشه و چه کارهایی باید انجام بشه؟؟برای این روش چه چیزی رو باید حتما در نظر بگیرم.لطف کردین اگر مرحله به مرحله کارههایی که باید انجام بشه رو بهم بگین.فقط یک هفته فرصت دارم لطفا دقیق و کامل توضیح بدین.
ممنون.

----------


## sarakh

آیا برای Astarحتما باید از پشته استفاده بشه؟؟؟

----------


## qwerty11

می خوام برنامه رو با روش Astar بنویسم لطفا راهنماییم کنین که چه مراحلی  باید داشته باشه و چه کارهایی باید انجام بشه؟؟برای این روش چه چیزی رو  باید حتما در نظر بگیرم.لطف کردین اگر مرحله به مرحله کارههایی که باید  انجام بشه رو بهم بگین.فقط یک هفته فرصت دارم لطفا دقیق و کامل توضیح بدین.
ممنون. 		فرض میکنم A* میدونی چیه چون من خیلی خوب نمیتونم توضیح بدم.
تو این الگوریتم باید بین گره ها تمایز قائل بشی و براساس یه تابعی به گره ها ارزش بدی. پس :

1- فاصله ی منهتن یه گره رو با گره مقصد پیدا کن.
2- تو هر مرحله باید گره ای از لیست انتخاب بشه که منهتن کمتری داره.
3- بهتره از صف اولیت یا همون priority queue استفاده کنی چون اعمال گرفتن مینیمم و اضافه کردن رو توی log n انجام میده. priority queue در واقع همون min heap خودمونه !

پس مثل جستجوی اول سطح عمل میکنی با این تفاوت که به جای اضافه کردن گره به صف اون رو به صف اولویت اضافه میکنی براساس مقدار منهتن اون گره.

----------


## sarakh

برای روش آاستار بعد از اینکه به هدف رسید چه جوری مسیر رو پیدا کنیم؟؟؟؟؟؟؟؟

----------


## fatemegm

من همه این کامنتارو خوندم!
ولی هنوز نفهمیدم روش کار چیه؟؟
(شماها چقدر چیزا از دی اس یاد گرفتین :ناراحت: )

----------


## qwerty11

> برای روش آاستار بعد از اینکه به هدف رسید چه جوری مسیر رو پیدا کنیم؟


خوب واسه هر گره یه گره پدر تعریف کن و بعد از اینکه به مقصد رسیدی معکوس برگرد عقب تا به مبدا برسی. البته روش های دیگه ای هم هستش... اما باید حواست به مصرف حافظه باشه. مثلاً به جای اینکه دقیقاً خود پدر رو داخل فرزند ذخیره کنی میتونی حرکتی که باهاش از پدر به فرزند رسیدیم رو ذخیره کنی. که میتونه شامل R,U,D,L باشه...

----------


## sarakh

سلام من برای جستجو از طریق*A از پشته استفاده کردم.من یه تابع نوشتم برای اینکه اگر یه گره تکراری بود اون گره رو نسازه و به فرزندان اضافه نکنه.از یه طرفم گره هایی که expand شدن(از پشته pop شدن) و جواب نبودن رو توی یه آرایه دو بعدی ذخیره کردم.گره هایی که expandنشدن رو توی پشته گذاشتم.
حالا سوال اینجاست که برای اینکه ببینم گره ای که ساخته شده قبلا تولید شده یا نه؟باید هم گره های توی پشته چک بشن و هم گره های توی اون آرایه دو بعدی؟؟؟؟؟؟؟؟؟؟؟

----------


## qwerty11

خوب چه کاریه !؟

وقتی به یه گره میرسی که گره هدف نیست این گره رو همون موقع به لیست گره هایی که بهشون رسیدی و مقصد نیستن اضافه کن. (در واقع همون موقع به آرایه ی 2 بعدیت اضافه کن).

من نمیفهمم A* رو چرا میخوای با پشته پیاده سازی کنی :-؟

----------


## sarakh

> من نمیفهمم A* رو چرا میخوای با پشته پیاده سازی کنی :-؟


 چون می خوام گره ی با کمترین هزینه انتخاب بشه.پشته رو جوری مرتب می کم که گره با کمترین هزینه بالا باشه.

----------


## badguy

سلام دوستان

راستش من الان دانشجویه ترم اولم و تنها درسی که خوندم مبانیه و از پیشرفته / ساختمون داده چیزی نمیدوم ولی پروژه پایان ترمم نوشتن برنامه ای که پازل رو اتوماتیک حل کنه

یه چیزایی از روش *A  متوجه شدم ولی تو تابع ابتکاریش موندم میشه لطفا یه نفر یه تابع ابتکاری معرفی کنه ,روش کارش چطوریه ( چطوری محاسبه میشه ) یا یه منبع مناسب بده(فارسی یا انگلیسی بودن منبع مهم نیس)

خیلی ممنون میشم اگه یه نفر کمکم کنه :لبخند:

----------


## badguy

سلام به همه

آقا من این اتوماتیک پازل رو با C++‎‎‎‎‎‎‎‎‎‎‎‎.Net نوشتم ,اینطوری شد خواستم با بقیه شر کنم

تابع ای که مسئله رو حل میکنه طوری نوشته شده که با کوچک ترین تغییرات میشه هر نوع الگوریتم هوشی رو توش پیاده سازی کرد

البته میدونم خیلی ناشیانه نوشتم و دیگه چه کنم ترم اولی هستم و زیاد از تکنیک هایه برنامه نویسی نمیدونم :لبخند گشاده!: 

شما میتونید اینو در هر الگوریتم دیگه به کار ببرید

بدرود

----------


## amir_askary69

سلام. ببین دوست من ظاهرا برنامه ات درسته ولی این ذات روش اول سطح هست که برای پازل 8 تایی تو حالتهایی که گامهای حل بیش از 7 و8 باشه چندین سال طول میکشه و چند ترابایت هم رم میخواد !  به زبون خودمونی جواب نمیده.
روشی که باید استفاده کنی تا همه حالت ها جواب بده *A هست چون خیلی از مسیرهای بیهوده رو در درخت هرس میکنه و سریع جواب میده.

از کتاب راسل میتونی کمک بگیری تو اینترنت هم مطلب برای *A پره !

موفق باشی :چشمک:

----------


## Cancer

سلام سلام سلام.
خدمت اساتید.

من قبلاً یادم می یادش که روی این معمای 8 فکر کردم.
...
جستجوی اول عمق و سطحی رو بیخیال.
این *A یکم خوبه. ولی بازم فکر کنم مشکلاتی داره.
تو بعضی حالات فکر کنم دچار مشکل می شه.
اگه الگوریتمی نوشتین یا برنامه ای نوشتین که برای بعضی حالات که کاشی ها کم جابجا شدن می تونه به جواب برسه. اشتباهه. بیخیال اون الگوریتمتون بشین.
باید برنامه تون برای !9 عمل کنه. بعضی ها هم می گن که اگه برای 2/!9 عمل کنه درسته. چرت می گن.
فقط !9.
یه سری به 
http://www.8puzzle.com/
بزنین.
بنظر من بهترین منبع برای همین معما هستش.
داخلش چندتا منبع دیگه هم هستش که اونا هم خوبن.
برنامشو دانلود کنید.
ببینین با چه سرعتی به جواب می رسه.
برای !9.
ولی این هم ضعیفه.
اگه به بدترین حالت برسه، یعنی جایی که حالت شروع با حالات هدف 30 گام فاصله داره چند ثانیه زمان می بره (2 و 3 و چند ثانیه).
ولی بازم خیلی خوبه.
حتماً به اون آدرسه برین.
اساتید این برنامه ای که شما نوشتین:
برای !9 حالت کار می کنه؟
در بدترین حالت که 30 گام فاصله داره با هدف با چه سرعتی کار می کنه؟
به سرعت این برنامه (برنامه ی داخل اون سایته) می رسه؟
...
همین دیگه.
اگه جواب ها بله است.
این ایمل منه.
cancer_die2000@yahoo.com

فعلاً بای

----------


## sari-1369

سلام خدمت دوستان عزیز

من میخوام پازل 8 رو به روش A* حل کنم . یه کدی هم (گرچه خیلی مبتدیا) با زبون vb.net نوشتم . 
اما جواب نمیگیرم . نمیدونم کلا الگوریتم رو اشتباه متوجه شدم یا اینکه کد هام مشکل دارن . میخوام اگر امکانش هست شما اساتید یه نگاهی بهش بندازید.
و یه مورد دیگه اینکه اول با تابع بازگشتی خواستم بنویسم اما خیلی زود به استک اورفلو میرسیدم این بود که که فعلا توی یه حلقه گزاشتم و نود های گذشته رو نگه نمیدارم.

کد رو ضمیمه کردم

----------


## fafa_na

وای بچه ها منم میخوام این برنامه را بنویسم ولی واقعا هنوز نمیدونم اصلا این برنامه چه جوری کار میکنه.یعنی خودم به عنوان یک انسان نمیتونم حلش کنم چه برسه به اینکه الگوریتمشم بنویسم.یکی میتونه به زبان خیلی ساده برام بگه وقتی چطوری خودم حلش کنم.وقتی به ماتریس ها نگا میکنم وحشت میکنم.نمیدونم از کجا باید شروع کنم.چی رو باید حساب کنم.کدوم اول حرکت کنه بعدش کی بعد اون کی.
بعد هر حرکت باید بازچیزی حساب کنم؟
در کل خییییییییییییلی شوتم.میشه لطفا خیلی ساده برام توضیحش بدید.واقعا مرسسسسسسسسسی

----------


## fafa_na

وای .یکی جواب بده لطفا

----------


## fafa_na

واقعا کسی نمیتونه بمن کمک کنه

----------


## fafa_na

کسی نیست مرا یاری دهد

----------


## zarifcomputer

سلام
بیا اینم یاری
این لینک را ببین

----------


## fafa_na

دست گلت دردنکنه ولی بابا من میخوام بدونم شخص این بازیو  چطوری انجام میده.فرد برای بازی چیا را در نظر میگیره و حرکت میکنه تا برنده میشه.لطفا یکی کمک کنه لطفا

----------


## zarifcomputer

> دست گلت دردنکنه ولی بابا من میخوام بدونم شخص این بازیو  چطوری انجام میده.فرد برای بازی چیا را در نظر میگیره و حرکت میکنه تا برنده میشه.لطفا یکی کمک کنه لطفا


خودت باید بازی کنی تا متوجه بشی

----------


## fafa_na

حالا شما کمکم کن تا دفعه اولو بازی کنم و برنده بشم بخدا بعدش خودم بازی میکنم

----------

