# Problems — Level 9: Geometry & Coordinate Math

> এই folder-এ Level 9-এর 12টা problem-এর নোট আছে। প্রতিটা problem-এর জন্য আলাদা একটা `.md` file — সেখানে আছে নিজের ভাষায় problem বোঝা, **হাতে আঁকা ছবির বর্ণনা**, dry run, code, আর ভুল থেকে শেখা। Geometry-তে বিশেষ নিয়ম: ছবি না এঁকে code লেখা নিষেধ।

## কীভাবে problem গুলো use করবে?

প্রতিটা problem-এর note লেখা হয় [../../../templates/math-problem-note-template.md](../../../templates/math-problem-note-template.md) follow করে — ২০টা section-এর একটা template, problem বোঝা থেকে brute force → optimization → dry run → complexity → "ভবিষ্যতের আমাকে এক লাইনে কী বলব" পর্যন্ত। Geometry-র জন্য বাড়তি অভ্যাস: dry run section-এ অন্তত একটা ASCII ছবি বা graph paper-এর ছবির বর্ণনা রাখো, আর edge case list-এ **collinear / touching / duplicate point** — এই তিনটা শব্দ খুঁজে দেখো প্রাসঙ্গিক কি না।

নিয়মটা সহজ:

1. Table থেকে একটা problem নাও (recommended order [../README.md](../README.md)-তে আছে)
2. আগে graph paper-এ ছোট একটা উদাহরণ আঁকো, তারপর খাতায় solve করার চেষ্টা — অন্তত 20-30 মিনিট
3. তারপর বিদ্যমান নোট পড়ো, নিজের approach-এর সাথে মেলাও
4. নিজের অগ্রগতি আলাদা করে চিহ্নিত করো; “নোট আছে” মানে এই সাইটে ব্যাখ্যা আছে, তুমি সমাধান করেছ—এমন দাবি নয়।

## Tracker table

| # | Problem | Difficulty | Pattern | Inherits from | Source | Note file | নোটের অবস্থা |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 113 | Distance Between Points | Easy | squared distance | — | Classic exercise | [113-distance-between-points.md](113-distance-between-points.md) | নোট আছে |
| 114 | Slope and Collinearity | Easy | cross multiply | 113 | Classic exercise | [114-slope-and-collinearity.md](114-slope-and-collinearity.md) | নোট আছে |
| 115 | Area of Triangle | Easy | shoelace | 114 | Classic exercise | [115-area-of-triangle.md](115-area-of-triangle.md) | নোট আছে |
| 116 | Orientation of Three Points | Medium | cross product sign | 115 | CP-Algorithms — <https://cp-algorithms.com/geometry/oriented-triangle-area.html> | [116-orientation-three-points.md](116-orientation-three-points.md) | নোট আছে |
| 117 | Line Intersection Basic | Medium | orientation test | 116 | CP-Algorithms geometry — <https://cp-algorithms.com/geometry/check-segments-intersection.html> | [117-line-intersection-basic.md](117-line-intersection-basic.md) | নোট আছে |
| 118 | Rectangle Overlap | Medium | interval logic | — | LeetCode — <https://leetcode.com/problems/rectangle-overlap/> | [118-rectangle-overlap.md](118-rectangle-overlap.md) | নোট আছে |
| 119 | Circle and Point | Easy | r² compare | 113 | Classic exercise | [119-circle-and-point.md](119-circle-and-point.md) | নোট আছে |
| 120 | Convex Hull Intro | Hard | monotone chain | 116 | CP-Algorithms — <https://cp-algorithms.com/geometry/convex-hull.html>, CSES Convex Hull — <https://cses.fi/problemset/task/2195> | [120-convex-hull-intro.md](120-convex-hull-intro.md) | নোট আছে |
| 121 | Manhattan Distance Tricks | Medium | 45° rotation | 113 | Classic CP trick | [121-manhattan-distance-tricks.md](121-manhattan-distance-tricks.md) | নোট আছে |
| 122 | Rotate Matrix and Coordinates | Medium | coordinate map | — | LeetCode Rotate Image — <https://leetcode.com/problems/rotate-image/> | [122-rotate-matrix-coordinates.md](122-rotate-matrix-coordinates.md) | নোট আছে |
| 123 | Grid Movement Math | Medium | parity reachability | 001 | Classic exercise | [123-grid-movement-math.md](123-grid-movement-math.md) | নোট আছে |
| 124 | Pick's Theorem Intro | Hard | lattice counting | 115 | CP-Algorithms — <https://cp-algorithms.com/geometry/picks-theorem.html> | [124-picks-theorem-intro.md](124-picks-theorem-intro.md) | নোট আছে |

## "Inherits from" column-টা কী?

প্রতিটা problem আগের কোনো problem-এর কাঁধে দাঁড়িয়ে আছে। এই level-এ ধারাটা খুব পরিষ্কার — 113-এর squared distance থেকে 119 আর 121; 114-এর cross multiplication থেকে 115-এর shoelace; 115 থেকে 116-এর orientation; আর 116 থেকে 117 (intersection) আর 120 (convex hull)। 123 ফিরে যায় একদম level 0-এর parity-তে (problem 001)। আটকে গেলে শিকড়ে ফেরো।

```text
113 (distance²) ──┬──▶ 119 (circle)
                  └──▶ 121 (Manhattan)
114 (cross mult) ──▶ 115 (shoelace) ──┬──▶ 116 (orientation) ──┬──▶ 117 (intersection)
                                      │                        └──▶ 120 (convex hull)
                                      └──▶ 124 (Pick's theorem)
001 [level 0 parity] ──▶ 123 (grid parity)

স্বাধীন শাখা: 118 (interval logic)   122 (coordinate map)
```

## একটা ছোট পরামর্শ

Geometry-র WA প্রায় কখনোই algorithm-এর ভুলে হয় না — হয় **edge case-এ**: তিনটা point এক লাইনে, segment-এর প্রান্ত ছুঁয়ে আছে, দুটো point একই জায়গায়, rectangle শুধু ধার শেয়ার করছে। তাই প্রতিটা note-এর edge case section-টা সবচেয়ে যত্নে লেখো। আর দ্বিতীয় পরামর্শ: **পুরো level-এ float ছাড়া কোড লেখার চেষ্টা করো** — পারলে বুঝবে integer geometry-র আসল স্বাদ পেয়ে গেছ।

Concept ঝালাই করতে হলে → [../concept-notes.md](../concept-notes.md)। ছবি এঁকে বুঝতে চাইলে → [../visualization-ideas.md](../visualization-ideas.md)।
