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-কে [ ] দিয়ে চিহ্নিত করো।
2. Grid / ছক¶
কখন: 2D prefix sum, grid path, pattern printing, nested loop, matrix। Graph paper-এর মতো ঘর আঁকো; বাইরের loop = row, ভেতরের loop = column।
3. Clock (mod-এর ঘড়ি)¶
কখন: modular arithmetic, cyclic pattern, digital root, "প্রতি k ধাপে পুনরাবৃত্তি"। 0 থেকে m−1 একটা বৃত্তে বসাও; যোগ মানে কাঁটা ঘড়ির কাঁটার মতো ঘোরা, m-এ গিয়ে আবার 0।
4. Binary place-value row¶
কখন: bit manipulation, XOR, subset mask, power-of-two। প্রতিটা ঘরের উপরে তার "দাম" লেখো (8 4 2 1), নিচে 0/1।
5. Recursion / branch tree¶
কখন: recursion, backtracking, game state, counting "কয় উপায়ে", subset/permutation। প্রতিটা সিদ্ধান্ত = একটা শাখা; পাতা = base case।
6. FFFTTT monotonic staircase¶
কখন: binary search on answer, lower/upper bound, "প্রথম যেখানে সত্য হয়"। সম্ভাব্য উত্তরগুলোকে সারিতে সাজিয়ে প্রতিটার নিচে F (না) / T (হ্যাঁ) লেখো — সীমানাটাই উত্তর।
নিজে 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 আলাদা করে আঁকা।