ماراتن برنامه نویسی (نظریه بازی ها)

آیا با فعال شدن این ماراتن موافقید؟


  • مجموع رای دهندگان
    302

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#1
معمولا تو ماراتن برنامه نویسی (ماراتن ++C کنونی) سوال های نظریه بازی ها مطرح نمی شه. شاید به دلیل اینه که فرق بزرگش با برنامه های دیگه اینه که به صورت Interactive کار می کنه. به هر حال حیفه که از چنین مبحث زیبایی سوال نداشته باشیم. به همین دلیل تصمیم گرفتم که چنین ماراتنی را افتتاح کنم.
این هم قوانین:
1- از آسان شروع می کنیم!
2- کد ها را همین جا در تگ کد (#)، Snipt و یا CodeUpload قرار دهید.
3- می توانیم فرض کنیم ورودی های کاربر درست هستند (برنامه ای که با این فرض نوشته شده باشد هم درست است).
4- فقط به زبان فارسی معیار (!) پست بزنید.
5- تا سوال حل نشده ای وجود دارد از گذاشتن سوال جدید شدیدا اجتناب کنید!
6- فقط به زبان ++C بنویسید! (کامپایلرش فرقی نداره ولی ترجیحا با Dev بنویسید).
7- شماره هر سوال را با فونت بزرگ یا به صورت عکس در بالای سوال خود یا پستی که راجع به سوال می زنید قرار دهید!
همین!
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#2
[center:d76a961e60]

N و m دو عدد طبیعی هستند. در ابتدا N عدد چوب کبریت داریم. دو بازیکن هربار تعدادی از این چوب کبریت ها را برمی دارند. هربازیکن باید در نوبت خود حداقل 1 چوب کبریت و حداکثر m تا بردارد. کسی که آخرین چوب کبریت را بردارد بازنده است.
برنامه ای بنویسید که با گرفتن N و m مشخص کند استراتژی برد با کیست، خود را جای وی گذاشته، با کاربر بازی کرده و برنده شود. (مساله های الگوریتمی، مساله شماره 66)​
[/center:d76a961e60]
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#3
[center:ffcd7751b4]

وقت سوال تموم شد (بخونین خیلی وقته تموم شده)، چرا کسی جواب نمی ده؟
Code in Snipt.net
کد
#include<iostream.h>
#include<conio.h>
using namespace std;
using std::cout;
using std::cin;
int main()
{
    int n,k,i;
    cout<<"Enter n,k:";
    cin>>n>>k;
    while(k>n)
    {
	  cout<<"You cheater! Enter k again!";
	  cin>>k;
    }
    k++;
    if(n%k==0)
    {
	  cout<<"I'm the 2nd player!";
	  while(n>0)
	  {
		cout<<"\nHow many matchsticks do u want to take?";
		cin>>i;
		while(i>=k)
		{
		   cout<<"You cheater! Enter again!";
		   cin>>i;
		}
		n-=i;
		cout<<"\nThe number of remaining ones is "<<n;
		i=k-i;
		n-=i;
		cout<<"\nI take "<<i<<" matchstick(s)!";
		cout<<"\nThe number of remaining ones is "<<n;
	  }
    }
    else
    {
	  i=n%k;
	  cout<<"I'm the 1st player!";
	  while(n>0)
	  {
		cout<<"\nI take "<<i<<" matchstick(s)!";
		n-=i;
		cout<<"\nThe number of remaining ones is "<<n;
		if(n!=0)
		{
		   cout<<"\nHow many matchsticks do u want to take?";
		   cin>>i;
		   while(i>=k)
		   {
			 cout<<"You cheater! Enter again!";
			 cin>>i;
		   }
		   n-=i;
		   cout<<"\nThe number of remaining ones is "<<n;
		   i=k-i;
		}
	  }
   }
   cout<<"\nI WON!";
   getch();
   return 1374;
}
[/center:ffcd7751b4]​
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#4
[center:9067b36042]

یک دسته n تایی سنگریزه موجود است. دو بازیکن بازی زیر را روی آن انجام می دهند:
در هر نوبت بازیکنی که نوبت اوست یکی از دسته ها را انتخاب و آن را به طور دلخواه به دو دسته ناتهی تقسیم می کند. بازنده کسی است که نتواند حرکتی انجام دهد.
برنامه ای بنویسید که n را گرفته، استراتژی برد را پیدا کرده و پس از بازی با کاربر برنده شود.​
[/center:9067b36042]
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#5
SABB گفت
4- فقط به زبان فارسی معیار (!) پست بزنید.
از اونجایی که من خیلی آدم بدبینی هستم ، اینو اینطوری تلقی می کنم که در حقیقت این قانون برای من بوده. به شما دوست عزیز هم عرض می کنم که فارسی معیار یعنی استفاده از کلمات و عباراتی که در لغتنامه ی فارسی (برای من فقط دهخدا اعتبار دارد) آمده باشند. چون همه ی کلمات مشهدی در این لغتنامه آمده است پس استفاده از کلماتی مانند زینگیچه هیچ مشکلی ندارد و من با کمال افتخار استفاده خواهم کرد.

http://www.loghatnaameh.com/dehkhodaworddetail-56446608636c4b1d8a275e23fe0f5717-fa.html
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#6
Goharshady گفت
SABB گفت
4- فقط به زبان فارسی معیار (!) پست بزنید.
از اونجایی که من خیلی آدم بدبینی هستم ، اینو اینطوری تلقی می کنم که در حقیقت این قانون برای من بوده. به شما دوست عزیز هم عرض می کنم که فارسی معیار یعنی استفاده از کلمات و عباراتی که در لغتنامه ی فارسی (برای من فقط دهخدا اعتبار دارد) آمده باشند. چون همه ی کلمات مشهدی در این لغتنامه آمده است پس استفاده از کلماتی مانند زینگیچه هیچ مشکلی ندارد و من با کمال افتخار استفاده خواهم کرد.
ولی من منظورم اون نبود،
یاد کتاب زبان فارسی 1 افتادم گفتم بنویسم!!
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#7
Goharshady گفت
SABB گفت
4- فقط به زبان فارسی معیار (!) پست بزنید.
از اونجایی که من خیلی آدم بدبینی هستم ، اینو اینطوری تلقی می کنم که در حقیقت این قانون برای من بوده. به شما دوست عزیز هم عرض می کنم که فارسی معیار یعنی استفاده از کلمات و عباراتی که در لغتنامه ی فارسی (برای من فقط دهخدا اعتبار دارد) آمده باشند. چون همه ی کلمات مشهدی در این لغتنامه آمده است پس استفاده از کلماتی مانند زینگیچه هیچ مشکلی ندارد و من با کمال افتخار استفاده خواهم کرد.

http://www.loghatnaameh.com/dehkhodaworddetail-56446608636c4b1d8a275e23fe0f5717-fa.html
ولی چه جالب است!
شما در نظرات شاززز گفته بودید فقط فرهنگستان برای شما اعتبار دارد!
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#8
SABB گفت
Goharshady گفت
SABB گفت
4- فقط به زبان فارسی معیار (!) پست بزنید.
از اونجایی که من خیلی آدم بدبینی هستم ، اینو اینطوری تلقی می کنم که در حقیقت این قانون برای من بوده. به شما دوست عزیز هم عرض می کنم که فارسی معیار یعنی استفاده از کلمات و عباراتی که در لغتنامه ی فارسی (برای من فقط دهخدا اعتبار دارد) آمده باشند. چون همه ی کلمات مشهدی در این لغتنامه آمده است پس استفاده از کلماتی مانند زینگیچه هیچ مشکلی ندارد و من با کمال افتخار استفاده خواهم کرد.

http://www.loghatnaameh.com/dehkhodaworddetail-56446608636c4b1d8a275e23fe0f5717-fa.html
ولی چه جالب است!
شما در نظرات شاززز گفته بودید فقط فرهنگستان برای شما اعتبار دارد!

فرهنگستان چند تا فرهنگ فارسی را به رسمیت می شناسد که یکی از آنها همین دهخدا است. ضمنا موردی که من گفته بودم (البته مطمئن نیستم تو شاززز بود یا نه) در مورد معادل سازی کلمات انگلیسی بود.
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#9
Goharshady گفت
SABB گفت
Goharshady گفت
SABB گفت
4- فقط به زبان فارسی معیار (!) پست بزنید.
از اونجایی که من خیلی آدم بدبینی هستم ، اینو اینطوری تلقی می کنم که در حقیقت این قانون برای من بوده. به شما دوست عزیز هم عرض می کنم که فارسی معیار یعنی استفاده از کلمات و عباراتی که در لغتنامه ی فارسی (برای من فقط دهخدا اعتبار دارد) آمده باشند. چون همه ی کلمات مشهدی در این لغتنامه آمده است پس استفاده از کلماتی مانند زینگیچه هیچ مشکلی ندارد و من با کمال افتخار استفاده خواهم کرد.

http://www.loghatnaameh.com/dehkhodaworddetail-56446608636c4b1d8a275e23fe0f5717-fa.html
ولی چه جالب است!
شما در نظرات شاززز گفته بودید فقط فرهنگستان برای شما اعتبار دارد!

فرهنگستان چند تا فرهنگ فارسی را به رسمیت می شناسد که یکی از آنها همین دهخدا است. ضمنا موردی که من گفته بودم (البته مطمئن نیستم تو شاززز بود یا نه) در مورد معادل سازی کلمات انگلیسی بود.
در مورد معادل سازی کلمات انگلیسی نبود، در مورد کتاب های آقای احمدی فولادی بود! (چهارما یا چهارمن)
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#10
اونو تو شاززز ننوشته بودم ، تو المپیاد کامپیوتر Wonderland نوشته بودم.
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#11
[center:2a94d64885][HIGHLIGHT=#c00000]2[/HIGHLIGHT][/center:2a94d64885]http://snipt.net/SABB/pebbles-game

فقط یه چیزی، من فعلا تونستم فقط واسه n های زوجو بنویسم...
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#12
[center:9a1e228bf5]2
برای n های فرد هم نوشتم. تو همون لینک بالا ویرایش شد.​
[/center:9a1e228bf5]
البته با فرض درست بودن ورودی...
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#13
سوال 3

[center:5c222dc2c0]


[/center:5c222dc2c0]ببخشید که خیلی آسونه! 20 عدد کارت با شماره های 1،2،3،...و 5 در سبدی موجودند (از هر شماره 4 عدد). دو بازیکن به نوبت یک کارت از میان این کارت ها بر می دارند. هرکس که پس از حرکت او مجموع اعداد خارح از سبد 30 شود برنده است. برنامه ای بنویسید که با کاربر بازی کرده و برنده شود.
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#14
سلام. خیلی هم آسون نیست
ببخشید که یه مدت نبودم ، شاید یه مدت طولانی تر هم نباشم(بستگی به امکانات باشگاه داره)
چون من نمی تونم پیام شخصی بفرستم همینجا بهتون می گم که rand همیشه یه عدد میده ، اگر می خواهید تقریبا تصادفی کار کنید باید از srand استفاده کنید و به عنوان پارامتر ساعت سیستم را به آن بدهید.
موفق باشید
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#15

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#16
من الآن با Dialup آنلاین هستم. نمی تونم چک کنم. ببخشید
راستی شماره تونو گم کردم
(از دست خودم عصبانیم) ، اگه میشه دوباره با pm برام بفرستین.
 

SABB

New Member
ارسال ها
704
لایک ها
25
امتیاز
0
#17
[center:19ac754ec0]

[/center:19ac754ec0](مساله های الگوریتمی-68): دو نفر بازی زیر را انجام می دهند: در ابتدا با n سنگریزه (n فرد است) موجود است. در هر حرکت هر بازیکن باید حداقل 1 و حداکثر k سنگریزه بردارد. همین طور تا سنگریزه ها تمام شود. کسی که مجموع سنگریزه هایش زوج باشد برنده است.
برنامه ای بنویسید که n را گرفته، استراتژی برد را تشخیص داده، با کاربر بازی کرده و برنده شود.
 

Goharshady

New Member
ارسال ها
2,239
لایک ها
166
امتیاز
0
#18
صورت سوال کمی با چیزی که شما نوشته اید فرق دارد. در صورت سوال گفته است n فرد است نه این که n=2k+1 !! توجه کنید که k در صورت سوال معنا دارد!!
اینو امشب می نویسم
 
بالا