Visualization Ideas — Absolute Basics¶
Concept গুলো চোখে দেখলে মাথায় গেঁথে যায়। এখানে প্রতিটা concept-এর জন্য আঁকার/animation-এর idea আছে, আর শেষে 3টা worked ASCII example। খাতায় নিজে আঁকো — সেটাই সবচেয়ে কাজের visualization।
প্রতি concept-এর visualization idea¶
1. Digit extraction = কনভেয়ার বেল্ট¶
সংখ্যাটাকে একটা কনভেয়ার বেল্টে রাখা বাক্সের সারি ভাবো। % 10 ডান প্রান্তের বাক্সটা তুলে নেয়, // 10 বেল্টটা এক ঘর ডানে সরিয়ে দেয়। Animation বানালে: প্রতি step-এ ডানের বাক্স জ্বলে উঠে নিচে নেমে আসবে, বাকি সারি ডানে সরবে।
2. % vs // = চকলেট ভাগ¶
17টা চকলেট, 5টা প্লেট। প্লেটগুলোতে এক এক করে চকলেট বসাও (round-robin); সব প্লেটে সমান হয়ে গেলে যা হাতে থাকে সেটাই %, প্রতি প্লেটে যা বসেছে সেটাই //। Drawing: 5টা প্লেটে 3টা করে dot, পাশে হাতে 2টা dot।
3. Parity = জোড়া মেলানো¶
n টা dot আঁকো, দুটো দুটো করে জোড়া বাঁধো। সব জোড়া মিললে even, একটা একা থেকে গেলে odd। পাশে binary form লিখে last bit circle করো — একা dot টা আর last bit-এর 1 — একই গল্প।
4. Number building = ট্রেনের বগি জোড়া¶
rev = rev * 10 + d — পুরোনো ট্রেনটা এক ঘর এগিয়ে যায় (×10), নতুন বগিটা পেছনে লেগে যায় (+d)। প্রতি step-এ ট্রেন লম্বা হচ্ছে — এই ছবিটা আঁকলে ×10-এর মানে আর কখনো ভুলবে না।
5. Palindrome = আয়না¶
সংখ্যাটার মাঝখানে একটা খাড়া আয়না-লাইন আঁকো। বাম পাশের digit গুলো আয়নায় পড়ে ডান পাশের সাথে মিললে palindrome। 121 → আয়না 2-এর উপর; 1 ↔ 1 মিলে গেল।
6. Digital root = 9-ধাপের সিঁড়িতে ঘোরা¶
1 থেকে 9 লেখা একটা বৃত্তাকার সিঁড়ি আঁকো (9-এর পরেই আবার 1)। n যত বাড়ে, digital root এই বৃত্তে ঘোরে। 10, 11, 12... এর digital root 1, 2, 3... — বৃত্তটা আবার শুরু থেকে। এটা আসলে Level 2-এর clock model-এর preview!
7. Pattern printing = ছক কাগজ¶
Graph paper-এ n×n ঘর আঁকো। বাইরের loop-এর প্রতিটা মান = একটা row-তে রঙ করা; ভেতরের loop = সেই row-র কতগুলো ঘরে রঙ পড়বে। Triangle pattern হলে রঙ করা অংশটা সিঁড়ির মতো নামবে — nested loop-এর ছবি এটাই।
Worked ASCII example 1: digit extraction (n = 305)¶
n = 305
step 1: [3][0][5] % 10 -> 5 তুলে নিলাম
^^^
//10 -> [3][0] (বেল্ট সরে গেল)
step 2: [3][0] % 10 -> 0 তুলে নিলাম
^^^
//10 -> [3]
step 3: [3] % 10 -> 3 তুলে নিলাম
^^^
//10 -> 0 loop শেষ!
তুলে নেওয়া digit (ক্রম অনুযায়ী): 5, 0, 3
sum = 8, count = 3
লক্ষ করো: মাঝের 0-টাও ঠিকঠাক ধরা পড়ল — string না বানিয়েও।
Worked ASCII example 2: reverse building (n = 305)¶
digit আসে ডান থেকে: 5, তারপর 0, তারপর 3
rev = 0
step 1: rev = 0*10 + 5 [5]
step 2: rev = 5*10 + 0 [5][0]
step 3: rev = 50*10 + 3 [5][0][3]
rev = 503
দেখো — 305-এর reverse 503, মাঝের 0 জায়গামতোই আছে। কিন্তু সাবধান: n = 350 হলে rev = 53 হয়ে যায় (leading zero হারিয়ে যায়) — palindrome check-এ এটা মাথায় রেখো।
Worked ASCII example 3: digital root-এর mod 9 pattern¶
n : 1 2 3 ... 9 | 10 11 12 ... 18 | 19 20 ...
d-root : 1 2 3 ... 9 | 1 2 3 ... 9 | 1 2 ...
^ ^
এখানে reset আবার reset
বৃত্ত হিসেবে:
9/0
8 1
7 2 n বাড়লে কাঁটা ঘড়ির মতো ঘোরে,
6 3 প্রতি 9 ধাপে এক চক্কর
5 4
প্রতি 9 ধাপ পরপর pattern reset — তাই digital root আসলে n % 9 (শুধু 9-এর জায়গায় 0 এলে 9 পড়তে হয়)। এই বৃত্তের ছবিটাই Level 2-তে "clock model" নামে পুরোদমে ফিরবে।
নিজে practice করার নিয়ম¶
- প্রতিটা problem solve করার আগে অন্তত একটা ছবি আঁকো — বেল্ট, ট্রেন, আয়না, যেটা মানায়
- Dry run-এর টেবিল (step | n | d | result) খাতায় হাতে বানাও; concept-notes.md-র টেবিলগুলো model হিসেবে নাও
- যে concept-এ আটকে যাও, সেটার animation মনে মনে চালাও: "এই step-এ কোন বাক্সটা সরল?"