منبع اصلی نوشتار زیر در این لینک قرار دارد

ساخت تمام زیر مجموعه ها

سال پیش داشتم به ساخت یک دیتابیس از پسورد های هش شده با md5 فکر میکردم.به اینکه چجوری میتونه برنامه کل زیر مجموعه هارو بسازه.و یکی از جواب ها این بود: اعداد!

اعداد خاصیت خیلی جالبی دارند که توی بازه ای که حرکت میکنند ارقامشون کل زیر مجموعه هارو تولید میکنن.

میتونیم با بعضی چیزا این خاصیتشون رو به شکل دلخواهی کنترل کنیم.مثلا با تعین کردن مبنای عدد یا بازه های خاصی از اعداد.

قرار بود یک دیکشنری از تمام کلمه های ممکن درست کنیم.برای همین اول ا.مپم کل کاراکتر هایی که ممکنه توی کلمات استفاده بشن رو نوشتم.۵۲ تا حروف بزرگ و کوچیک انگلیسی به ده تا ارقام صفر تا نه و ۱۸ تا هم کاراکتر های خاص که جمعا میشه ۸۰ تا کاراکتر.

برای همین یک عدد در مبنای ۸۱ رو خودم تعریف کردم و خاصیت های اعداد رو روش پیاده کردم و هر شماره عدد صفر تا ۸۰ رو معادل یک کاراکتر قرار دادم.

یعنی مثلا از یک عدد تک رقمی شروع میشه که وقتی یک رقمه ۸۱ کاراکتر رو تکی در نظر میگیره بعد وقتی دو رقمی شد کل حالت های ممکنی که میشه با ۸۰ کاراکتر یک رشته دو کاراکتری تولید کرد رو درست میکنه.

و اینجوری بود که تونستم یک دیکشنری درست بکنم که توش این کلمات باشن تا هششون کنم.(ولی خب میخواستم که تا عدد خیلی بزرگی برم جلو که دیدم اونوقت باید سالها منتظر بمونم تا این دیکشنری ساخته بشه. :) )



برچسب ها : , , ,