توضیحات
biodread عزیز کاملا منطبق با اصول برنامه است و دقیقا به همان سادگی است که بیان کردند.
یک عدد دو رقمی (که طبعا از 9 بزرگتر است) به شکل mn نوشته می شود که n رقم یکان و m رقم دهگان است.
معادل ده دهی این عدد برابر خواهد بود با m * 10 + n
مثلا در عدد 23 مقدار m برابر 2 و مقدار n برابر با 3 است و عدد 23 بر اساس فرمول 3 + 10 * 2 می توان بدست آورد.
زمانی که مجموع دو رقم m + n را از این عدد کم کنیم خواهیم داشت :
کد:
(m * 10 + n) - (m + n) = m * (10 - 1) + n - n = m * 9
در واقع عدد حاصل هیچ ارتباطی با رقم یکان (n) انتخاب شده ندارد و صرفا بستگی به رقم دهگان (m) دارد.
طبیعی است که در یک عدد دو رقمی m عددی بین 1 الی 9 است و کاربر 9 انتخاب دارد.
با توجه به اینکه می دانیم نتیجه محاسبه برابر با m * 9 است برابر مقادیر m از 1 الی 9 هم فقط 9 مضرب عدد 9 وجود دارد.
و برای تمامی مضرب های 9 (اعداد 9 ، 18 ، 27 ، 36 و ... 81 از یک نماد یکسان استفاده شده که در واقع حق انتخاب را
از کاربر گرفته است).
برای انتخاب نماد برای سایر اعداد هم شیوه ساده ای بکار گرفته شده. ما چندین نماد داریم که برای مضرب های 9 یکی از نماد ها
بکار رفته است، همچنین لیست نماد ها حاوی 6 سطر 14 ستونی است یا به عبارتی 84 نماد.
کافیست لیست اعداد را به دو دسته تقسیم کنیم :
دسته اول 9 شماره هستند که اعداد مضرب 9 را تشکیل می دهند و یک نماد مشخص و یکسان دارند.
تک نماد این 9 شماره بصورت تصادفی از بین یکی از نماد های موجود انتخاب می شود.
دسته دوم 75 شماره دیگر هستند که می توانند از سایر نماد ها بصورت تصادفی استفاده کنند صرفا یک شرط
قرار می دهیم که اگر نماد انتخاب شده برای خانه x ام با نماد خانه x - 1 ام یکسان بود، دوباره یک نماد جدید برای خانه x ام
انتخاب شود تا دو خانه مجاور یک نماد یکسان نداشته باشند.
به همین سادگی.