# Native Code > برنامه نویسی در Delphi > مباحث عمومی دلفی و پاسکال >  تولید تمامی کلمات 8 حرفی بدون تکرار حروف

## havakili

با سلام به همه
من میخوام یه برنامه بنویسم که بتونه با حروف A,B,C,D,E,F,G,H  تمامی کلمات 8 حرفی رو تولید کنه که تمامی این حروف داخلش باشه  و بدون تکرار 
مثلا ABCDEFGH یا ABCDEFHG همه حروف هستند و تکراری هم نیستند
لطفا دوستان راهنمائی کنند خیلی مهمه  خیلی !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
لطفا کمک کنید تا حلش کنم
الگوریتم یا نمونه برنامه ای اگه در این مورد دارید ممنون میشم لطف کنید

با تشکر از همه دوستان

----------


## Delphi2010

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

----------


## یوسف زالی

سلام.



> ابتدا بانکی داشتم که این کلمات را نگاه می داشت


روش بسیار اشتباه و پر هزینه و کندیه.
می تونید به راحتی با یک الگوریتم بازگشتی این کار رو کنید.
حتی با for هم می تونید این کار رو کنید.
سعی کنید، و مشکلاتتون رو در همین جا مطرح کنید.

----------


## Delphi2010

برای یونیک بودن چاره جز ذخیره در دیتابیس ندارید ، اگر برنامه تحت شبکه باشد حتما باید از دیتابیس استفاده شود و تولید آن هم با الگوریتم می باشد ، بنده کاملا جواب گرفتم برای تولید سریال نرم افزار استفاده کردم و هیچ مشکلی وجود نداشت

----------


## یوسف زالی

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

----------


## Mahmood_M

> برای یونیک بودن چاره جز ذخیره در دیتابیس ندارید


اگر بخواید یک بار این کلمات رو تولید کنید و تکراری نباشند ، نیاز به دیتابیس نیست و همونطور که گفته شد با یک الگوریتم بازگشتی کل نتایج ساخته میشن
اما اگر نیاز دارید که دفعات مختلف جمله ای تولید بشه و هر جمله با جملات قبل تفاوت داشته باشه ، یک راهش استفاده از دیتابیس هست
راه های زیادی وجود داره
با توجه به اینکه تعداد کل جملات مشخص هست ( !8 ) و اگر ترتیب خاصی برای تولید در نظر گرفته بشه ، میشه برای هر جمله یک اندیس در نظر گرفت ، در این صورت میشه با استفاده از آرایه ها ، یک تابع برای تولید جملات یکتا ایجاد کرد
منظور از ترتیب خاص اینه که مثلا برای تولید جملات ، ابتدا حرف A و بعد سایر حروف گذاشته بشه ، در مرحله ی بعد ، ابتدا حرف B و بعد سایر حروف و الی آخر ( یک ترتیب با خلاقیت خودتون )
روش دیگه اینکه ، فرض کنیم اعداد 1 تا 8 معرف حروف A تا H باشند ، در این صورت شما 8 خانه دارید که باید با اعداد یک تا 8 پر بشن ، و اعداد نباید تکراری باشند ، یا اینکه شما باید عددی بین 12345678 تا 87654321 به تصادف ایجاد کنید ، بعد از ایجاد عدد ، هر رقم این عدد ، معرف یک حرف هست که با جایگزینی می تونید رشته ی حاصل رو بدست بیارید

----------


## golbafan

> روش دیگه اینکه ، فرض کنیم اعداد 1 تا 8 معرف حروف A تا H باشند ، در این صورت شما 8 خانه دارید که باید با اعداد یک تا 8 پر بشن ، و اعداد نباید تکراری باشند ، یا اینکه شما باید عددی بین 12345678 تا 87654321 به تصادف ایجاد کنید ، بعد از ایجاد عدد ، هر رقم این عدد ، معرف یک حرف هست که با جایگزینی می تونید رشته ی حاصل رو بدست بیارید


این راه موقعی خوبه که تعداد کمی رو بخواد بدسنت بیاره 
در غیر این صورت اگر بخواد همه رو بدست بیاره این راه غیر ممکنه چون با استفاده ار عدد رندم ممکنه چند سال طول بکشه تا همه اعداد (غیر مساوی) بدست بیان

----------


## Mahmood_M

> این راه موقعی خوبه که تعداد کمی رو بخواد بدسنت بیاره
> در غیر این صورت اگر بخواد همه رو بدست بیاره این راه غیر ممکنه چون با استفاده ار عدد رندم ممکنه چند سال طول بکشه تا همه اعداد (غیر مساوی) بدست بیان


می تونه از راههای دیگه استفاده کنه !
...



> اگر بخواید یک بار این کلمات رو تولید کنید و تکراری نباشند ، نیاز به دیتابیس نیست و همونطور که گفته شد با یک الگوریتم بازگشتی کل نتایج ساخته میشن
> اما اگر نیاز دارید که دفعات مختلف جمله ای تولید بشه و هر جمله با جملات قبل تفاوت داشته باشه ، یک راهش استفاده از دیتابیس هست
> راه های زیادی وجود داره
> ...

----------

