نمایش نتایج: از شماره 1 تا 9 از مجموع 9

موضوع: حرکت

  1. #1
    کاربر فعـال
    تاریخ عضویت
    2013 March
    ارسال ها
    101
    تشکر
    154
    تشکر شده 124 بار در 75 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر

    حرکت

    دوستان سلام . مطالعه من در مورد ماتریس ها تقریبا تمام شده . یک جایی پر از حلقه های تو در تو . ( for ) . ولی یک ؟ خوب نظرمو جلب کرد . حرکت روی سطر و ستون های یک ماتریس . که میتونه دو نه دونه و یا چند تا چند تا باشه . ؟ اینه : برنامه ای بنویسید که حرکت موش را در یک فضای دو بعدی به صورت زیر شبیه سازی کند ( شکل پائین ) . هر خانه ای که 1 بود , به سمت جلو حرکت کند . هر خانه ای که 0 بود , به پائین . حرکت روی قطر اصلی و یا فرعی در ماتریس همانی ساده هست . ولی یک ماتریس در هم که پر از 0 و 1 باشه رو چه کنم ؟ و در پایان هم باید مسر حرکت چاپ بشه . من نیاز به حل این مسئله و یا چیزی مشابه دارم تا یادش بگیرم . ممنون میشم که حل کنین و یا راهنمایی بفرمائین . من نتونستم مسیر حرکت موش رو براتون بزارم .( مثلا حرکت بصورت قطری ) ولی منظورم دقیقا حل این مسئله نیست . یه چیز مشابه هم باشه خوبه تا یاد بگیرم . این ماتریس 10 در 10 هست . مربعی . و ورود موش از خونه a1010 و خروجش از خونه a00 میتونه باشه . امیدوارم خوب گفته باشم . منتظر پاسخ هاتون هستم این مسئله در کتاب طراحی سیستم های شی گرا با زبان c# هست . صفحه 183 . شماره 15 . انتشارات فن اوری نوین . بابل
    1 0 1 0 1 1 1 1 1 1
    0 1 0 1 0 0 0 1 1 0
    0 0 1 0 1 1 1 1 1 1
    1 1 0 1 0 1 1 1 1 1
    1 1 1 1 0 1 1 1 1 1
    0 0 1 0 1 1 0 0 0 1
    1 1 0 0 1 0 1 0 1 1
    0 0 0 1 1 0 0 1 0 1
    0 0 1 0 0 0 1 1 0 1
    1 1 1 0 0 1 1 0 1 1


  2. #2
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    من دقیقا متوجه منظورتون نشدم ، بهتره یکم بیشتر توضیح بدید تا بتونیم منظورتون را متوجه بشیم ، اما برداشت من ،
    فرض کنیم چنین ماتریسی به ما داده اند :
    1 0 1 0 1 1 1 1 1 1
    0 1 0 1 0 0 0 1 1 0
    0 0 1 0 1 1 1 1 1 1
    1 1 0 1 0 1 1 1 1 1
    1 1 1 1 0 1 1 1 1 1
    0 0 1 0 1 1 0 0 0 1
    1 1 0 0 1 0 1 0 1 1
    0 0 0 1 1 0 0 1 0 1
    0 0 1 0 0 0 1 1 0 1
    1 1 1 0 0 1 1 0 1 1
    که میتونیم اونُ یک هزار تو در نظر بگیریم که قرار یک موشی از اول تا آخر اونُ پیشمایش کنه ، موش از سطر 0 و ستون 0 شروع میکنه تا زمانی که 0 ندید اندیس ستون را به علاوه ی 1 می کنیم ، وقتی صفر دید اندیس سطر را به علاوه ی یک و اندیس ستون را بدون تغییر میزاریم ، البته با این شرط که اگر اندیس ستون برابر آخرین اندیس ستون ماتریس بود ، یکی به اندیس سطر اضافه و اندیس ستون را 0 می کنیم این حلقه تا زمانی که به آخرین اندیس سطر و ستون برسیم ادامه داره و یا اینکه به 0 ای برسیم که نتونیم یک سطر پایین بییایم ، یعنی زمانی که سطر آخر باشیم و 0 ببینیم...
    اگر منظورتون دقیقا همین بود ، بگید تا کدش براتون بزارم...

    ویرایش توسط returnx : 18th January 2014 در ساعت 08:53 PM

  3. #3
    کاربر فعـال
    تاریخ عضویت
    2013 March
    ارسال ها
    101
    تشکر
    154
    تشکر شده 124 بار در 75 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    ایده هزارتو خیلی مسئله رو جالب یکنه . ولی در کتاب شما پله رو فرض کنین . شخصی که روی پله ها حرکت میکنه . حالا یکی یکی و یا میپره . چند تا چند تا . ممکن هست حرکت از بالا به پائین و یا پائین به بالا باشه . خب . من فکر میکنم چون در این مسئله فقط 0و1داریم میتونیم از forی که به while تبدیل میشه استفاده کنیم . این طوری با دیدن 0 گ f داریم و با دیدن 1 گ true . این ایده من هست . ولی کدش جواب نمیده . حتما چون ضعیفم . نظرتون چیه ؟ در ضمن در مورد توضیحتون . فکر میکنم اون طوری تمامیه سطر ها و ستون ها پیمایش بشه . موش از خونه اول یعنی a00 وارد میشه و از خونه a1010 خارج میشه . پس با طی همه خونه ها پیش میره . درست فهمیدم ؟

    ویرایش توسط jellyfish : 18th January 2014 در ساعت 10:03 PM

  4. #4
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    نقل قول نوشته اصلی توسط jellyfish نمایش پست ها
    . خب . من فکر میکنم چون در این مسئله فقط 0و1داریم میتونیم از forی که به while تبدیل میشه استفاده کنیم . این طوری با دیدن 0 گ f داریم و با دیدن 1 گ true . این ایده من هست . ولی کدش جواب نمیده . حتما چون ضعیفم . نظرتون چیه ؟
    مسئله پله یکم متفاوت هست ، چون تو مسئله پله ما حرکت خاصی نداریم ف فقط از یک حالت به حالت بعدی میریم این منُ یاد ماشین های FA میندازه و به نظر من تو مسئله پله ما نیاز به ماتریس از داده ها نداریم و میشه داده ها را به صورت توالی از اعداد در نظر بگیریم که در یک آرایه یک بعدی هستند ،به این شکل که بادیدن هر عددی به غیر از صفر به بالا میریم یعنی اندیس فعلی را به علاوه ی این عدد میکنیم این به این معناست اگر ما 3 دیدیم ، از روی 2 تا پله پریدیم (حالت چند پله ای) ولی اتفاق بدی هم که ممکنه بیفته اینکه ما یک 1 ببنیم و بلافاصله خونه ی بعدی 0 باشه ، یعنی ما با دیدن 1 یک پله میریم بالا و با دیدن 0 یک پله برمیگردیم پایین ، حالا دوباره ما چی میبینیم !؟ 1 دوباره میریم بالا ، چی میبینیم!؟ 0 و این داستان تا ابد ادامه پیدا میکنه یعنی افتادیم تو یک حلقه ی بی نهایت مثل حالت trap (تله) در FA ها...
    کدش به اینصورت میشه : (البته با C++ )
        int i_array[] = { 1, 1, 3, 0, 0, 1, 1, 5, 1, 0, 1, 1, 1, 1, 2, 3, 0, 1, 1,1 };
    int index=0;
    while (index < 19)
    {
    if (i_array[index] == 0)
    {
    cout << "Down!"<<"\n";
    index--;
    }
    else
    {
    cout << "Up " << i_array[index]<< " Level" << "\n";
    index += i_array[index];
    }
    }

    مورد توضیحتون . فکر میکنم اون طوری تمامیه سطر ها و ستون ها پیمایش بشه . موش از خونه اول یعنی a00 وارد میشه و از خونه a1010 خارج میشه . پس با طی همه خونه ها پیش میره . درست فهمیدم ؟
    نه موش تمام خونه ها را پیمایش نمیکنه وقتی 0 میبینه یک سطر میاد پایین و دقیقا در همون ستونی که بود ، این به این معناست که ستون های قبل را نمیبینه فرض کنید این ماتریس ماست :
    1 0 1 0 1 1 1 1 1 1
    0 1 0 1 0 0 0 1 1 0
    0 0 1 0 1 1 1 1 1 1
    موش 1 میبینه میره ستون بعد ، 1 میبینه میره ستون بعد ، 1 میبینه میره ستون بعد ، موش 1 میبینه میره ستون بعد ، 1 میبینه میره ستون بعد ، 1 میبینه میره ستون بعد ،0 میبینه میره یک سطر پایین دقیقا در همون ستون ،
    1 میبینه میره ستون بعد ،0 میبینه میره سطر بعد ، 1 میبینه میره ستون بعد ، 0 میبینه باید بره سطر بعد اما سطر بعدی وجود نداره ، پس میتونه بره ستون بعد تا زمانی که به آخر برسه ، اگه به آخر رسید کار تموم میشه ، حالا فرض کنید در مسئله به مل گفته بودند که راه خروج را با علامتی مثل # مشخص کرده بودند ، اون موقع موش رسیده بود به آخر اما راه خروج را ندیده بود پس باید بر می گشت اول و مسیر جدیدی را انتخاب می کرد!

    ویرایش توسط returnx : 19th January 2014 در ساعت 12:13 AM

  5. #5
    کاربر فعـال
    تاریخ عضویت
    2013 March
    ارسال ها
    101
    تشکر
    154
    تشکر شده 124 بار در 75 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    منظورم از پله شکستگی حرکت هست . در همون ماتریس . موش از یک جا شروع به حرکت میکنه و جلو و پائین پیش میره و تقریبا مانند پله هست تا پائین میاد . و اینکه انتهای مسیر بسته باشه رو من اصلا فکرشو نکردم و البته در ؟ هم نبود . ولی خوب به فکرش بودین . و یک مطلب دیگه اینکه بنده هنوز یک جوجه برنامه نویسم و کلی طول میکشه تا کدی بزنم و با سی شارپ کار میکنم . ممنون میشم با سی شارپ هم برام بزارین . وقتی برنامه اجرا بشه و مسیر حرکت موش با ستاره پر بشه فکر میکنم ما یه چیزی شبیه پله خواهیم داشت . .


  6. #6
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    این کد سی شارپش میشه(تحت کنسول) :
      /* MAP:
    1 0 1 0 1 1 1 1 1 1
    0 1 0 1 0 0 0 1 1 0
    0 0 1 0 1 1 1 1 1 1
    1 1 0 1 0 1 1 1 1 1
    1 1 1 1 0 1 1 1 1 1
    0 0 1 0 1 1 0 0 0 1
    1 1 0 0 1 0 1 0 1 1
    0 0 0 1 1 0 0 1 0 1
    0 0 1 0 0 0 1 1 0 1
    1 1 1 0 0 1 1 0 1 1
    */
    int[,] map = new int[,] { { 1, 0, 1, 0 ,1, 1, 1, 1, 1, 1}, {0, 1, 0, 1, 0, 0, 0, 1, 1, 0 },
    {0, 0, 1, 0, 1, 1, 1, 1, 1, 1 },{1, 1, 0, 1, 0 ,1, 1, 1, 1, 1}, {1, 1, 1, 1, 0, 1, 1, 1, 1 ,1} ,
    {0, 0, 1, 0, 1, 1, 0, 0, 0, 1}, {1, 1, 0, 0, 1, 0, 1, 0, 1, 1}, {0, 0, 0, 1, 1, 0, 0, 1, 0, 1,},
    {0, 0, 1, 0, 0, 0, 1, 1 ,0, 1},{1, 1, 1, 0, 0, 1, 1, 0, 1, 1}};

    int row_index=0, col_index = 0;

    //Print Map:
    Console.WriteLine("MAP :");
    for (int row_counter = 0; row_counter < map.GetLength(0); row_counter++)
    {
    for (int col_counter = 0; col_counter < map.GetLength(1); col_counter++)
    {
    Console.Write(map[row_counter,col_counter]);

    }
    Console.WriteLine();
    }

    Console.WriteLine("\nMouse Moves :");

    while (row_index < map.GetLength(0)) // if row index < rows count
    {

    if (map[row_index,col_index]==1 && col_index<(map.GetLength(1)-1))
    {
    Console.Write("*");
    col_index++;

    }
    else
    {
    Console.Write("*\n");
    //Console.WriteLine(); //Go to next line
    for (int rows_space = 0; rows_space < col_index;rows_space++ ) //Ignore Cols in New Line
    {
    Console.Write(" ");
    }
    row_index++;

    }



    }

    Console.WriteLine("\nFinish!");
    Console.ReadKey();


    ویرایش توسط returnx : 19th January 2014 در ساعت 01:22 AM دلیل: چند خطا در کد قبلی !

  7. #7
    کاربر فعـال
    تاریخ عضویت
    2013 March
    ارسال ها
    101
    تشکر
    154
    تشکر شده 124 بار در 75 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    ممنونم . خیلی زیاد نمیدونین که چقققدر میخاستمش الان تریسش میکنم .


  8. #8
    Moderator
    تاریخ عضویت
    2012 November
    ارسال ها
    128
    تشکر
    28
    تشکر شده 173 بار در 77 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    کد پست قبل یک مشکل کوچیک داشت ، اونم این بود که اگر یک سطر کاملا با 1 پر شده بود و ما 1 ها را میدیدیم تا به آخرین ستون برسیم ، باید بعد از دیدن 1 اخرین ستون به اول سطر بعد بریم ، یعنی سطر n و ستون 0 در حالی که در کد بالا چنین چیزی را در نظر نگرفته بودم (بزارید به حساب خواب آلود بودنم) ، کد ُاصلاح کردم برنامه از نظر مصرف حافظه هم بهینه شد در این کد مصرف حافظه تقریبا 100 بایت هست برای نقشه اما در کد قبل تقریبا 400 بایت بود و همینطور میشه نقشه رو بصورت نیمه گرافیکی دید :
     /* MAP:
    1 0 1 0 1 1 1 1 1 1
    0 1 0 1 0 0 0 1 1 0
    0 0 1 0 1 1 1 1 1 1
    1 1 0 1 0 1 1 1 1 1
    1 1 1 1 0 1 1 1 1 1
    0 0 1 0 1 1 0 0 0 1
    1 1 0 0 1 0 1 0 1 1
    0 0 0 1 1 0 0 1 0 1
    0 0 1 0 0 0 1 1 0 1
    1 1 1 0 0 1 1 0 1 1
    */
    byte[,] map = new byte[,] { { 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1}, {0, 1, 0, 1, 0, 0, 0, 1, 1, 0 },
    {0, 0, 1, 0, 1, 1, 1, 1, 1, 1 },{1, 1, 0, 1, 0 ,1, 1, 1, 1, 1}, {1, 1, 1, 1, 0, 1, 1, 1, 1 ,1} ,
    {0, 0, 1, 0, 1, 1, 0, 0, 0, 1}, {1, 1, 0, 0, 1, 0, 1, 0, 1, 1}, {0, 0, 0, 1, 1, 0, 0, 1, 0, 1,},
    {0, 0, 1, 0, 0, 0, 1, 1 ,0, 1},{1, 1, 1, 0, 0, 1, 1, 0, 1, 1}};

    int row_index=0, col_index = 0;

    //Print Map:
    Console.WriteLine("MAP :");
    for (int row_counter = 0; row_counter < map.GetLength(0); row_counter++)
    {
    for (int col_counter = 0; col_counter < map.GetLength(1); col_counter++)
    {
    Console.Write(map[row_counter,col_counter]);

    }
    Console.WriteLine();
    }


    Console.WriteLine("MAP :");
    for (int row_counter = 0; row_counter < map.GetLength(0); row_counter++)
    {
    for (int col_counter = 0; col_counter < map.GetLength(1); col_counter++)
    {
    // Console.Write(map[row_counter,col_counter]);
    if (map[row_counter,col_counter]==1)
    {
    Console.Write("_");
    }
    else
    {
    Console.Write("|");
    }

    }
    Console.WriteLine();
    }

    Console.WriteLine("\nMouse Moves :");

    while (row_index < map.GetLength(0)) // if row index < rows count
    {

    if (map[row_index, col_index] == 1)
    {
    Console.Write("*");
    if (col_index < map.GetLength(1) - 1)
    {
    col_index++;
    }
    else
    {
    Console.WriteLine();
    col_index = 0;
    row_index++;
    }


    }
    else if (map[row_index, col_index] == 0)
    {
    Console.Write("*\n");
    //Console.WriteLine(); //Go to next line
    for (int rows_space = 0; rows_space < col_index; rows_space++) //Ignore Cols in New Line
    {
    Console.Write(" ");
    }
    row_index++;

    }



    }

    Console.WriteLine("\nFinish!");
    Console.ReadKey();


    ویرایش توسط returnx : 19th January 2014 در ساعت 10:11 AM

  9. #9
    کاربر فعـال
    تاریخ عضویت
    2013 March
    ارسال ها
    101
    تشکر
    154
    تشکر شده 124 بار در 75 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    وای برادر چه کردین . بسیییییی خوشمان امد . . خب . موضوع الان اینه که در این ؟ مسیری رو داریم . یعنی خودمون تصور کردیم . حالا ؟ رو به این شکل قرار میدم . موشی وارد یک ماتریس m*n میشود . ورود از خانه a 00 و خروج از خانه a m-1 n-1 خواهد بود . درون ماتریس هم پر از 1 و 0 هست . حالا موش چطور باید پیش بره ؟ حتما باید با F و T پیش بره . چون غیر از این نمیتونه بدونه که جلوش 0 سبز میشه یا 1 . البته میتونیم خونه های ماتریس رو با اندیس بنویسیم و یک تاس بزاریم تا تا مقادیر خونه ها بطور تصادفی 0 و 1 باشه . اونوقت هر بار موش از یک مسیر خارج میشه . این خوبه . . برم اینو تست کنم . در ضمن اون سه تا map ی که قرار داداه بودین خیلی خوب بود . ایده بهم داد و استارتی شد برای کار های بعدی . خصوصا دومی . دقیقا برای مسیر یک دیوار درست شد . یک تونل .

    ویرایش توسط jellyfish : 19th January 2014 در ساعت 06:00 PM

 

 

کاربران برچسب خورده در این موضوع

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  


Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0
Persian Language By Ustmb.ir
این انجمن کاملا مستقل بوده و هیچ ارتباطی با دانشگاه علوم و فنون مازندران و مسئولان آن ندارد..این انجمن و تمامی محتوای تولید شده در آن توسط دانشجویان فعلی و فارغ التحصیل ادوار گذشته این دانشگاه برای استفاده دانشجویان جدید این دانشگاه و جامعه دانشگاهی کشور فراهم شده است.لطفا برای اطلاعات بیشتر در رابطه با ماهیت انجمن با مدیریت انجمن ارتباط برقرار کنید
ساعت 09:19 AM بر حسب GMT +4 می باشد.