havakili
دوشنبه 26 مرداد 1394, 12:01 عصر
با سلام خدمت دوستان گرامی
من یه مشورت خیلی فنی لازم دارم واقعا کمکم کنید
ما قصد داریم یه سری موارد خاص رو در مربع جادوئی چک کنیم
حالا واسمون مهم نیست تا الان دیگران چه نتایجی از مربع جادوئی بدست آوردن
ما باید خودمون به این نتایج دست پیدا کنیم
خوب حالا ما برای یک مربع جادوئی N*N که در این مربع جادوئی N*N! حالت باید جایگذاری بشه تا ما هم
بتونیم یکی یکی این موارد رو که با شرایط ما متناسب هستند رو استخراج کنیم
ما قصد داریم این کار رو تا حد امکان برای N=100 بدست بیاریم (یعنی 10000 فاکتوریل) هر چند از لحاظ امکاناتی این کار محال هست
ولی ما میخوایم اگه شما بزرگواران ما رو راهنمائی و کمک کنید تا حد امکان پیش بریم و حداقل باید از n=4 شروع کنیم تا هر جای که تونستیم پیش بریم
من نظر خودم این هستش که این کار باید به 3 مرحله کلی تقسیم بشه
1 - تولید حالات اعداد برای جایگذاری در مربع
2 - چک کردن اینکه آیا مربع تولیدی جادوئی هست یا نه
3- بررسی شرایط درخواستی ما
خوب در مرحله یک 1 که واقعا طولانی هست من نظرم این هست که هر بازه از اعداد مثلا برای N=4 که تعداد حالات برابر با 16! هست یه چیزی حدود=20922789888000
این تعداد حالت جایگشت داریم خوب این تعداد جایگشت به ازای هر عدد برابر است =1307674368000
باید یه برنامه ای داشته باشیم که بتونه برای هر عدد جداگانه این تعداد حالات رو بدست بیاره
ما هم بتونیم برنامه رو روی مثلا 100 سیستم بذاریم تا کارشو انجام بده
و هر چه بتونیم این بازه ها رو کوچکتر کنیم به نفعمون هست
و سپس حالت های تولید شده رو به ازای هر نمونه از برنامه داخل فایل خودش ذخیره کنیم
بعد به همین صورت شرایط چک کردن مراحل دو و سه رو انجام بدیم
ضمنا ما مرحله یک رو فقط یک برای مثلا N=50 انجام میدم و ذخیره میکنیم بعد برای تمامی N های کوچکتر از اون فقط
چک کردن های مرحله 2 و3 رو بر اساس N انجام بدیم
از قول معروف که میگه "چون که صد آمد نود هم پیش ماست"
این تنها چیزی هست که من به ذهنم میرسید
حالا شما بزرگوارن عنایتی کنید
تا مسئله بهتر و بهینه تر حل بشه
با تشکر
من یه مشورت خیلی فنی لازم دارم واقعا کمکم کنید
ما قصد داریم یه سری موارد خاص رو در مربع جادوئی چک کنیم
حالا واسمون مهم نیست تا الان دیگران چه نتایجی از مربع جادوئی بدست آوردن
ما باید خودمون به این نتایج دست پیدا کنیم
خوب حالا ما برای یک مربع جادوئی N*N که در این مربع جادوئی N*N! حالت باید جایگذاری بشه تا ما هم
بتونیم یکی یکی این موارد رو که با شرایط ما متناسب هستند رو استخراج کنیم
ما قصد داریم این کار رو تا حد امکان برای N=100 بدست بیاریم (یعنی 10000 فاکتوریل) هر چند از لحاظ امکاناتی این کار محال هست
ولی ما میخوایم اگه شما بزرگواران ما رو راهنمائی و کمک کنید تا حد امکان پیش بریم و حداقل باید از n=4 شروع کنیم تا هر جای که تونستیم پیش بریم
من نظر خودم این هستش که این کار باید به 3 مرحله کلی تقسیم بشه
1 - تولید حالات اعداد برای جایگذاری در مربع
2 - چک کردن اینکه آیا مربع تولیدی جادوئی هست یا نه
3- بررسی شرایط درخواستی ما
خوب در مرحله یک 1 که واقعا طولانی هست من نظرم این هست که هر بازه از اعداد مثلا برای N=4 که تعداد حالات برابر با 16! هست یه چیزی حدود=20922789888000
این تعداد حالت جایگشت داریم خوب این تعداد جایگشت به ازای هر عدد برابر است =1307674368000
باید یه برنامه ای داشته باشیم که بتونه برای هر عدد جداگانه این تعداد حالات رو بدست بیاره
ما هم بتونیم برنامه رو روی مثلا 100 سیستم بذاریم تا کارشو انجام بده
و هر چه بتونیم این بازه ها رو کوچکتر کنیم به نفعمون هست
و سپس حالت های تولید شده رو به ازای هر نمونه از برنامه داخل فایل خودش ذخیره کنیم
بعد به همین صورت شرایط چک کردن مراحل دو و سه رو انجام بدیم
ضمنا ما مرحله یک رو فقط یک برای مثلا N=50 انجام میدم و ذخیره میکنیم بعد برای تمامی N های کوچکتر از اون فقط
چک کردن های مرحله 2 و3 رو بر اساس N انجام بدیم
از قول معروف که میگه "چون که صد آمد نود هم پیش ماست"
این تنها چیزی هست که من به ذهنم میرسید
حالا شما بزرگوارن عنایتی کنید
تا مسئله بهتر و بهینه تر حل بشه
با تشکر