๐๐น๐ฝ๐ต๐ฎ-๐๐ฒ๐๐ฎ ๐ฃ๐ฟ๐๐ป๐ถ๐ป๐ด โ ๐ ๐ถ๐ป๐ถ๐บ๐ฎ๐
, ๐ฏ๐๐ ๐ฆ๐บ๐ฎ๐ฟ๐๐ฒ๐ฟ ๐ง
Minimax explores possible future moves to find the best decision.
The problem?
โ ๏ธ Game trees get huge.
โ ๐๐น๐ฝ๐ต๐ฎ-๐๐ฒ๐๐ฎ ๐ฃ๐ฟ๐๐ป๐ถ๐ป๐ด
โณ It skips branches that cannot possibly change the final decision.
โ ฮฑ (alpha) โ best value MAX can already guarantee.
โ ฮฒ (beta) โ best value MIN can already guarantee.
โข When ฮฑ โฅ ฮฒ, stop exploring that branch.
That's the pruning.
โ ๐ฆ๐ถ๐บ๐ฝ๐น๐ฒ ๐ฒ๐
๐ฎ๐บ๐ฝ๐น๐ฒ
โณ Suppose MAX is already found:
Left branch โ 3
So:
โ ฮฑ = 3
Now MIN explores another branch:
โ Right branch โ 2
MIN can only make this branch 2 or worse.
โ MAX already has 3.
So why explore the remaining moves?
โณ Prune. โ๏ธ
โ ๐ง๐ต๐ฒ ๐ถ๐บ๐ฝ๐ผ๐ฟ๐๐ฎ๐ป๐ ๐ฝ๐ฎ๐ฟ๐
Alpha-beta pruning gives the same answer as minimax.
It simply avoids computations that don't matter.
โค Better move ordering โ more pruning.
โค Worst case โ still exponential.
โ
Minimax: Explore the possibilities.
โ
Alpha-Beta: Explore only the possibilities that matter.
โ Would you be able to identify where pruning occurs in a game tree?
๐ง๐๐ผ ๐ฃ๐ผ๐ถ๐ป๐๐ฒ๐ฟ๐ ๐ ๐ฎ๐ฑ๐ฒ ๐ฆ๐ถ๐บ๐ฝ๐น๐ฒ ๐ถ๐ป ๐ฆ๐ฒ๐ฐ๐ผ๐ป๐ฑ๐ ๐
โณ Two Pointers is one of the most useful DSA patterns for efficiently solving array and string problems.
โณ Instead of checking every possible combination, you use two pointers that move through the data intelligently.
โ ๐๐ผ๐ ๐ถ๐ ๐๐ผ๐ฟ๐ธ๐
โ One pointer starts from the left.
โ The other starts from the right.
โข Both pointers move based on the current values.
โ ๐ฆ๐ถ๐บ๐ฝ๐น๐ฒ ๐ฒ๐
๐ฎ๐บ๐ฝ๐น๐ฒ
Find two numbers that add up to 10:
Sorted array โ [1, 3, 5, 7, 9]
โ Left = 1
โ Right = 9
1 + 9 = 10 โ
Found it immediately.
โข If the sum is too small โ move the left pointer forward.
โข If the sum is too large โ move the right pointer backward.
โข Keep moving until the pointers meet.
โ This works because the array is sorted โ that's what tells you which direction to move. Unsorted array = no shortcut.
โ ๐ช๐ต๐ ๐ถ๐ ๐บ๐ฎ๐๐๐ฒ๐ฟ๐
โณ A brute-force solution may check every possible pair.
Two Pointers can often reduce the problem to O(n) time.
โ
๐ง๐ต๐ฒ ๐บ๐ฒ๐ป๐๐ฎ๐น ๐บ๐ผ๐ฑ๐ฒ๐น
โณ Two pointers + smart movement = fewer unnecessary comparisons.
โณ This post covers the opposite-ends variant โ pointers starting apart and moving toward each other.
Once you recognize the pattern, many array and string problems become much easier.
โโ
What DSA pattern should I explain next? ๐ค
โโ
๐ Save for later.
๐ค Follow me @1devmaaz, for more!
19/
The key idea is simple:
AI search isn't about magically finding the answer. It's about exploring possibilities intelligently until it finds a path to the goal.
Once you understand states, actions, transitions, and the frontier, algorithms like BFS, DFS, and A* stop feeling like complicated algorithmsโand start feeling like different strategies for solving the same problem.
The real question isn't โCan we find a path?โ
It's:
โWhich path should we explore first?โ ๐ง
1
18
15/
There's also something called path cost.
Not every solution is equally good.
Imagine two routes:
๐ Route A โ 5 km
๐ Route B โ 20 km
Both reach your destination.
But if we're minimizing distance, Route A is better.
So we assign a numerical cost to paths to see which solution is more optimal.
The best solution is the one with the lowest path cost.
1
8
13/
For example:
Imagine the frontier contains:
โ [A, B, C, D]
If we always remove the oldest node first:
A โ B โ C โ D
That's essentially Breadth-First Search.
If we remove the newest node first:
A โ D โ ...
That's Depth-First Search.
Same problem.
Same nodes.
Different frontier behavior.
1
7
11/
But what exactly is a "node"?
A node stores information about a particular point in our search:
๐ State
๐จโ๐ฆ Parent
โก Action
๐ฐ Path cost
The parent is especially useful.
Why?
Because when we finally reach the goal, we can follow:
Goal โ Parent โ Parent โ Parent โ Initial State
And reconstruct the entire solution.
1
1
11
10/
But how does the computer actually search?
We need one more idea:
The Frontier
Think of the frontier as a waiting room for possible paths.
The algorithm puts the starting node into the frontier.
Then:
1. Take a node out
2. Check if it's the goal
3. If not, expand it
4. Add its possible next nodes
5. Repeat
That's the basic search loop.
1
1
14
8/
Put those ideas together:
๐ State
โ
โก Action
โ
๐ New State
โ
โก Another Action
โ
๐ New State
Eventually:
๐ Current State โ ๐ฏ Goal State
All the states we can reach form the state space.
1
2
11
6/
That's where actions come in.
An action is a choice you can make from a state.
From an intersection:
โฌ๏ธ Go straight
โฌ
๏ธ Turn left
โก๏ธ Turn right
So we can think of it as: Actions(state) โ possible moves
The available actions depend on where you currently are.
1
2
11
5/
The first state is called the: Initial State
It's simply: "Where am I starting from?"
For our example:
Initial State = ๐ Home
Goal State = ๐ข Office
Now the computer has a starting point and a destination.
But it still needs to figure out how to get there.
1
2
12
2/
Let's start with the simplest example:
๐บ๏ธ A navigation app.
You are here:๐ A
You want to reach: ๐ฏ B
There might be dozens of possible roads.
The computer needs to figure out:
"Which sequence of moves gets me from A โ B?"
That's what a search algorithm does.
1
2
21
Only 21 followers away from 1,600! ๐
Huge thank you to everyone who's been following along and supporting my journey. It genuinely means a lot. โค๏ธ
I love sharing and learning about:
๐ค AI
๐ป Software Engineering
๐ Startups
๐ฑ New Tech & Gadgets
If you're into any of that too, let's #connect! ๐
2
72
Just shipped a big update to my portfolio. ๐
โจ What's new:
โข ๐ Interactive metrics
โข ๐ ๏ธ Scroll-based build timeline
โข ๐ง "How I Think" section
โข ๐๏ธ Live architecture views
โข ๐ Mini case studies for every project
โข โ๏ธ Interactive system design whiteboard
โข ๐ Refined dark/light experience
Would love some honest feedback ๐
- What's your first impression?
- Anything confusing?
What would you improve?
๐ maaz.mikrotik.pk
Feedback from engineers, designers, and recruiters is always appreciated ๐
What is Git, and why should every developer learn it? ๐ค
Imagine spending hours building a feature... and then accidentally deleting your code.
Yeah, not a great feeling.
That's just one of the many problems Git helps solve.
Let's get into it ๐
๐ Topics
โ What is Git?
โ ๐ฐ๏ธ Why was Git created?
โ ๐ ๏ธ What does Git actually do?
โ ๐ Why should every developer learn Git?
โ Collaboration
โ Version Control
โ Branches
โ ๐ฏ Conclusion
๐ฐ๏ธ Why was Git created?
Git was created by Linus Torvalds in 2005 to manage the development of the Linux kernel after the project stopped using its previous version control system.
โญ Git is a Distributed Version Control System (DVCS).โญ
In simple words:
โ It helps you keep track of changes in your project.
โ It stores your project's entire history.
โ It makes collaborating, experimenting, and recovering old versions much easier.
๐ ๏ธ What does Git actually do?
Every time you make a commit, Git saves a snapshot of your project.
Think of each commit as a checkpoint.
If you ever break something, you can jump back to an earlier version instead of rebuilding everything from scratch.
Every commit also gets a unique SHA hash.
With that hash, you can:
โ
View a specific version of your project.
โ
Compare changes between commits.
โ
Restore or revert to an older version if needed.
๐ Why should every developer learn Git?
๐ค Collaboration
Say you're working with a team.
๐ One person is building authentication.
๐ Someone else is working on the dashboard.
๐ Another developer is fixing bugs.
Git lets everyone work on the same project without stepping on each other's code.
When everything's ready, the changes can be merged together safely.
๐ Version Control
Git shows you exactly who changed what and when.
Made a mistake?
It happens.
You can compare versions, restore older commits, or undo unwanted changes without losing your whole project.
๐ฟ Branches
Probably my favorite Git feature.
Branches let you build new features without touching your main codebase.
For example:
You want to add an Edit Profile feature.
โ
Create a new branch.
โ
Build and test the feature.
โ
Merge it back into the main branch once it's ready.
This makes it easy to experiment without risking your stable code.
๐ผ Career
Whether you're a:
โ
Software Engineer
โ
Web Developer
โ
Mobile Developer
โ
DevOps Engineer
โ
System Administrator
...or anyone who writes code,
You'll probably use Git almost every single day.
It's become the standard tool for version control across the industry.
๐ฏ Conclusion
Git isn't just another tool to add to your toolbox.
It's one of the foundations of modern software development.
The earlier you learn it, the easier it'll be to collaborate, manage projects, and build software with confidence.
Now I'm curious...
What's the first Git command you learned? ๐
Mine was git clone. ๐
Finally got verified on X. โ๏ธ
Really happy to see that blue checkmark.
๐ I'm Muhammad Maaz, a self-taught software engineer from Pakistan ๐ต๐ฐ who loves building things, breaking them, and figuring out how they work.
I mainly share:
โข โ๏ธ Software Engineering
โข ๐ค AI Core
โข ๐ผ Entrepreneurship
โข ๐ง Things I'm learning and building
If any of those topics interest you, I'd love to have you along for the journey. ๐

















