Skip to content

Visualization Ideas — পুরো Math Section (cross-cutting)

এই section-এর প্রতিটা level-এর নিজস্ব visualization-ideas.md আছে — সেখানে সেই level-এর concept-ভিত্তিক ছবি। এই file-টা তার উপরের তলা: পুরো math section জুড়ে বারবার কাজে লাগে এমন কয়েকটা reusable ASCII diagram-style-এর menu, আর কেন ছবি আঁকাটা শেখার অর্ধেক — সেই দর্শন।

কেন ছবি আঁকবে?

অঙ্কের idea মাথায় বিমূর্ত — কিন্তু কাগজে আনলেই সেটা ধরা যায়, ঘোরানো যায়, ভুল চোখে পড়ে। তিনটা কারণে প্রতিটা problem-এ অন্তত একটা ছবি আঁকো:

  • বোঝা পাকা হয়rev = rev*10 + d মুখস্থ থাকে, কিন্তু ট্রেনের বগি জোড়ার ছবি আঁকলে আর কখনো ভুলবে না।
  • bug ধরা পড়ে — off-by-one, ভুল boundary, বাদ-পড়া edge case — এরা ছবিতে চোখে লাগে, কোডে লুকিয়ে থাকে।
  • মনে থাকে — কয়েক মাস পরে formula ভুলে গেলেও ছবিটা মনে থাকবে, আর ছবি থেকে formula আবার বানিয়ে নেওয়া যায়।

নিয়ম: ছবি হাতে আঁকো, এই file-এর ASCII শুধু template। আর ছবি আঁকো code-এর আগে — পরে নয়।

Reusable diagram style-এর menu

1. Number line (সংখ্যারেখা)

কখন: range, prefix sum, interval, sweep, distance — যেখানেই "অবস্থান" আছে। সংখ্যাগুলো একটা সরলরেখায় বসাও, range-কে [ ] দিয়ে চিহ্নিত করো।

idx:  0   1   2   3   4   5
      ●───●───●───●───●───●
          └───── range [1,4] ─────┘

2. Grid / ছক

কখন: 2D prefix sum, grid path, pattern printing, nested loop, matrix। Graph paper-এর মতো ঘর আঁকো; বাইরের loop = row, ভেতরের loop = column।

      c0 c1 c2
  r0 [ . . . ]
  r1 [ . ● . ]   ← (r1, c1) ঘরটা
  r2 [ . . . ]

3. Clock (mod-এর ঘড়ি)

কখন: modular arithmetic, cyclic pattern, digital root, "প্রতি k ধাপে পুনরাবৃত্তি"। 0 থেকে m−1 একটা বৃত্তে বসাও; যোগ মানে কাঁটা ঘড়ির কাঁটার মতো ঘোরা, m-এ গিয়ে আবার 0।

        0
     5     1      mod 6:  4 + 5 = 9 → কাঁটা 9 ঘর ঘুরে
    4       2             → 9 % 6 = 3 ঘরে থামে
        3

4. Binary place-value row

কখন: bit manipulation, XOR, subset mask, power-of-two। প্রতিটা ঘরের উপরে তার "দাম" লেখো (8 4 2 1), নিচে 0/1।

দাম:  8  4  2  1
13 =  1  1  0  1    → 8 + 4 + 1

5. Recursion / branch tree

কখন: recursion, backtracking, game state, counting "কয় উপায়ে", subset/permutation। প্রতিটা সিদ্ধান্ত = একটা শাখা; পাতা = base case।

            f(3)
           /    \
        নাও      ছাড়ো
        /  \      /  \
     f(2) ...   f(2) ...   ← প্রতি স্তর একটা সিদ্ধান্ত

6. FFFTTT monotonic staircase

কখন: binary search on answer, lower/upper bound, "প্রথম যেখানে সত্য হয়"। সম্ভাব্য উত্তরগুলোকে সারিতে সাজিয়ে প্রতিটার নিচে F (না) / T (হ্যাঁ) লেখো — সীমানাটাই উত্তর।

guess:  1  2  3  4  5  6  7
check:  F  F  F  T  T  T  T
         প্রথম T = উত্তর (binary search এই সীমানা খোঁজে)

নিজে practice করার নিয়ম

  • প্রতিটা problem-এ আগে ভাবো: এর জন্য কোন style? range হলে number line, mod হলে ঘড়ি, bit হলে place-value row।
  • Dry run-এর সময় ছবিটার পাশে একটা ছোট টেবিল রাখো (step ধরে variable-এর মান) — ছবি দেয় intuition, টেবিল দেয় নির্ভুলতা।
  • একই problem-এর দুটো ছবি আঁকতে পারলে (যেমন subarray sum = number line আর prefix-এর staircase) — বুঝবে concept-টা সত্যিই ধরা পড়েছে।
  • level-নির্দিষ্ট আরও ছবির জন্য সেই level-এর visualization-ideas.md-এ যাও — সেখানে প্রতিটা concept আর worked example আলাদা করে আঁকা।