تبلیغات


برنامه حرکت موش در هزار تو – rat in a maze

rat-maze-cheese

برنامه حرکت موش در هزار تو (ماز) یا همون rat in maze  یکی از بهترین سوال های مربوط به ساختمان داده است که می توان از آن برای آموزش پشته (Queue) و استک (Stack) استفاده کرد .

در این برنامه قرار است یک موش در هزار تو قرار بگیرد و راه خود را به یک خانه ی خاص که پنیر در آن قرار دارد پیدا کند .مانند شکل زیر (رنگ سبز نقطه آغاز ،رنگ زرد پنیر ،رنگ سفید هم دیوار است):

rat0

ما در این پست موش را با استفاده از صف (Queue) به پنیر می رسانیم و اینگونه عمل می کنیم :

ابتدا خانه های اطراف خانه ی شروع را با مقدار یک پر می کنیم :

rat1بعد از اینکه این دو خانه را پر کردیم آن ها را در صف پوش  (PUSH) می کنیم ، در مرحله بعد یکی از خانه ها را از صف می خوانیم و خانه های اطراف آن را با مقدار ۲ پر می کنیم و خانه هایی را که پر کرده ایم درون صف پوش می کینم و بعد یک خانه ی دیگر از استک می خوانیم و این کار را دوباره و دوباره انجام می دهیم تا به پنیر برسیم مانند شکل های زیر:

rat2

rat4

rat5rat6

rat8مسییر زرد نشان دهنده راه موش است .در برنامه ای که کدش در پایین آمده در قسمت make map  (ساختن نقشه) فرد یک نقشه ایجاد می کند که نقشه یک آرایه دو در دو از اعداد صحیح است و مقدار -۱ نشان دهنده دیوار ،مقدار -۲ نشان دهنده پنیر یا همان خانه هدف است و عدد -۳ که بعد از فراخوانی تابع solve در آرایه قرار می گیرد مسیر را مشخص می کند

و این هم کد برنامه حرکت موش در هزار تو Rat in maze  با زبان سی پلاس پلاس :

 

 


تبلیغات:

۱۷ دیدگاه

  • فوق العاده بود..خیلی خیلی سپاس از محبت بی کرانتون..خیلی به دردم خورد

  • واقعا ممنون از نشر علمتون و سخاوتمندی شما

  • سلام وقت بخیر ..
    منظورم همون دوتا تعریف اول برنامه و تعریف حلقه ها واینا هستش؟

  • سلام وقت بخیر..
    ببخشید یعنی فقط سرفصل ها را باید تغییر بدم؟
    باتشکر

  • سلام آقای دلیرانی
    اگر بخواهیم maze را با c#بنویسیم چیکار کنیم؟
    شما میتونید بهم کمکم کنید
    ممنونتون میشم
    ۱سوال دیگه آقای جمالی هم از نویسندگان این وبسایت هستن؟

    • فرهاد دلیرانی

      بله آقای جمالی از نویسندگان این وبسایت هستند ، همین برنامه سی پلاس پلاس رو عینا با سی شارپش معادل سازی کنید – چیز خاصی از سی پلاس نیست که توش باشه به همین خاطر معادل سازی اش بسیار آسان است.

  • سلام خسته نباشید
    این برنامه mazeبه زبان c#است یا c++؟؟؟؟

  • سلام
    باتشکر از مطالب بسیار مفیدتون!
    میخواستم بدونم برای دریافت یک عدد مثل ده به نوان هزار باید چه کار کرد؟؟
    باتشکر

    • سلام
      بسته به زبان برنامه نویسی شما میتونه جواب فرق داشته باشه. در هر حال، اگه زبان برنامه نویسی مورد نظر شما نوع داده Big Number رو که معمولاً با اسم های این چنینی در زبان های مختلف وجود داره، پیاده سازی کرده باشه میتونین از اون استفاده کنید وگرنه باید با یک نوع داده مثل آرایه، خودتون ساختاری (در زبان های شئ گرا) پیاده سازی کنید که بتونه اعداد بزرگ رو در خودش نگه داره.

  • mersi, mersi mersi, mersi, mer siiiiiiiiiiiiiiiiiiiiiiii
    tamame etelaate sitetoon fogholade mofid bood
    khoda kheiretoon bede 🙂

  • با سلام
    میشه بگید چطوری میشه ورودی های wall رو از طریق فایل خوند؟

    • اندیس محل هایی از آرایه رو که قرار است دیوار باشند رو از فایل با فرمت دلخواه بخون و در آرایه در اون محل ها -۱ قرار بده! به همین سادگی!

  • سلام
    روش چهار همسایه چطوریه؟؟؟؟؟؟؟؟؟

نظر خود را بنویسید.

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *