الگوریتم کلمات اضافه
#1
دوستان سلام.
حتما دیدین تو بازیهای کلماتی یه سری کلمات داریم که جواب مرحله هستن و یه سری دیگه هم کلمات اضافه که مخفی هستن و با حدس زدنشون کاربر جایزه دریافت میکنه.
من میخواستم همچین چیزی رو پیاده کنم.
یه دیتابیس پیدا کردم با حدود 50000 کلمه فارسی.

مشکل اینه که موقع لود شدنش با ajax چند ثانیه طول میکشه اینکار انجام بشه.
و اینکه هر سری که کاربر یه کلمه حدس زد من باید تو یه آرایه با 50000 خونه بگردم ( لوپ کنم ) که ببینم همچین کلمه ای قابل قبول هست یا نه.

میخواستم ببینم اصلا این کاری که من میکنم درست و بهینه هست ؟
راه بهتر و سریعتری برا اینکار وجود نداره ؟

تشکر. 
  پاسخ


 سپاس شده توسط: M.gh ، ᔕinaᗪehghani
#2
سلام ،
این لوپ رو داخل کانستراکت پیاده میکنین یا سمت سرور؟
  پاسخ


 سپاس شده توسط:
#3
(1399/12/18، 02:22 عصر)M.gh نوشته است: سلام ،
این لوپ رو داخل کانستراکت پیاده میکنین یا سمت سرور؟
داخل کانستراکت.
کلا بازی آفلاین هست چیزی آنلاین چک نمیشه.
  پاسخ


 سپاس شده توسط: M.gh ، ᔕinaᗪehghani
#4
سلام؛
دیتابیستون به چه شکلیه؟
مثلاً یک فایل XML هست یا ...
غایب
  پاسخ


 سپاس شده توسط: ᔕinaᗪehghani
#5
(1399/12/18، 03:00 عصر)Master Badfar نوشته است: سلام؛
دیتابیستون به چه شکلیه؟
مثلاً یک فایل XML هست یا ...
سلام.
اصلش یه فایل اکسس بود که من تبدیلش کردم به txt معمولی.
ولی میتونم به اکسل یا xml هم تبدیلش کنم مشکلی نیست.
  پاسخ


 سپاس شده توسط: ᔕinaᗪehghani
#6
خُب به نظرم تبدیل به یک فایل XML بشه و بعد با سینتکس XPath اقدام به جستجو کنین میتونه بهتر بـاشه.
میتونین لیست کلمات رو به یک فایل CSV یا SQLite هم تبدیل کنین. چیزی که مسلمه اینه که کانستراکت به طور مستقیم به شما امکان کار با چنین قالب هایی رو نمیده پس باید خودتون با کمک جاوا اسکریپت اقدام کنین.
استفاده از Regex (عبارات باقاعده یا منظم) هم برای جستجو بین مقادیر لیست ممکنه مفید واقع بشه.
در نهایت اگر بخواین این لیست 50 هزارتایی رو کاوش کنین باید اون رو در ابتدا مرتب (Sort) کنین که خُب برای این منظور توی مفاهیم DSA الگوریتم های مختلف مرتب سازی مثل مرتب سازی حبابی (Bubble Sort)، مرتب سازی سریع (Quick Sort) و ... رو داریم. اما چون اینجا به جای اعداد با رشته ها سر و کار داریم یه مقداری ممکنه پیاده سازی کـار با چالش همراه باشه. در ضمن برای چنین لیست طویلی الگوریتمی مثل مرتب سازی حبابی که پیچیدگی زمانی اش برابر بـا O(n2هست چندان راه بهینه ای نیست. 
در کل برای حل چنین مسائل بغرنجی بهتره رویکرد تقسیم و حل (Divide and conquer) رو در پیش بگیریم. به بیان ساده تر سعی کنیم یک مسئله بزرگ رو به چندین زیرمسئله تقسیم کنیم و بعد پردازش ها رو انجام بدیم تا در نهایت از مجموع پردازش هایی که برای هر زیر مسئله انجام شده به یک اجماع (پاسخ نهایی) دست پیدا کنیم. 
موفق باشین.
غایب
  پاسخ


 سپاس شده توسط: mhp ، M.gh ، ᔕinaᗪehghani ، oak


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
Information پرداخت درون برنامه مایکت کوردوا ya mahdi 0 228 1404/1/17، 05:43 عصر
آخرین ارسال: ya mahdi
  نحوه خروجی اندروید کوردوا ya mahdi 0 175 1404/1/11، 04:06 عصر
آخرین ارسال: ya mahdi
Wink حل شده مقادير لازم در environment variable ᔕinaᗪehghani 24 11,569 1403/10/23، 12:10 صبح
آخرین ارسال: Tggi
  تپسل .....فروشگاه Hamidreza 3 1,928 1403/10/22، 11:57 عصر
آخرین ارسال: Tggi
  خروجی اندروید با Intel xdk ya mahdi 0 129 1403/8/25، 02:08 عصر
آخرین ارسال: ya mahdi

پرش به انجمن: