01 — Math-Based Programming Fundamentals (programming-এর জন্য অঙ্ক)¶
এটা পুরো data structures journey-র শূন্যতম অধ্যায় — classic data structure (array, linked list, tree...) ধরার আগে যে গণিত-চিন্তাটা দরকার, সেটাই এখানে beginner থেকে advanced পর্যন্ত সাজানো। 12টা level, 150টা problem, একটা একটানা পথ — সংখ্যার সাথে খেলা থেকে শুরু করে Codeforces-ধাঁচের hard pattern পর্যন্ত।
এই section এ কী আছে?¶
প্রোগ্রামিং শেখার শুরুতে অনেকেই সরাসরি data structure-এ ঝাঁপ দেয়, আর তারপর আটকে যায় — কারণ ভিতের অঙ্কটা নড়বড়ে। এই section সেই ফাঁকটা ভরে। এখানে তুমি শিখবে:
- একটা সংখ্যাকে ভেঙে দেখা — digit, bit, factor, remainder
- গোনার শিল্প — কয়টা উপায়, কয়টা জোড়া, কয়টা subset
- চিন্তাকে অপ্টিমাইজ করা — brute force থেকে চালাক সমাধানে নামার ছাঁচ গুলো
- আর সবচেয়ে দামি জিনিস: একটা নতুন problem দেখে "এটা আসলে কোন চেনা জিনিস" — সেই চোখ
এটা কোনো বিচ্ছিন্ন formula-র তালিকা নয়; প্রতিটা level আগেরটার কাঁধে দাঁড়ায়, আর প্রতিটা problem আগের কোনো problem-এর idea ধার করে (সেটাই "Inherits from" chain)।
এই section কাদের জন্য?¶
- মরচে-পড়া beginner — basic একসময় জানতে, এখন আবছা। এখানে একদম গোড়া (Level 0) থেকে ধাপে ধাপে উঠবে, কোনো ধাপ বাদ না দিয়ে।
- Interview-প্রার্থী — Amazon/Google-ধাঁচের interview-এর জন্য যে অঙ্ক-ভিতটা ধরে নেওয়া হয়, সেটা এখানে সরাসরি practice হয়।
- CP-কৌতূহলী — competitive programming-এ ঢুকতে চাইলে Level 09-11 সেই দরজা খুলে দেয়।
কোনো আগের অভিজ্ঞতা লাগে না — শুধু Python-এর basic syntax (variable, loop, if/else, function) আর দিনে 2-3 ঘণ্টা সময়। বাকিটা পথেই তৈরি হবে।
কেন math thinking জরুরি?¶
Problem-solving-এ: বেশিরভাগ কঠিন problem আসলে কয়েকটা সহজ অঙ্ক-idea-র ছদ্মবেশ। range sum বারবার লাগছে → prefix sum; min of max চাই → binary search on answer। এই অনুবাদটা যত দ্রুত করতে পারবে, তত কম সময়ে সমাধানে পৌঁছাবে। একটা ছোট উদাহরণ:
প্রশ্ন: একটা array-তে বহুবার [l, r] range-এর যোগফল জিজ্ঞেস করা হবে।
সরল চিন্তা : প্রতি প্রশ্নে l থেকে r ঘুরে যোগ করি → প্রতি প্রশ্নে O(n)
অঙ্ক-চিন্তা : একবার prefix[] বানিয়ে রাখি → প্রতি প্রশ্ন O(1): prefix[r] − prefix[l-1]
পার্থক্যটা algorithm-এর নয়, চিন্তার — "কোন হিসাবটা বারবার হচ্ছে, সেটা আগে বানিয়ে রাখি"। এই ধরনের মোচড়ই পুরো section জুড়ে শেখানো হয়।
Interview-এ: entry থেকে FAANG-ধাঁচের interview — সব জায়গায় parity, gcd, modular arithmetic, prefix sum, two pointers, binary search-এর সরাসরি প্রয়োগ আসে। এগুলো "জানা" আর "চোখ বন্ধ করে bug-free লেখা"-র মধ্যে যে ফারাক, সেটাই এই section ঘোচায়।
পরের topic-গুলোতে: array, hashing, recursion, DP — সবকিছুর নিচে এই অঙ্ক-চিন্তা কাজ করে। এখানে শক্ত ভিত গড়লে বাকি 12টা data structure topic অনেক হালকা লাগবে।
12টা level¶
প্রতিটা level একটা folder; নিচের ক্রমেই এগোও (easy → hard, ID 001 → 150)।
- 00 — Absolute Basics — সংখ্যাকে digit-এ ভাঙা,
%ও//, parity, number building — পুরো journey-র ভিত। - 01 — Divisibility, Prime, GCD, LCM — ভাগ-নিঃশেষ, prime check, Sieve, Euclid-এর GCD, LCM আর divisor গোনা।
- 02 — Modular Arithmetic — ঘড়ির অঙ্ক: mod-এর নিয়ম, fast power, modular inverse, Fermat-এর little theorem।
- 03 — Counting & Combinatorics — গোনার শিল্প: nPr/nCr, Pascal triangle, stars-and-bars, inclusion-exclusion, Catalan।
- 04 — Bit Manipulation — সংখ্যাকে 0/1-এর সারি হিসেবে দেখা: mask দিয়ে check/set/clear, XOR-এর জাদু, subset enumeration।
- 05 — Prefix, Difference, Contribution — বারবার range-হিসাবকে precompute করে O(1)-এ আনা; difference array, contribution technique।
- 06 — Two Pointers & Sliding Window Math — sorted array-তে জোড়া খোঁজা, window দিয়ে subarray-র হিসাব O(n)-এ।
- 07 — Binary Search on Answer — উত্তরের উপরেই binary search: monotonic yes/no খুঁজে min/max বের করা।
- 08 — Greedy Math Tricks — locally সেরা চাল, আর সবচেয়ে জরুরি — exchange argument দিয়ে কেন কাজ করে তার প্রমাণ।
- 09 — Geometry & Coordinate Math — বিন্দু-রেখা-ত্রিভুজ, cross product, orientation, convex hull, Pick's theorem।
- 10 — Advanced Number Theory — extended Euclid, CRT, matrix exponentiation, Miller-Rabin, sieve variants।
- 11 — Hard Mixed CP Patterns — সব হাতিয়ার মিশিয়ে: meet in the middle, game theory, Grundy, Burnside, constructive।
level গুলো কীভাবে একে অন্যের উপর দাঁড়ায়¶
এই 12টা level বিচ্ছিন্ন নয় — একটা সিঁড়ি। নিচের ছবিটা দেখাচ্ছে কোন level কার উপর ভর করে:
00 basics ──▶ 01 number theory ──▶ 02 modular ──▶ 03 counting ─┐
│ ▼
├──▶ 04 bits ───────────────────────────────────────▶ 11 hard mixed
│ ▲ ▲ ▲
└──▶ 05 prefix ──▶ 06 two pointers │ │ │
│ │ │ │
└──────▶ 07 binary search ──▶ 08 greedy ─────┘ │ │
09 geometry ──────┘ │
10 adv. number theory ┘
মূল কথা: 00-03 হলো সংখ্যার ভিত, 04-08 হলো array/optimization-এর হাতিয়ার, আর 09-11 হলো advanced/CP — যেখানে আগের সব idea মিশে যায়। তাই ক্রম ভাঙলে পরের level-এ ফাঁক টের পাবে।
একটা level কীভাবে use করবে?¶
প্রতিটা level-এর ভেতরে একই কাঠামো। এই ক্রমে এগোলে শেখাটা সবচেয়ে ভালো গাঁথে:
README.md— level-এর map: কী শিখবে, কেন দরকার, prerequisites, problem list, common mistakes।concept-notes.md— মূল idea গুলো নিজের ভাষায়, ছোট হাতে-চালানো উদাহরণসহ। এটাই হৃদপিণ্ড।visualization-ideas.md— কঠিন idea গুলো ছবি/ASCII diagram দিয়ে দেখা; চোখে দেখলে দ্রুত গাঁথে।problems/— সেই level-এর problem note গুলো, easy → hard সাজানো। প্রতিটা note ২০-section template মেনে: problem বোঝা → brute force → কেন slow → optimized intuition → thinking tweak → dry run → Python → complexity → common mistakes।source-map.md— কোন idea কোথা থেকে নেওয়া (legal attribution)।
নিয়ম সহজ: আগে concept-notes.md পড়ো, দরকারে visualization-ideas.md দেখো, তারপর problems/-এ গিয়ে নিজে হাতে solve করো। পড়া ≠ শেখা — code না লিখলে গাঁথবে না।
কোনটা আগে, কোনটা পরে (৪ মাসের interview plan)¶
সব level সমান জরুরি নয় — বিশেষত হাতে যদি মাত্র ৪ মাস থাকে:
- Level 00-08 — interview-critical. parity, gcd, mod, bit, prefix sum, two pointers, binary search, greedy — এই idea গুলো সরাসরি Amazon/Google-ধাঁচের interview-এ আসে। আগে এগুলো শক্ত করো।
- Level 09-11 — মূলত CP/optional। geometry, advanced number theory, hard mixed pattern — competitive programming-এ দারুণ, কিন্তু ৪ মাসের interview timeline-এ পরে রাখা যায়। data structure topic (02-13) শেষ করে ফিরে এসো।
পুরো সময়সূচি: ../STUDY-PLAN.md · বড় ছবি ও নির্ভরতা: ../roadmap.md।
পরের ধাপ¶
- 📋 ১৫০টা problem-এর পূর্ণ তালিকা — roadmap.md
- 🧠 এই section যে চিন্তার মোচড় শেখায় — thinking-patterns.md
- 🎨 ছবি দিয়ে বোঝানোর menu — visualization-ideas.md
- ✍️ নতুন note লেখার ছাঁচ — ../templates/math-problem-note-template.md
- 🗺️ এই section-এর সব source — source-map.md
শুরু করো → Level 00 — Absolute Basics → 001 Even or Odd। 💪