بازی با سال نو -۲
توسط کمانگیر در روز ۱۰ دی ۱۳۸۷دی ۱۰
در پست قبلی گفتیم که هدف ساختن اعداد ۰ تا ۲۰۰۹ به کمک ارقام عدد ۲۰۰۹ است (ببینید: بازی با سال نو). کدقبلی، که با Matlab نوشته شده بود، صرفا جایگشت های ۲۰۰۹+-*/^ را آزمایش می کرد و در ۷۸۶۸۷۸ آزمون ۱۰۰۰۰۰ ترکیب درست و ۴۰ عدد متفاوت تولید کرد (بازده ۱۳%).
حالا یک کد C++ ِ کمی سرحال تر نوشته ام که چنین ساختارهایی را بصورت تصادفی و بازگشتی می سازد:

در ۷۸۶۸۷۸ آزمایش، این کد ۳۵۱۰۷۸ ترکیب درست ساخت که منتهی به ۳۷ عدد متفاوت شدند (بازده ۴۵%، حدود ۳٫۵ برابر حالت قبل).

پیشنهادی؟ ایده ای؟ هنوز تا ساختن همه ی اعداد ۰ تا ۲۰۰۹ خیلی فاصله داریم.

حلقه هایی که چهار رقم در اونها جابجا میشه و در هر حلقه هم اپراتور ها برای تمام حالت ها جابجا بشن. تقدم هم رعایت بشه. مگه این چه ایرادی داره؟
آقا دمت گرم خیلی حال کردم.وقت کردی دست ما رو هم بگیر.من اغلب به وبلاگت سر میزنم.
هووم یه پیشنهاد:
بیایم از افراز اعداد و دنباله های بازگشتی استفاده کنیم!
اول عدد یک رو همون طوری که گفتید با دو و نه و صفر بنویسم، به چند شکل متفاوت میشه نوشت
بعدش دو رو میتونیم هم خودش در نظر بگیرم، هم بنویسمش ۱+۱ !به جای هر کدوم از یک ها، اون عددی که بالا و قبلش حساب کردیم رو بذاریم!
اینطوری ادامه بدیم که هر عدد رو با توجه به عددهای قبلی خودش با نه و دو و صفر بنویسم!
یعنی عددهای بعدی رو بیایم به صورت رندم یکی از افرازهاشون رو انتخاب کنیم،به جای عددهایی که توی افرازشون ظاهر میشن ، برحسب عددهای قبلی که بر حسب ۲ و ۹ و۰ پیدا کردیم بنویسم!
این روش فکر میکنم سرعت اجراش بالا باشه نسبتا!
امیدوارم تونسته باشم منظورمو برسونم،اگه بازم مشکلی بود با ایده ام، من در خدمتم که توضیح بدم