m.Mosibat 158 ارسال شده در آبان 92 گزارش بازنشر ارسال شده در آبان 92 دوستان عزیز کسی وقت آزاد داره یه کمک به ما بده ؟نیاز به کد PHP مربع جادویی n*n دارم .کدش رو برای جاوا دارم اما به زبان php نیازش دارمممنونتوی نت به انگلیسی خیلی گشتم اما کد سالمی پیدا نکردم.کسی هم برای جاوا خاست بگه براش بزارم. نقل قول لینک به ارسال
Parsa 23463 ارسال شده در آبان 92 گزارش بازنشر ارسال شده در آبان 92 چه الگوریتمی دارد؟ نقل قول لینک به ارسال
m.Mosibat 158 ارسال شده در آبان 92 مالک گزارش بازنشر ارسال شده در آبان 92 (ویرایش شده) یه عدد N رو از ورودی دریافت کنه و بعد از اون یه ماتریس N*N تشکیل بده که مجموع سطر و ستون و قطرها با هم برابر باشند.کدش در جاوا :public class MagicSquare {public static void main(String[] args) { int N = Integer.parseInt(args[0]); if (N % 2 == 0) throw new RuntimeException("N must be odd"); int[][] magic = new int[N][N]; int row = N-1; int col = N/2; magic[row][col] = 1; for (int i = 2; i <= N*N; i++) { if (magic[(row + 1) % N][(col + 1) % N] == 0) { row = (row + 1) % N; col = (col + 1) % N; } else { row = (row - 1 + N) % N; // don't change col } magic[row][col] = i; } // print results for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (magic[i][j] < 10) System.out.print(" "); // for alignment if (magic[i][j] < 100) System.out.print(" "); // for alignment System.out.print(magic[i][j] + " "); } System.out.println(); }}} ویرایش شده آبان 92 توسط m.Mosibat نقل قول لینک به ارسال
m.Mosibat 158 ارسال شده در آذر 92 مالک گزارش بازنشر ارسال شده در آذر 92 یکم مختصر ترش در جاوا : public static void main(String[] args) { int order = 4;for (int row = 0; row < order; row++) {for (int col = 0; col < order; col++) { int rowMatrix = (((order + 1) / 2 + row + col) % order); int colMatrix = (((order + 1) / 2 + row + order - col - 1) % order) + 1; System.out.print(((rowMatrix * order) + colMatrix) + "\t");}System.out.println();} }}کسی نمیتونه کمکمون کنه ؟ نقل قول لینک به ارسال
SM-Mahdavi 5427 ارسال شده در آذر 92 گزارش بازنشر ارسال شده در آذر 92 والا من الگوریتم رو بلدم ولی اجراش نکردم تا حالا. اگه می خوای برات بنویسم. نقل قول لینک به ارسال
m.Mosibat 158 ارسال شده در آذر 92 مالک گزارش بازنشر ارسال شده در آذر 92 والا من الگوریتم رو بلدم ولی اجراش نکردم تا حالا. اگه می خوای برات بنویسم.ممنون میشم. نقل قول لینک به ارسال
SM-Mahdavi 5427 ارسال شده در آذر 92 گزارش بازنشر ارسال شده در آذر 92 ببینید تو ماتریس جادویی اولین شرط اینه ماتریس مربع باشه. یعنی سطر و ستون برابر باشه. دومین شرط اینه که تعداد سطر و ستون ها فرد باشه. مثلا 3*3. من همین 3*3 رو براتون مثال میزنم.3 تا سطر داریم 3 تا ستون.ما باید اعداد 1 تا 9 رو طوری تو این جدول بچینیم که جمع سطر ها در همه حالات برابر شه. تو این مثال ما یعنی باید 15 بشه.عدد 1 رو میزارم خونه وسط از سطر اول.(طبق شکل)عدد 9 یعنی (3*3) رو میزارم خونه وسط سطر آخر.(طبق شکل)حالا 2 کجا باید قرار بگیره؟ طبق قانون این بازی اگر 1تو این محل باشه، عدد بعدی تو خونه ی گوشه بالا سمت راستش هست یعنی مشکل شکل زیر:خب حالا که یک اونجا نیست پس 2 رو کجا بزاریم؟ قانون برعکس میشه! گوشه سمت راست پایین. به شکل زیر:حالا نوبت عدد 3 هست. 3 هم باید گوشه بالا سمت راست عدد قبلی باشه. ما نداریم تو جدولمون همچین خونه ای. پس میره گوشه سمت چپ. شکل زیر:یه قانون دیگه تو این بازی هست. این قانون میگه که اگه به عددی رسیدی که یکی از مضارب تعداد سطرها یا ستون ها بود عدد بعدی رو زیر اون عدد بزار. الان ما به 3 رسیدیم. 3 مضرب 3 است. پس 4 قرار میگیره زیر 3. شکل زیر:5 و 6 هم طبق قانونی که گفتیم گوشه بالا سمت راست عدد قیلی میرن بالا. شکل زیر:آقا 6 مضرب 3 هست؟ بله. پس 7 میره زیرش. شکل زیر:8 هم که قاعدتا تو جای خالی قرار میگیره. اگه دقت کنید قانون هم درست جای 8 رو همون جا مشخص کرده. 8 باید بره بالا گوشه راست7، نداریم همچین خونه ای، میره گوشه سمت چپ. شکل:9 رو هم که همون اول گذاشته بودیم. با قانونمون هم که درست در اومد .جمع سطرها، ستون ها و قطرهای همگی عدد 15 رو به ما میدن. برای 5*5 روی روی کاغذ رسم کنید. خیلی براتون آسون میشه. 2 نقل قول لینک به ارسال
m.Mosibat 158 ارسال شده در آذر 92 مالک گزارش بازنشر ارسال شده در آذر 92 حالا ممنون میشم یکی از دوستان که به پی اچ پی تخصص داره برام کدش رو بنویسه نقل قول لینک به ارسال
mehral 785 ارسال شده در آذر 92 گزارش بازنشر ارسال شده در آذر 92 این کد برای فقط ماتریس مربعی فرد نوشتم <?php $num = 3;$output = '';$matrix = array();if ( $num % 2 !== 0 ) {for ($i=1; $i <= $num; $i++) { $matrix[$i] = array(); for ($j=1; $j <= $num ; $j++) { $index = ( $num * ( ( $i + $j - 1 + floor( $num / 2 ) ) % $num ) ) + ( ( $i + ( 2 * $j ) - 2 ) % $num ) + 1; $matrix[$i][$j] = $index; }}$output .= '<table class="table">';$output .= '<caption>M = Order '.count($matrix).'</caption>';$output .= '<tbody>';foreach ($matrix as $row => $cols) { $output .= '<tr>'; foreach ($cols as $col) { $output .= '<td>'.$col.'</td>'; } $output .= '</tr>';}$output .= '</tbody>';$output .= '</table>';}echo $output;?>نمایش آنلاین http://69.195.223.90/574c1-2/ 4 نقل قول لینک به ارسال
m.Mosibat 158 ارسال شده در آذر 92 مالک گزارش بازنشر ارسال شده در آذر 92 این کد برای فقط ماتریس مربعی فرد نوشتم<?php$num = 3;$output = '';$matrix = array();if ( $num % 2 !== 0 ) {for ($i=1; $i <= $num; $i++) {$matrix[$i] = array();for ($j=1; $j <= $num ; $j++) {$index = ( $num * ( ( $i + $j - 1 + floor( $num / 2 ) ) % $num ) ) + ( ( $i + ( 2 * $j ) - 2 ) % $num ) + 1;$matrix[$i][$j] = $index;}}$output .= '<table class="table">';$output .= '<caption>M = Order '.count($matrix).'</caption>';$output .= '<tbody>';foreach ($matrix as $row => $cols) {$output .= '<tr>';foreach ($cols as $col) {$output .= '<td>'.$col.'</td>';}$output .= '</tr>';}$output .= '</tbody>';$output .= '</table>';}echo $output;?>نمایش آنلاینhttp://69.195.223.90/574c1-2/آقا خیلی ازت ممنونم ازت.امکانش هست این خط رو برام توضیح بدی ؟$index = ( $num * ( ( $i + $j - 1 + floor( $num / 2 ) ) % $num ) ) + ( ( $i + ( 2 * $j ) - 2 ) % $num ) + 1;و اینکه چه دلیلی داره که برای ورودی زوج نمیشه پیادش کرد ؟ نقل قول لینک به ارسال
SM-Mahdavi 5427 ارسال شده در آذر 92 گزارش بازنشر ارسال شده در آذر 92 الگوریتم میگه که این ماتریس فقط برای ورودی فرد جواب دارد. دلیلش رو منم نمی دونم ! نقل قول لینک به ارسال
m.Mosibat 158 ارسال شده در آذر 92 مالک گزارش بازنشر ارسال شده در آذر 92 الگوریتم میگه که این ماتریس فقط برای ورودی فرد جواب دارد. دلیلش رو منم نمی دونم !عزیز جان دستت درد نکنه برای کد اما اون یه خط رو که دادم میتونی برام توضیح بدی که دقیقاً چیکار میکنه ؟ نقل قول لینک به ارسال
SM-Mahdavi 5427 ارسال شده در آذر 92 گزارش بازنشر ارسال شده در آذر 92 (ویرایش شده) تابع floor کارش اینه که عدد رو به پایین گرد می کنه. index رو هم که تو حلقه هر دفعه داره چاپ می کنه.num همون تعداد سطر و ستون هست. که تو این مثال 3 در نظر گرفته شده. ماتریس 3*3. بعد طبق فرمولش اومده محاسبه کرده ریخته تو index بعد چاپش کرده. یه بار که trace کنید متوجه می شید. ویرایش شده آذر 92 توسط S M Mahdavi 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .