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

hoseinz

New Member
سلام...
ارقام 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:)
درخت؟ گراف ؟ کلاس؟...با قابلیت اضافه کردن یه حالت جدید،جستجو با سرعت بالا
 

++Hadi++

Active Member
بهتره تو یه رشته string اضافه کنید یعنی :
PHP:
var str:String="";
for(var i:int=0;i<5;i++)
{
str+=String(i);
}
ولی الگریتمشو سعی می کنم انشالا بنویسم و اگه تونستم اینجا می زارمش....
بای...
 

akherat

مدیر انجمن
اگه منظورت با اینکه با فلش ذخیره کنی : باید از fileREfrence استفاده کنی که اونم باید حتما یوزر ایونت باشه
برای جستجو تو آرایه در فلش با نهایت سرعت فقط indexof هست
در فلش آرایه به صورت اوتومات عمل میکند و داینامیک هست
 

++Hadi++

Active Member
استفاده از ارایه وکتور برا ذخیره و تفحص بهتره و مطمئنا با استفاده از ساختمان داده های دیگه مثل درخت و ... می تونه جوابگو باشه.راه اولی که به ذهن بنده خطور کرد استفاده از توابع بازگشتی هست که تا ته بره و در بازگشت،یه کارکتر رو تو فواصل یه آرایه قرار بده و حالاتشو بده بیرون ...ولی استفاده از ساختار بازگشتی خیلی سرعت پایینی داره و به جاش می شه از حلقه while و پشته یا stack یا همون آرایه که می شه روش push و pop کرد کمک گرفت.
الگریتم اصلی اینو نه فقط برا 5 خونه بلکه برا n خونه با عکس می فرستم و تو روزای آینده سعی می کنم به عنوان یه بازی ریاضیاتی - برنامه نویسی تو اینجا کدشو هم بنویسم انشاءالله...عکس رو انشاءالله به زودی می فرستم...بای...
 
آخرین ویرایش:

++Hadi++

Active Member
سلام
اینم کلاس مربوطه...
مساله جالبی بود....
قبلا با استفاده از روش اعداد باینری می تونستم زیر مجموعه های یه مجموعه رو هم در بیارم.اگه یه کم رو این سورس کار کنید می تونید اونو هم اعمال کنید.
فقط کافیه رو اون splice شدن و حالات مختلفی که به result داده می شه،فکر بکنید.
در ضمن یه راهنمای تصویری هم برا درک بهتر مفهوم گذاشتم....کشف مسیرش هم به جهت بررسی خودم از توانایی مغزیم تماما با خودم هست و از الگریتم های آماده استفاده نکردم.
خوبی این کلاس به این هست که داینامیکه . مقادیر و تعداد اعضای مجموعه رو می تونید عوض کنید.
در ضمن اگر از ارایه وکتور استفاده م یکردم،سرعتش بالاتر هم می رفت که شما می تونید این کار رو انجام بدین....
با تشکر و موفق باشید....
این سورس به جهت تجاری نبودنش و درک مفهوم طراحی شد وگرنه بنده با انجام پروژه های آماده و طراحی سورس و قرار دادن سورس آماده در سایت مجید آنلاین مخالفم...
 

پیوست ها

  • CalcOnGroups.rar
    8.6 کیلوبایت · بازدیدها: 53
  • Jaygasht.rar
    158.3 کیلوبایت · بازدیدها: 93
آخرین ویرایش:

hoseinz

New Member
سلام
خسته نباشید...روش جالبی بود،البته خوب شد عکس رو گذاشتید! ،یه کد بازگشتی هم برای جایگشت هست که تو ساختمان داده خونده بودم،مشکلش اینه که بازگشتیه، مثلا تو محیط فلش یه آرایه به طول 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]
 
آخرین ویرایش:

++Hadi++

Active Member
فکر می کنم تبدیل این روش به درخت می تونه دست شما رو تو مانور های مختلف باز بزاره.من فکر می کردم با درخت و اعمالش در روش من می تونیم حالات مختلف زیر مجموعه ها رو داشته باشیم ولی الان فهمیدم که روش من برا بدست آوردن زیر مجموعه های یک تا n-1 عضوی مناسب نیست...بای...
 

جدیدترین ارسال ها

بالا