Skip to content

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-এর ভেতরে একই কাঠামো। এই ক্রমে এগোলে শেখাটা সবচেয়ে ভালো গাঁথে:

  1. README.md — level-এর map: কী শিখবে, কেন দরকার, prerequisites, problem list, common mistakes।
  2. concept-notes.md — মূল idea গুলো নিজের ভাষায়, ছোট হাতে-চালানো উদাহরণসহ। এটাই হৃদপিণ্ড।
  3. visualization-ideas.md — কঠিন idea গুলো ছবি/ASCII diagram দিয়ে দেখা; চোখে দেখলে দ্রুত গাঁথে।
  4. problems/ — সেই level-এর problem note গুলো, easy → hard সাজানো। প্রতিটা note ২০-section template মেনে: problem বোঝা → brute force → কেন slow → optimized intuition → thinking tweak → dry run → Python → complexity → common mistakes।
  5. 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

পরের ধাপ

শুরু করো → Level 00 — Absolute Basics001 Even or Odd। 💪