سلام دوست عزیز😃👋

به مسابقه «مسابقه کداستار ۱۴۰۳ - Front-end» خوش آمدی!

نکات مفید برای شرکت در مسابقه:

  • هرگونه استفاده از ابزارهای تولید کد، مثل chatGPT و... در مسابقات کوئرا ممنوع است و بعد از شناسایی از لیست شرکت‌کنندگان مسابقه حذف می‌شوید.
  • هر گونه ارتباط با سایر شرکت‌کنندگان ممنوع است.
  • می‌توانید سوال‌ها و مشکلات خود را از بخش «سوال بپرسید» با ما در میان بگذارید.
  • توجه کنید که سوالات به ترتیب آسان به سختی نیستند و برای تخمین سختی هر سوال می‌توانید به نمره‌ی آن توجه کنید.

لینک‌های مفید برای شرکت در مسابقه:

موفق باشید و بهتون خوش بگذره 😉✌

معمای موریارتی


تکنولوژی‌های موردنیاز:🔗

Javascript
Plain text

شرلوک هلمز پس از رمزگشایی کد مورس با کمک دستیار جوانش، به سرعت پالتو و کلاه گوشی‌دار معروفش را بر می‌دارد و به سمت برج لندن می‌رود. پس از رسیدن به محل بمب‌گذاری فردی ناشناس با صدایی ترسناک به شرلوک زنگ می‌زند و به او می‌گوید برای خنثی کردن بمب باید معمایی که برایش ارسال کرده است را انجام دهد.

شرلوک پس از دیدن معما متوجه می‌شود که این معما در اصل معمای معروف maze است که بازیکن باید مسیری از نقطه شروع به نقطه نهایی پیدا کند و کلید بمب با توجه به جهاتی که باید پیمایش شود تا بازی به اتمام برسد مشخص می‌شود. به دلیل زمان کمی که وجود دارد شرلوک از شما برای ایجاد الگوریتمی برای حل این بازی کمک می‌گیرد.

ظاهر کلی برنامه به صورت زیر است: ظاهرکلی

پروژه اولیه🔗

پروژه اولیه را از این لینک دانلود کنید.

ساختار فایل‌ها

maze
   ├── scripts
   │      ├── direction.js
   │      ├── execution.js 
   │      ├── generation.js
   │      ├── main.js
   │      ├── maze.js
   │      ├── point.js
   │      └── utility.js
   ├── solution.js
   ├── styles
   │      ├── reset.css
   │      └── styles.css  
   ├── template
   │      ├── index.html
   ├── assets
   │      ├── favicon.svg       
Plain text

توضیحات🔗

فایل‌ها
فایل تعریف
direction در داخل این بازی چهار جهت بالا، پایین، چپ و راست در فایل direction.js به صورت enum تعریف شده است.
Point در این بازی یک کلاس به نام Point در فایل Point.js تعریف شده است که در اصل موقعیت مکانی هرکدام از سلول‌های بازی است.
maze در این بازی یک کلاس به نام maze در فایل maze.js تعریف شده است که در اصل زمین و مشخصات مربوط به بازی است.
فایلdirection
تعریف مقدار
UP
DOWN
LEFT
RIGHT
فایل point
تابع تعریف
equals این تابع یک point دیگر را به عنوان ورودی دریافت می‌کند و اگر مختصات این point با مختصات خود point برابر بود مقدار true و در غیر این صورت مقدار false را برمی‌گرداند.
left این تابع مختصات فعلی کلاس خود را یک واحد در خلاف جهت محور x می‌برد.(به عنوان مثال اگر مختصات برابر x=1, y=2 باشد پس از صدا زدن این تابع مختصات جدید برابر x=0, y=2 می‌شود.)
right این تابع مختصات فعلی کلاس خود را یک واحد در جهت محور x می‌برد.( به عنوان مثال اگر مختصات برابر x=1, y=2 باشد پس از صدا زدن این تابع مختصات جدید برابر x=2, y=2 می‌شود.)
up این تابع مختصات فعلی کلاس خود را یک واحد در جهت محور y می‌برد.(به عنوان مثال اگر مختصات برابر x=1, y=2 باشد پس از صدا زدن این تابع مختصات جدید برابر x=1, y=3 می‌شود.)
down این تابع مختصات فعلی کلاس خود را یک واحد در خلاف جهت محور y می‌‎برد.(به عنوان مثال اگر مختصات برابر x=1, y=2 باشد پس از صدا زدن این تابع مختصات جدید برابر x=1, y=1 می‌شود.)
isBlocked این تابع مختصاتی را به صورت یک Point دریافت می‌کند و در صورتی که در سلول بازی این مختصات بلاک شده باشد (قابل حرکت نباشد) یا از فضای بازی بیرون نباشد (به عنوان مثال x=-1, y=-1 ) مقدار true و در غیر این صورت مقدار false برمی‌گرداند.
فایل maze
متغیر تعریف
startPoint این مشخصه در اصل مختصات مکان شروع بازی را به صورت point به شما می‌دهد.
endPoint این مشخصه در اصل مختصات مکان پایان بازی را به صورت point به شما می‌دهد.

خواسته مسئله🔗

در فایل solution.js تابعی به نام solveMaze وجود دارد که شما باید در آن الگوریتمی بنویسید نا مسیری که باید از نقطه شروع (startPoint) به نقطه پایان (endPoint) بازی پیمایش شود را با استفاده از جهت‌هایی که در فایل direction.js مشخص شده است، برگرداند.

نکات🔗

  1. شما تنها قادر به تغییر فایل solution.js هستید.
  2. شما تنها قادر به استفاده از توابع و مشخصه‌هایی که در بالا توضیح داده شده است هستید.
  3. پس از اعمال تغییرات در فایل solution.js آن را در قسمت پاسخ آپلود کنید.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.