سوال : ساختمان داده در فلش

شروع موضوع توسط hoseinz ‏12 نوامبر 2012 در انجمن Action Script 3

  1. hoseinz

    hoseinz New Member

    ارسال‌ها:
    2
    تشکر شده:
    1
    امتیاز دستاورد:
    3
    سلام...
    ارقام 1،2،3،4،5 رو تو یه آرایه داریم
    C++ Code:


    for (i=0; i<5; i++) { ar[i] = i+1; }


    اگه جای این ارقام رو تو این آرایه با هم عوض کنیم 120 حالت تولید میشه،تولید کردیم،چطوری میشه این حالات رو ذخیره کرد؟(با flash)
    یه راه ساده این که معادل عددی هر حالت رو در آرایه جدید ذخیره کنیم،مثلا برای حالت 1،2،3،4،5 عدد 12345 یا برای حالت 2،3،1،4،5 عدد 23145 رو ذخیره کنیم...خلاصه این حالت ها رو در آرایه ذخیره کنیم
    ولی برای جست و جو سرعت پایینی داره...به عنوان مثال آیا حالت 5،4،3،2،1 رو ذخیره کردیم؟؟برای برسی باید عدد 54321 رو تو آرایه دوم سرچ کنیم. با پیچیدگی n! که اینجا میشه یه آرایه با طول 120
    سوال: با action Script چطور میشه این حالات ذخیره کرد ؟(12345 با 12354 فقط در 2رقم آخر اختلاف دارند 123 مشترکه :idea:)
    درخت؟ گراف ؟ کلاس؟...با قابلیت اضافه کردن یه حالت جدید،جستجو با سرعت بالا
     
    نوشته شده توسط hoseinz در ‏12 نوامبر 2012
  2. ++Hadi++

    ++Hadi++ Active Member

    ارسال‌ها:
    3,529
    تشکر شده:
    5,802
    امتیاز دستاورد:
    36
    بهتره تو یه رشته string اضافه کنید یعنی :
    PHP:

    var str:String="";
    for(var i:int=0;i<5;i++)
    {
    str+=String(i);
    }
     
    ولی الگریتمشو سعی می کنم انشالا بنویسم و اگه تونستم اینجا می زارمش....
    بای...
     
    نوشته شده توسط ++Hadi++ در ‏12 نوامبر 2012
    wgolzar، hoseinz و mohammad.sub7 از این ارسال تشکر کرده اند.
  3. akherat

    akherat مدیر انجمن

    ارسال‌ها:
    594
    تشکر شده:
    661
    امتیاز دستاورد:
    93
    اگه منظورت با اینکه با فلش ذخیره کنی : باید از fileREfrence استفاده کنی که اونم باید حتما یوزر ایونت باشه
    برای جستجو تو آرایه در فلش با نهایت سرعت فقط indexof هست
    در فلش آرایه به صورت اوتومات عمل میکند و داینامیک هست
     
    نوشته شده توسط akherat در ‏12 نوامبر 2012
  4. ++Hadi++

    ++Hadi++ Active Member

    ارسال‌ها:
    3,529
    تشکر شده:
    5,802
    امتیاز دستاورد:
    36
    استفاده از ارایه وکتور برا ذخیره و تفحص بهتره و مطمئنا با استفاده از ساختمان داده های دیگه مثل درخت و ... می تونه جوابگو باشه.راه اولی که به ذهن بنده خطور کرد استفاده از توابع بازگشتی هست که تا ته بره و در بازگشت،یه کارکتر رو تو فواصل یه آرایه قرار بده و حالاتشو بده بیرون ...ولی استفاده از ساختار بازگشتی خیلی سرعت پایینی داره و به جاش می شه از حلقه while و پشته یا stack یا همون آرایه که می شه روش push و pop کرد کمک گرفت.
    الگریتم اصلی اینو نه فقط برا 5 خونه بلکه برا n خونه با عکس می فرستم و تو روزای آینده سعی می کنم به عنوان یه بازی ریاضیاتی - برنامه نویسی تو اینجا کدشو هم بنویسم انشاءالله...عکس رو انشاءالله به زودی می فرستم...بای...
     
    آخرین ویرایش: ‏14 نوامبر 2012
    نوشته شده توسط ++Hadi++ در ‏14 نوامبر 2012
    wgolzar از این پست تشکر کرده است.
  5. ++Hadi++

    ++Hadi++ Active Member

    ارسال‌ها:
    3,529
    تشکر شده:
    5,802
    امتیاز دستاورد:
    36
    سلام
    اینم کلاس مربوطه...
    مساله جالبی بود....
    قبلا با استفاده از روش اعداد باینری می تونستم زیر مجموعه های یه مجموعه رو هم در بیارم.اگه یه کم رو این سورس کار کنید می تونید اونو هم اعمال کنید.
    فقط کافیه رو اون splice شدن و حالات مختلفی که به result داده می شه،فکر بکنید.
    در ضمن یه راهنمای تصویری هم برا درک بهتر مفهوم گذاشتم....کشف مسیرش هم به جهت بررسی خودم از توانایی مغزیم تماما با خودم هست و از الگریتم های آماده استفاده نکردم.
    خوبی این کلاس به این هست که داینامیکه . مقادیر و تعداد اعضای مجموعه رو می تونید عوض کنید.
    در ضمن اگر از ارایه وکتور استفاده م یکردم،سرعتش بالاتر هم می رفت که شما می تونید این کار رو انجام بدین....
    با تشکر و موفق باشید....
    این سورس به جهت تجاری نبودنش و درک مفهوم طراحی شد وگرنه بنده با انجام پروژه های آماده و طراحی سورس و قرار دادن سورس آماده در سایت مجید آنلاین مخالفم...
     

    پیوست ها:

    • CalcOnGroups.rar
      اندازه فایل:
      کیلوبایت 8.6
      نمایش ها:
      53
    • Jaygasht.rar
      اندازه فایل:
      کیلوبایت 158.3
      نمایش ها:
      93
    آخرین ویرایش: ‏17 نوامبر 2012
    نوشته شده توسط ++Hadi++ در ‏17 نوامبر 2012
    wgolzar و hoseinz از این پست تشکر کرده اند.
  6. hoseinz

    hoseinz New Member

    ارسال‌ها:
    2
    تشکر شده:
    1
    امتیاز دستاورد:
    3
    سلام
    خسته نباشید...روش جالبی بود،البته خوب شد عکس رو گذاشتید! ،یه کد بازگشتی هم برای جایگشت هست که تو ساختمان داده خونده بودم،مشکلش اینه که بازگشتیه، مثلا تو محیط فلش یه آرایه به طول 6 با اون کد بازگشتی 55 هزارم ثانیه طول میکشه حالت ها تولید بشه ولی کد شما 15 هزارم ثانیه، که سریع تره ...
    به هرحال،مساله این بود این حالت های تولیدی( مهم نیست چطوری تولید شدن) کجا،چطور ذخیره بشه به جز آرایه
    چون مثلا به ازای n=8 طول آرایه خروجی میشه 40320 که دیدم بهتره این حالت ها رو جای آرایه به درخت دودویی اضافه کنم چون مشکل، سرعت جستجو بود( بعد از این که این حالت ها تولید شدن) که درخت از این نظر بهتره
    به این صورت که هر حالت رو تبدیل به یه عدد میکنیم بعد این عدد به درخت اضافه میشه،
    (حالت ها به شکل تصادفی تولید میشه 236514 ، 523164 ، 162345...،پس وقتی تبدیل به عدد بشه این اعداد مرتب نیستند،در غیر این صورت اگه مرتب بودند نیازی به درخت نبود همون آرایه رو میشد به صورت باینری سرچ کرد...)
    مثلا برای n=6 :
    [PHPS]
    for (i=0; i<6; i++) {
    ar = i+1;
    }
    function f() {
    //
    //هر حالت که توليد شد به صورت زير ذخيره ميشه
    //
    var s:Number = 0;
    for (j=0; j<6; j++) {
    s = s*10+ar[j];
    }
    tree.Add(s);
    //ar2.push(s);
    }
    //جستجوي درخت
    return tree.Contains(453621); // true,false[/PHPS]
     
    آخرین ویرایش: ‏18 نوامبر 2012
    نوشته شده توسط hoseinz در ‏18 نوامبر 2012
    ++Hadi++ از این پست تشکر کرده است.
  7. ++Hadi++

    ++Hadi++ Active Member

    ارسال‌ها:
    3,529
    تشکر شده:
    5,802
    امتیاز دستاورد:
    36
    فکر می کنم تبدیل این روش به درخت می تونه دست شما رو تو مانور های مختلف باز بزاره.من فکر می کردم با درخت و اعمالش در روش من می تونیم حالات مختلف زیر مجموعه ها رو داشته باشیم ولی الان فهمیدم که روش من برا بدست آوردن زیر مجموعه های یک تا n-1 عضوی مناسب نیست...بای...
     
    نوشته شده توسط ++Hadi++ در ‏18 نوامبر 2012

به اشتراک بگذارید