Skip to content

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-এ কোন বাক্সটা সরল?"