āϏāĻŦāĻžāĻāĻā§āĻ āĻāĻŽā§āĻĒāĻŋāĻāĻŋāĻāĻŋāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻā§ā§ āĻĒā§āϰāĻŦāϞā§āĻŽ āĻĢā§āĻāϏ āĻāϰāϤ⧠āĻšā§, āĻāĻŽāύ āĻā§āĻ āύā§āĻ āϝ⧠āĻāĻ āĻĒā§āϰāĻŦāϞā§āĻŽāĻāĻž āĻĢā§āĻāϏ āĻāϰ⧠āύāĻžāĨ¤
-
āĻāĻāĻāĻž āĻĒā§āϰāĻļā§āύ āϏāĻŦāĻžāϰ-āĻ āĻĨāĻžāĻā§ āϝ⧠āĻāĻŋāĻāĻžāĻŦā§ Cp āϤ⧠āĻāĻžāϞ⧠āĻāϰāĻŦā§ ? -> Practice! Practice! Practice! āĻāĻŽā§āĻĒāĻŋāĻāĻŋāĻāĻŋāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻā§ā§ āĻāĻžāϞ⧠āĻāϰāĻžāϰ āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āĻāĻĒāĻžāϝāĻŧ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āĻ āύā§āĻļā§āϞāύ āĻāϰāĻžāĨ¤ āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ āĻ āύā§āϤāϤ ⧍-ā§Š āĻāĻž āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻž āĻāĻāĻŋāϤāĨ¤ Current Ratings āϝāĻĻāĻŋ "x" āĻšā§, āϤāĻžāĻšāϞ⧠{x+100 to x+300} Ratings āĻāϰ āĻĒā§āϰāĻŦāϞā§āĻŽāĻā§āϞ⧠āϏāϞāĻ āĻāϰāĻž āĻāĻāĻŋāϤāĨ¤ āϰā§āĻā§āϞāĻžāϰ āĻāύāĻā§āϏā§āĻ āĻā§āϞā§āϤ⧠āĻ āĻāĻļ āύā§ā§āĻž āĻāĻāĻŋāϤ āĻāĻŋāύā§āϤ⧠āϝāĻĻāĻŋ āϰā§āĻāĻŋāĻāϏ āĻŦāĻžāĻā§ āĻāϏ⧠āĻ āĻĨāĻŦāĻž āύā§āĻā§āĻāĻŋāĻ āĻšā§ā§ āϝāĻžā§ āϤāĻžāĻšāϞā§āĻ Continue āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āϝ⧠āĻĒā§āϰāĻŦāϞā§āĻŽāĻā§āϞ⧠āĻāĻāĻā§āϰ āĻāύā§āϝ āϏāϞāĻ āĻšā§ āύāĻŋ, āϏā§āĻā§āϞ⧠āĻāĻŦāĻžāϰ⧠Try āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āϏāϞāĻ āĻāϰāϤ⧠āĻāĻŋāϝāĻŧā§ āĻāύā§āĻāĻžāϰ āĻĒāϰ āĻāύā§āĻāĻž āĻ āĻĨāĻŦāĻž āĻĻāĻŋāύā§āϰ āĻĒāϰ āĻĻāĻŋāύ āĻāĻāĻā§ āĻĨāĻžāĻāϞā§āĻ āĻšāϤāĻžāĻļ āĻšāĻāϝāĻŧāĻžāϰ āĻāĻŋāĻā§ āύā§āĻ, āĻāĻāĻž āϏāĻŦāĻžāϰ āĻā§āώā§āϤā§āϰā§āĻ āĻšā§āĨ¤ (āĻāĻŽāĻŋ āύāĻŋāĻā§āĻ āĻāĻāĻŦāĻžāϰ āĻāĻāĻāĻž Hard Problem ā§§ āĻŽāĻžāϏ āϏāĻŽā§ āύāĻŋā§ā§ āϏāϞāĻ āĻāϰā§āĻāĻŋāϞāĻžāĻŽ)
-
āĻāĻŽāύ āĻ āύā§āĻā§āĻ āĻāĻā§ āϝāĻžāϰāĻž āĻĒā§āϰāĻŦāϞā§āĻŽāĻāĻžāĻ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰ⧠āύāĻž, āĻāĻāύ āĻĒā§āϰāĻŦāϞā§āĻŽ āĻŦā§āĻāϤ⧠āύāĻž āĻĒāĻžāϰāϞ⧠āĻāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§ ? -> āĻĒā§āϰāĻŦāϞā§āĻŽāĻā§āϞ⧠āϝā§āĻšā§āϤ⧠āĻāĻāϞāĻŋāĻļā§ āĻĨāĻžāĻā§ āϤāĻžāĻ āύāĻž āĻŦā§āĻāϤ⧠āĻĒāĻžāϰāĻžāϰ āĻāĻāĻžāĻ āĻāĻāĻāĻž āĻāĻžāϰāĻŖ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻāύā§āϝ āĻĒā§āϰāĻĨāĻŽ āĻĒā§āϰāĻĨāĻŽ āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύāĻ āĻāĻŋāĻā§ āĻĒā§āϰāĻŦāϞā§āĻŽ āĻĒā§āĻžāϰ āĻ āĻā§āϝāĻžāϏ āĻāϰāϞ⧠āĻŦā§āĻāĻžāϰāĨ¤ āĻĒā§āĻāύ āĻā§āϞā§āĻ āĻāĻāĻā§ āϧā§āϰā§āϝā§āϝ āύāĻŋā§ā§ āĻāĻ āĻāĻžāĻāĻā§āϞ⧠āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
-
āĻāĻŦāĻžāϰ āĻāϰ āĻāĻāĻāĻŋ āĻĒā§āϰāĻļā§āύ āĻĒā§āϰāĻžā§ āĻ āύā§āĻā§āϰāĻ āĻĨāĻžāĻā§ āϝ⧠āĻā§āύ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āϞā§āϝāĻžāĻāĻā§ā§ā§āĻ āĻĻāĻŋā§ā§ āĻāĻŽā§āĻĒāĻŋāĻāĻŋāĻāĻŋāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āĻāϰāĻž āĻāĻāĻŋāϤ ? -> āĻ āĻŦāĻļā§āϝāĻ C++ āĻāĻžāϰāĻŖ āĻāĻāĻž āĻāϤāĻŋ āĻāĻŦāĻ āĻĻāĻā§āώāϤāĻžāϰ āĻāύā§āϝ āĻŦā§āϏā§āĻāĨ¤ āĻĒā§āϰāϤāĻŋāϝā§āĻāĻŋāϤāĻžāĻŽā§āϞāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻāϝāĻŧā§ āϏāĻŽāϝāĻŧ āĻāĻŦāĻ āĻŽā§āĻŽā§āϰāĻŋāϰ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āĻā§āώāĻŖ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āϏā§āĻāĻžāύ⧠C++ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻŦā§āĻĻā§āϧāĻŋāĻŽāĻžāύā§āϰ āĻāĻžāĻāĨ¤ āĻŦāĻŋāĻļā§āώāĻāϰ⧠C++ āĻāϰ STL āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻžāϰāĻĻā§āϰ āĻĻā§āϰā§āϤ āĻāĻŦāĻ āĻāϰāĻ āĻĻāĻā§āώāϤāĻžāϰ āϏāĻžāĻĨā§ āĻā§āĻĄ āϞāĻŋāĻāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤ āĻ āύā§āĻā§āĻ "Python" Prefer āĻāϰā§, āĻāĻŽāĻŋ āύāĻŋāĻā§āĻ āĻāϰāĻŋ āĻāĻŋāύā§āϤ⧠āĻĒāĻžāĻāĻĨāύā§āϰ āϧā§āϰāĻāϤāĻŋ āĻ āύā§āĻ āϏāĻŽā§āĻ āĻāύā§āĻā§āϏā§āĻā§āϰ āĻāύā§āϝ āĻŦā§āĻļ āĻ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ āĻšā§ā§ āĻĻāĻžāĻā§āĻžā§āĨ¤
-
āĻāĻŦāĻžāϰ āĻāϏāĻŋ āĻā§āĻĨāĻžā§ Practice āĻ āĻĨāĻŦāĻž Contest āĻāϰāĻŦā§ ? Beecrowd, HackerRank, Codeforces, Codechef, AtCoder, LeetCode: Beginner to Advance, āĻā§ āĻā§āύ Online Judge āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĒā§āϰāĻŦāϞā§āĻŽ āϏāϞāĻ āĻāĻŦāĻ Cp āĻāϰāĻŦā§āύ ? -> āĻŦāĻŋāĻāĻŋāύāĻžāϰ āĻā§ āĻāĻĄāĻāĻžāύā§āϏāĻĄ, āϏāĻŋāϰāĻŋā§āĻžāϞāĻŋ āĻŦāϞāĻž āĻšāϞā§āĻ
4.1. Beecrowd (Former name URI): āϝāĻžāϰāĻž āĻāĻā§āĻŦāĻžāϰā§āĻ āĻĒā§āϰāĻŦāϞā§āĻŽ āϏāϞāĻāĻŋāĻ āĻĒāĻžāϰā§āύ āύāĻž āĻ āĻĨāĻŦāĻž āĻĒā§āϰāĻŦāϞā§āĻŽāĻāĻžāĻ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰā§āύ āύāĻž, āĻĒā§āϰāĻŦāϞā§āĻŽ āĻŦā§āĻāϤ⧠āĻĒā§āĻāύ āϞāĻžāĻā§ āϤāĻžāĻšāϞ⧠āϤāĻžāĻĻā§āϰ āĻāύā§āϝ Beecrowd.
4.2. HackerRank: Practice āĻāϰ āĻāύā§āϝ HackerRank āĻŦā§āϏā§āĻ āĻŦā§āϏā§āĻ āĻŦā§āϏā§āĻ! āϝāĻžāϰāĻž āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻāĻāĻā§ āĻāĻžāϞ⧠āĻĒā§āϰāĻŦāϞā§āĻŽ āϏāϞāĻāĻŋāĻ āĻĒāĻžāϰā§āύ āĻ āĻĨāĻŦāĻž āĻĒā§āϰāĻŦāϞā§āĻŽ āĻŦā§āĻāϤ⧠āĻ āϏā§āĻŦāĻŋāϧāĻž āĻšā§ āύāĻž āϤāĻžāĻšāϞ⧠āĻāĻāĻž āϤāĻžāĻĻā§āϰ āĻāύā§āϝāĨ¤
4.3. Codeforces, Codechef, AtCoder: āĻāύāĻā§āϏā§āĻ āĻāϰ āĻāύā§āϝ āĻāĻ āϤāĻŋāύāĻāĻŋ āĻā§ā§āĻŦāϏāĻžāĻāĻ āĻŦā§āϏā§āĻāĨ¤ āĻĒā§āϰāĻŦāϞā§āĻŽ āϏāϞāĻāĻŋāĻ Practice āĻāϰ⧠āϤāĻžāϰāĻĒāϰ Cp āĻļā§āϰ⧠āĻāϰ⧠āĻĻā§ā§āĻž āĻāĻāĻŋāϤ āĻāĻŦāĻ āĻāύāĻā§āϏā§āĻā§ āϰā§āĻāĻŋāĻāϏ āϝāϤā§āĻ āĻŦāĻžāĻā§ āĻāϏā§āĻ, āϤāĻŦā§āĻ āĻāύāĻā§āϏā§āĻāĻā§āϞ⧠Continue āĻāϰāĻž āĻāĻāĻŋāϤāĨ¤
4.4. LeetCode: Practice, Contest, Interview Prep -> āϏāĻŦ āĻāĻāϏāĻžāĻĨā§ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ, All in One.
-
āĻāĻŽā§āĻĒāĻŋāĻāĻŋāĻāĻŋāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āĻā§āύ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ ? -> āĻāĻāĻž āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻĻāĻā§āώāϤāĻž, āϝā§āĻā§āϤāĻŋāĻ āϝā§āĻā§āϤāĻŋ āĻāĻŦāĻ āĻŦāĻžāĻā§āϏā§āϰ āĻŦāĻžāĻāϰ⧠āĻāĻŋāύā§āϤāĻžāĻāĻžāĻŦāύāĻž āĻŦā§āĻĻā§āϧāĻŋ āĻāϰāϤ⧠āϏāĻšāĻžāϝāĻŧāϤāĻž āĻāϰā§āĨ¤ āĻāĻŦā§āϰ āĻā§āώā§āϤā§āϰā§āĻ āĻā§āĻĄāĻŋāĻ āĻāύā§āĻāĻžāϰāĻāĻŋāĻā§ā§āϰ āĻāύā§āϝ āĻŦā§āĻļ āĻŦā§ āĻāĻāĻāĻž āĻ āĻŦāĻĻāĻžāύ āϰāĻžāĻā§āĨ¤ āϏāĻžāĻĨā§ āĻāϤā§āĻŽāĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻŦāĻžāĻĄāĻŧāĻžāϝāĻŧ āĻāĻžāϰāĻŖ āĻā§āϝāĻžāϞā§āĻā§āĻāĻŋāĻ āϏāĻŽāϏā§āϝāĻžāĻā§āϞ⧠āϏāĻĢāϞāĻāĻžāĻŦā§ āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāϤā§āĻŽāĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻ āύā§āĻāĻāĻžāĻ āĻā§āϰ⧠āĻāϰā§āĨ¤
-
āϝāĻžāϰāĻž Debugging āĻāϰāϤā§āĻ āĻšāĻŋāĻŽāĻļāĻŋāĻŽ āĻāĻžā§, āϤāĻžāĻĻā§āϰ āĻāĻŋ āĻāϰāĻž āĻāĻāĻŋāϤ ? -> Practice! Practice! Practice! āĻŦā§āĻļāĻŋ āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāϏ āύāĻž āĻāϰāĻžāϰ āĻĢāϞ⧠āĻ āύā§āĻ āĻ āĻāĻŋāĻā§āĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻžāϰāϰāĻž āĻ āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻā§ā§ āĻĻā§āϰā§āĻŦāϞ āĻĨāĻžāĻā§, That's why Practice More!
Simple Tips: āĻāĻŽāĻŋ āĻā§āĻĄā§āϰ āĻŽāϧā§āϝ⧠āĻā§āϞ āϏāĻŋāϞā§āĻā§āĻ āĻāϰāĻžāϰ āϏāĻŽā§ āĻā§āĻĄ āĻāĻĒāϰ āĻĨā§āĻā§ āύāĻŋāĻā§, āĻāĻāĻžāĻŦā§ āύāĻž āĻĒā§ā§ āĻāϞā§āĻā§āĻāĻžāĻŦā§ āĻĒā§ā§ Debugging āĻāϰāĻŋāĨ¤ (āϏāĻŦāĻžāϰ āĻā§āώā§āϤā§āϰ⧠āĻĒā§āϰāϝā§āĻā§āϝ āύāĻžāĻ āĻšāϤ⧠āĻĒāĻžāϰā§)
-
DSA Foundations: Time & Space Complexity Analysis, Recursion, Divide & Conquer. (Essential for understanding the efficiency & structure of algorithms)
-
Basic DSA: Arrays, Stack, Queue, Binary Search, Sorting, Hashing, Two pointers, Backtracking.
-
Intermediate DSA: String Manipulation, Bit Manipulation, Greedy, Set, Map (Hash Map, Tree Map), Heap (Priority Queue), Graph (DFS, BFS, Shortest Paths), Disjoint Set (Union-Find). (Crucial for solving more complex problems & optimizing solutions)
-
Advanced DSA: DP, Game Theory, Tries, Segment Trees, Fenwick Trees (Binary Indexed Trees), Suffix Tree, Suffix Array, Heavy-Light Decomposition, Graph Coloring, Network Flow (Max Flow/Min Cut), Sqrt Decomposition.
-
Fundamentals:
- Binary Exponentiation
- Euclidean Algorithm (GCD, LCM)
-
Prime Numbers:
- Sieve of Eratosthenes
- Prime Factorization
- Miller-Rabin Primality Test
-
Number Theory:
- Euler's Totient Function
- Fermat's Little Theorem
- Wilson's Theorem
- Modular Inverse (using Fermatâs Little Theorem & Extended Euclidean Algorithm)
- Number of Divisors / Sum of Divisors
- Mobius Function
-
Modular Arithmetic:
- Chinese Remainder Theorem
- Exponentiation by Squaring
-
Linear Algebra:
- Matrix Multiplication and Inversion
- Vectors, Eigenvalues, and Eigenvectors
-
Geometry:
- Basics: Points, Lines, Circles, Distance, Angles
- Computational Geometry: Convex Hull, Line Intersection
- Coordinate Geometry: Point-Line Relationship, Polygon Area, Point in Polygon
- Misc. Geometry: Orientation, Circle Intersection
-
Combinatorics:
- Permutations, Combinations
- Binomial Theorem & Coefficients
- Pigeonhole Principle (used in distribution and arrangement problems)
- Stars & Bars
- Inclusion-Exclusion Principle
- Lucas' Theorem (rare but useful)
-
Probability:
- Basics
- Expected Values (1D & 2D)
-
Misc/Miscellaneous:
- Fast Fourier Transform (FFT)
- Polynomial Multiplication
- Random Number Generation
- Line Sweep
-
Compilation Error (CE): Your program didn't get compiled successfully. Common reasons like Syntax Error, Missing Imports, Using restricted functionalities.
-
Wrong Answer (WA): Your program ran successfully but returned a different output. Common reasons like Incorrect interpretation of problem, Incorrect solution, Bug in the code, Edge cases(multiple test cases).
-
Time Limit Exceeded (TLE): Your program didn't complete execution in the alloted time. Your program gets a predefined time limit for every test case. Common reasons like Solution isn't optimal, Infinite Loop.
-
Memory Limit Exceeded (MLE): Your program tried to allocate more memory. Common reasons like Declaring large arrays/lists, Adding a lot of data, Stack Overflow Error.
5.1. Runtime Error (SIGSEGV/Segmentation Fault): Your program tried to access or write to a memory that, it can't access or is invalid. Common reasons like Accessing array/string index outside its range, Using too much memory in some languages, Uninitialized/Incorrectly initialized pointers.
5.2. Runtime Error (SIGFPE): Your program encountered a floating-point error. Generally caused if you do an invalid math operation. Common reasons like Division by zero, Square Root/Log of negative numbers.
5.3. Runtime Error (SIGABRT): Your program aborted the program due to fatal error. Common reason like Using assert/abort in the code.
5.4. Runtime Error (NZEC/Non-Zero Error Code): Your program didn't return a zero-error code from the main method & didn't fall into any of the above buckets. Common reasons like Not returning 0 from main method, Not catching exceptions.
- Presentation Error (PE): Your program ran successfully & and the output's correct but the output format's incorrect. Normally due to "a missing space, newline, an extra space or newline."
In problem-solving, TLE (Time Limit Exceeded) means the program took too long to run within the allotted time. To understand when and where to use different types of algorithms, you need to understand the algorithm's time complexity. Time complexity is primarily about calculating how much time an algorithm takes to run, which helps compare multiple solutions to a problem.
Here are some common Time Complexities:
- O(1): Constant Time Complexity
The algorithm's runtime doesn't depend on the input size n, it always performs a constant number of operations.
- O(log n): Logarithmic Time Complexity
The runtime grows logarithmically relative to the input size n, typical of algorithms that divide the problem size in half at each step. (like Binary Search)
- O(n): Linear Time Complexity
The runtime increases linearly with the input size n, this's common in algorithms that iterate through each element of an array or list.
- O(n log n): Linearithmic Time Complexity
The runtime grows in proportion to n multiplied by the logarithm of n, this's often seen in efficient sorting algorithms. (like Merge & Quick Sort)
- O(n^2): Quadratic Time Complexity
The runtime is proportional to the square of the input size n, typical of algorithms with nested iterations over the input. (like Bubble, Selection & Insertion Sort)
- O(n^3): Cubic Time Complexity
The runtime grows with the cube of the input size n, occurring when there're three nested loops iterating over the input.
- O(2^n): Exponential Time Complexity
The runtime grows exponentially with the input size n, this's common in algorithms that solve problems by exploring all subsets or combinations. (like Brute-force)
- O(n!): Factorial Time Complexity
The runtime grows factorial with the input size n, typically seen in algorithms that generate permutations or combinations of a set.
- O(sqrt(n)): Square Root Time Complexity
This complexity occurs in algorithms where operations are performed up to the square root of the input size n, it's less common but can appear in certain mathematical algorithms or optimizations.
How to calculate algorithms time complexity:
-
Identify the basic operations performed by the algorithm.
-
Count the number of times each operation is executed in terms of the input size n.
-
Express this count as a mathematical function of n.
-
Simplify the function to focus on the term with the largest growth rate.
-
Use "Big O Notation" to describe the asymptotic upper bound of the algorithm's time complexity.
Topics:
- Brute Force, Searching.
- Sorting (Language Library Function)
- Strings
- Number Theory like Floor, Ceil, Modulo, Divisors, Factorization.
- Time Complexity
- STL (Language Library)
- Binary Search
- Two Pointers
- Binary + Bitwise Stuff
- DP
- Combinatorics
- Prefix Sums (Basic Range Queries)
- Modular Arithmetic, GCD/LCM, Prime Factor Rep.
- Recursion
- Graphs, Trees
- DSU/UFDS
- Segment Trees
- String Algorithms (Hashing)
- Proofs
- Constructive Algorithms
- Combinatorial Techniques, Probability, Expected Value.
- Game Theory
- Advanced Graph Techniques like Shortest paths, MST.
Suppose āĻāĻāĻāĻž āĻĒā§āϰāĻŦāϞā§āĻŽā§ ā§ĢāĻāĻž āĻāĻāĻā§āĻŽ āĻĻā§āϝāĻŧāĻž āĻāĻā§, āĻĒā§āϰāϤā§āϝā§āĻāĻāĻžāϰ āĻāĻāĻāĻž Weight & Value āĻāĻā§āĨ¤ āĻāĻŋāĻā§ āĻāĻāĻā§āĻŽ āύā§āϝāĻŧāĻž āϝāĻžāϝāĻŧ āĻāĻŦāĻžāϰ āĻāĻŋāĻā§ āĻŦāĻžāĻĻ āĻĻā§āϝāĻŧāĻž āϝāĻžāϝāĻŧāĨ¤ āĻāĻžāϰā§āĻā§āĻ Total Weight ā§§ā§Ļ āĻāϰ āύāĻŋāĻā§ āϰā§āĻā§ Max Value āĻŦā§āϰ āĻāϰāĻžāĨ¤ āĻāĻāĻž āĻ āύā§āĻāĻāĻž āĻā§āϞāĻžāϏāĻŋāĻ Knapsack āĻāϰ āĻŽāϤ⧠āĻļā§āύāĻžāϞā§āĻ, āĻāĻāĻžāύ⧠Twist āĻšāĻā§āĻā§: āĻā§āύ āĻā§āύ āĻāĻāĻā§āĻŽ āĻ āϞāϰā§āĻĄāĻŋ āύā§āϝāĻŧāĻž āĻšāϝāĻŧā§āĻā§ āϏā§āĻāĻž Track āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻā§āϞāĻžāϏāĻŋāĻ Knapsack āĻāϰ O(N à W) āĻāϰ āϤā§āϞāύāĻžāϝāĻŧ āĻāĻāĻž āĻŦā§āĻļāĻŋ Complex āĻāĻŋāύā§āϤ⧠Bitmask DP āĻā§āĻ N āĻāϰ āĻāύā§āϝ āĻŦā§āĻļāĻŋ Flexible.
āĻāĻāύ āĻāĻāĻž āϏāϞāĻ āĻāϰāϤ⧠āĻāĻŋāϝāĻŧā§ āĻĒā§āϰāϤāĻŋāĻāĻž āĻāĻāĻā§āĻŽā§āϰ āĻāύā§āϝ āϞā§āĻĒ āĻāĻžāϞāĻŋāϝāĻŧā§ āĻāĻāĻāĻž āĻ ā§āϝāĻžāϰ⧠āĻĻāĻŋāϝāĻŧā§ Track āĻāϰāĻž āĻšāϞ⧠āĻā§āĻĄā§āϰ āĻāĻžāĻāĻŽ āĻāĻŽāĻĒā§āϞā§āĻā§āϏāĻŋāĻāĻŋ āĻŦā§āĻĄāĻŧā§ āϝāĻžāĻŦā§ āĻāĻŦāĻ Complex āĻšāϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤ āĻāϰ āϝāĻĻāĻŋ āĻāĻāĻā§āĻŽā§āϰ āϏāĻāĻā§āϝāĻž ⧍ā§Ļ āĻāϰ āĻŦā§āĻļāĻŋ āĻšāϝāĻŧ āϤāĻžāĻšāϞ⧠TLE āĻāĻžāĻāϝāĻŧāĻžāϰ āĻāĻžāύā§āϏ āĻāĻā§, āĻāϰ āĻāĻāĻžāύā§āĻ Bitmask DP comes to the rescue!
â Bitmask DP āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§?
āĻāĻāĻāĻž Integer āĻāϰ āĻŦāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĒā§āϰ⧠āϏā§āĻā§āĻ āϰāĻŋāĻĒā§āϰā§āĻā§āύā§āĻ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤ Suppose ā§ĢāĻāĻž āĻāĻāĻā§āĻŽ āĻāĻā§, āϤāĻžāĻšāϞ⧠āĻāĻāĻāĻž ā§Ģ āĻŦāĻŋāĻā§āϰ āϏāĻāĻā§āϝāĻž āĻĻāĻŋāϝāĻŧā§ āĻā§āϰā§āϝāĻžāĻ āĻāϰāĻž āϝāĻžāĻŦā§ āϝ⧠āĻā§āύāĻāĻž āύā§āϝāĻŧāĻž āĻšāϝāĻŧā§āĻā§ āĻāϰ āĻā§āύāĻāĻž āύā§āϝāĻŧāĻž āĻšāϝāĻŧāύāĻŋāĨ¤ Example:
- 00000 āĻŽāĻžāύ⧠āĻāĻŋāĻā§āĻ āύā§āϝāĻŧāĻž āĻšāϝāĻŧāύāĻŋāĨ¤
- 10100 āĻŽāĻžāύ⧠⧍ āύāĻ & ā§Ē āύāĻ āĻāĻāĻā§āĻŽ āύā§āϝāĻŧāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
- 11111 āĻŽāĻžāύ⧠āϏāĻŦāĻā§āϞ⧠āύā§āϝāĻŧāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
āĻāĻāύ DP āϏā§āĻā§āĻ āĻšāĻŦā§: dp[mask][weight] (2D āĻ ā§āϝāĻžāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞā§), āϝā§āĻāĻžāύ⧠mask āĻšāĻā§āĻā§ āĻŦāϰā§āϤāĻŽāĻžāύ⧠āĻā§āύ āĻāĻāĻā§āĻŽāĻā§āϞ⧠āύā§āϝāĻŧāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ Recursion āĻĻāĻŋāϝāĻŧā§ āĻāĻāĻž āϏāϞāĻ āĻāϰāĻž āϝāĻžāĻŦā§āĨ¤
Suppose āĻāĻāĻā§āĻŽāĻā§āϞā§:
- Item 0: Weight 2, Value 3
- Item 1: Weight 3, Value 4
- Item 2: Weight 4, Value 5
- Item 3: Weight 1, Value 2
- Item 4: Weight 5, Value 6
Here, Total Weight āϞāĻŋāĻŽāĻŋāĻ ā§§ā§Ļ.
āĻāĻāĻžāύ⧠dp[mask] āĻĻāĻŋāϝāĻŧā§ Max Value āϏā§āĻā§āϰ āĻāϰāĻž āĻšāĻŦā§āĨ¤ Bitmask DP āϤ⧠āϏāĻžāϧāĻžāϰāĻŖāϤ dp[mask] (1D āĻ ā§āϝāĻžāϰā§) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§, āϝāĻĻāĻŋ weight āĻā§āϰā§āϝāĻžāĻ āĻāϰāϤ⧠āĻšāϝāĻŧ āϤāĻžāĻšāϞ⧠dp[mask][weight] āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
- mask = 00001 (Item 0): Weight 2, Value 3
- mask = 00010 (Item 1): Weight 3, Value 4
- mask = 00100 (Item 2): Weight 4, Value 5
- mask = 01000 (Item 3): Weight 1, Value 2
- mask = 10000 (Item 4): Weight 5, Value 6
- mask = 00011 (Item 0 + Item 1): Weight (2+3)=5, Value (3+4)=7
- mask = 00101 (Item 0 + Item 2): Weight (2+4)=6, Value (3+5)=8
- mask = 01001 (Item 0 + Item 3): Weight (2+1)=3, Value (3+2)=5
- mask = 11001 (Item 0 + Item 1 + Item 4): Weight (2+3+5)=10, Value (3+4+6)=13
- mask = 01100 (Item 2 + Item 3): Weight (4+1)=5, Value (5+2)=7
Here, Max Value 13 (āϝāĻāύ Item 0, 1 & 4 āύā§āϝāĻŧāĻž āĻšāϝāĻŧ)
āĻā§āĻĄā§ āĻāĻāĻž āϰāĻŋāĻāĻžāϰā§āϏāĻŋāĻāϞāĻŋ āĻā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§ āĻĒā§āϰāϤāĻŋāĻāĻž āĻŦāĻŋāĻā§āϰ āĻāύā§āϝ - āĻā§āύāĻāĻž āύā§āϝāĻŧāĻž āĻšāĻŦā§ & āĻā§āύāĻāĻž āύā§āϝāĻŧāĻž āĻšāĻŦā§ āύāĻžāĨ¤ āĻāĻāĻž āĻāϰāĻžāϰ āĻāύā§āϝ Bitwise Operation āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāϝāĻŧāĨ¤ āϝā§āĻŽāύ: āĻā§āύ⧠āĻāĻāĻā§āĻŽ i āύā§āϝāĻŧāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŋāύāĻž āĻā§āĻ āĻāϰāϤ⧠"mask & (1 << i)", āϝāĻĻāĻŋ ā§Ļ āĻšāϝāĻŧ āϤāĻžāĻšāϞ⧠āĻ āĻāĻāĻā§āĻŽ āĻāĻāύ⧠āύā§āϝāĻŧāĻž āĻšāϝāĻŧāύāĻŋāĨ¤ āύāϤā§āύ āĻāĻāĻā§āĻŽ i āϝā§āĻ āĻāϰāϤ⧠"mask | (1 << i)", āĻāĻāĻž mask āĻ i āϤāĻŽ āĻŦāĻŋāĻāĻā§ ā§§ āĻāϰ⧠āĻĻā§āϝāĻŧāĨ¤
â Complexity Analysis
Bitmask DP āϤ⧠N āĻāĻŋ āĻāĻāĻā§āĻŽ āĻĨāĻžāĻāϞ⧠2^N āϏāĻāĻā§āϝāĻ subset (mask) āϏāĻŽā§āĻāĻŦāĨ¤
Total States: 2^N Each State Process Time: O(N) Total Complexity: O(N Ã 2^N)
āϝā§āĻšā§āϤā§, 2^20 approx 10^6 āϤāĻžāĻ N = 20 āĻĒāϰā§āϝāύā§āϤ āĻāĻāĻž Efficiently āĻāϞāĻŦā§ āĻāĻŋāύā§āϤ⧠N > 25 āĻšāϞ⧠TLE āĻāĻžāĻā§āĻžāϰ āϏāĻŽā§āĻāĻžāĻŦāύāĻž āĻŦā§āĻļāĻŋ!
NHSPC, BdOI, IOI, APIO, IUPC, NCPC, ACM ICPC, Meta Hacker Cup, ACM ICFP, NGPC.
- NHSPC: For high school and college students, Polytechnic first & second year.
- BdOI, APIO, IOI: For school and college students. Language (IOI)-> âĸ For the past sessions (till 2015): C, C++, Pascal. âĸ But (Since 2017): C++, Java, Pascal.
- NCPC, IUPC, ICPC Dhaka Regional > ICPC Asia West > ICPC World Final - You can't participate in the same year: in more than 2 teams and "at more than 2 regionals.(for Asia)"
- Meta Hacker Cup: Open to everyone, consists of three rounds: Qualification, Elimination, and Final.
- ACM ICFP: Virtual coding contest, any programming language can be used.
- NGPC: For female students in high school, college, and university. Rules similar to ICPC.
Note: Google Code Jam, Hash Code, Kick Start, and TCO (Topcoder Open) contests are no longer held.
-
Turing Completeness: āϝā§āĻāĻžāύ⧠āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āϞā§āϝāĻžāĻāĻā§āϝāĻŧā§āĻ āĻĻāĻŋā§ā§ āϏāĻŦ āĻāĻŋāĻā§ Automate āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻŽāĻžāύ⧠āĻāĻāĻāĻŋ āϞā§āϝāĻžāĻāĻā§āϝāĻŧā§āĻ āĻĻāĻŋā§ā§ āϏāĻŦ āϧāϰāύā§āϰ āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻž āϝāĻžāϝāĻŧ (solve any complex computation problem if provided with enough memory & time)
-
Quine: Quine āύāĻŋāĻā§āϰ āĻā§āĻĄāĻā§ āĻāĻāĻāĻĒā§āĻ āĻšāĻŋāϏā§āĻŦā§ Print āĻāϰ⧠āĻāĻŦāĻ āĻāĻ āϧāϰāύā§āϰ āĻā§āĻĄ āϞā§āĻāĻž Challenging (takes no input & produces a copy of its own source code as its only output)
-
Algo-Trading: āϏā§āĻāĻ āĻŽāĻžāϰā§āĻā§āĻā§āϰ āĻāύā§āϝ āĻ ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽ āϞāĻŋāĻā§ āĻ āĻā§āĻŽā§āĻā§āĻĄ Trade āĻāϰāĻž āĻšā§āĨ¤ āĻāĻāĻžāύ⧠āĻā§āĻĄ Real-Time Data āύāĻŋā§ā§ āĻāĻāĻŋāϞ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϤ⧠āĻĒāĻžāϰā§, āϝāĻž āĻŽāĻžāύā§āώā§āϰ āĻā§ā§ā§ āĻ āύā§āĻ Fast. (possible to make money with algo-trading)
-
Sorting Algorithms Art: āĻāĻŋāĻā§ Sorting āĻ ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽ Like QuickSort, MergeSort āĻā§ āĻāĻāĻāĻŋ āĻāϰā§āĻāĻā§āĻžāϰā§āĻ āĻšāĻŋāϏā§āĻŦā§ Visualize āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻŋāĻā§āϝā§ā§āĻžāϞāĻžāĻāĻā§āĻļāύ⧠āĻ ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽā§āϰ āĻāĻāϰāĻŖ āĻāĻŋāĻāĻžāĻŦā§ Data Sort āĻāϰ⧠āϏā§āĻāĻž āĻĻā§āĻāĻž āϝāĻžāĻŦā§, Interesting āύāĻž āĻŦā§āϝāĻžāĻĒāĻžāϰāĻāĻž ??
-
Recursive Art: āϰāĻŋāĻāĻžāϰā§āϏāĻŋāĻ āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĻ Visual Art āϤā§āϰāĻŋ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤ Notable Example: Fractal Geometry(āĻĢā§āϰā§āϝāĻžāĻā§āĻāĻžāϞ āĻā§āϝāĻžāĻŽāĻŋāϤāĻŋ); āϝā§āĻāĻžāύ⧠āϞā§āĻĒā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻāĻāĻŋ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻŦāĻžā§āĻžāϤ⧠āĻŦāĻžā§āĻžāϤ⧠āĻāĻāĻŋāϞ āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ āϤā§āϰāĻŋ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤ â Base case: Simplest form of the problem that has a direct answer. â Recursive case: The step where you break the problem into a smaller, self-similar task.
-
Polyglot Programming: āϝā§āĻāĻžāύ⧠āĻāĻāĻāĻŋ āĻā§āĻĄ āĻāĻāĻžāϧāĻŋāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āϞā§āϝāĻžāĻāĻā§āϝāĻŧā§āĻā§ Run āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ (the same code can work properly in different languages)
Example: āĻāĻāĻāĻŋ āĻā§āĻĄ āĻāĻŽāύāĻāĻžāĻŦā§ āϞā§āĻāĻž āĻšāϤ⧠āĻĒāĻžāϰ⧠āϝāĻž Python, JS, Ruby āĻŦāĻž āĻ āύā§āϝāĻžāύā§āϝ āĻāĻžāώāĻžāϝāĻŧ āĻāĻāĻāĻāĻžāĻŦā§ Run āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ Interesting āύāĻž āĻŦā§āϝāĻžāĻĒāĻžāϰāĻāĻž?? â But: Polyglot āĻā§āĻĄ create āĻāϰāĻž āĻā§āĻŦ āĻāĻ āĻŋāύ āĻāĻžāϰāĻŖ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻāĻžāώāĻžāϰ Syntax & Structure Maintain āĻāϰāϤ⧠āĻšā§; āϝāĻž āϏāĻŦ āĻāĻžāώāĻžā§ āĻāĻāĻāĻāĻžāĻŦā§ Match āĻšāϝāĻŧ āύāĻžāĨ¤ āϤāĻžāĻ āĻāĻāĻžāϧāĻŋāĻ āĻāĻžāώāĻžā§ āĻā§āĻĄāĻāĻŋ Run āĻāϰāĻžāύā§āϰ āĻāύā§āϝ Carefully āĻā§āĻĄ āϞāĻŋāĻāϤ⧠āĻšā§āĨ¤
- Easter Eggs in Code: āĻ āύā§āĻ āϏāĻĢāĻāĻāϝāĻŧā§āϝāĻžāϰ āĻŦāĻž āĻā§āĻĄā§ āĻĄā§āĻā§āϞāĻĒāĻžāϰāϰāĻž āĻāĻā§āĻāĻž āĻāϰ⧠āĻāĻŋāĻā§ Secret/Funny āĻĢāĻŋāĻāĻžāϰ, āĻŽā§āϏā§āĻ āϰā§āĻā§ āĻĻā§āϝāĻŧāĨ¤ āĻāĻā§āϞ⧠āĻāϏāϞ⧠Surprise Plan!!
Examples:
7.1. Google āĻāϰ "Do a Barrel Roll": āĻā§āĻāϞ⧠āĻāĻāĻž āϞāĻŋāĻā§ āϏāĻžāϰā§āĻ āĻĻāĻŋāϞā§, āϏāĻžāϰā§āĻ āĻĒā§āĻāĻāĻŋ 360 āĻĄāĻŋāĻā§āϰāĻŋ āĻā§āϰ⧠āϝāĻžāϝāĻŧāĨ¤
7.2. Chrome Dino Game: āĻāύā§āĻāĻžāϰāύā§āĻ āĻāĻžāύā§āĻāĻļāύ āύāĻž āĻĨāĻžāĻāϞ⧠āĻāĻāĻāĻŋ āĻĄāĻžāĻāύā§āϏāϰ Game āĻĻā§āĻāĻž āϝāĻžāϝāĻŧ āϝāĻž Key Press āĻāϰāϞ⧠āĻļā§āϰ⧠āĻšāϝāĻŧāĨ¤
7.3. Excel 95 āĻāϰ "Flight Simulator": āĻāĻā§āϏā§āϞā§āϰ Old āĻāĻžāϰā§āϏāύ⧠Hidden Flight Simulator āĻāĻŋāϞāĨ¤
(these're mainly added as fun elements to entertain users, spark curiosity & encourage them to explore the software further)
-
Genetic Algorithms: āĻāĻ āĻ ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽ "Evolution(āĻĒā§āϰāĻā§āϤāĻŋāϰ āĻŦāĻŋāĻŦāϰā§āϤāύ)" āϧāĻžāϰāĻŖāĻž āĻĨā§āĻā§ āĻ āύā§āĻĒā§āϰāĻžāĻŖāĻŋāϤ, āϝāĻž "Survival of the Fittest" āϧāĻžāϰāĻŖāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ āϝā§āĻāĻžāύ⧠āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ āĻŦāĻŋāĻāĻŋāύā§āύ āϏāĻŽā§āĻāĻžāĻŦā§āϝ-āϏāĻŽāĻžāϧāĻžāύ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻŦā§āϏā§āĻ āĻāĻž āϏāĻŋāϞā§āĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāϰ āĻāĻāĻžāĻŦā§āĻ āĻāĻ āĻ ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽ āĻĒāϰā§āϝāĻžāϝāĻŧāĻā§āϰāĻŽā§ Better Solution āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāϤ⧠āĻĨāĻžāĻā§āĨ¤
-
Code Golf: āĻā§āĻĄāĻŋāĻ āĻĻāĻā§āώāϤāĻž āĻāĻŦāĻ āϏā§āĻāύāĻļā§āϞāϤāĻžāϰ āĻĒāϰā§āĻā§āώāĻž (āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āĻā§āϝāĻžāϞā§āĻā§āĻ); āϝā§āĻāĻžāύ⧠āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻžāĻ āĻāϰāϤā§, āϏāĻŦāĻā§ā§ā§ āĻāĻŽ āĻā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻžāĻāĻāĻŋ āĻāϰāĻžāϰ āĻā§āĻļāϞ āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāϤ⧠āĻšā§āĨ¤ â āĻā§āĻĄā§āϰ āĻĻā§āϰā§āĻā§āϝ āϝāϤ āĻāĻŽ āĻšāĻŦā§, āϤāϤ āĻŦā§āĻļāĻŋ āϏā§āĻā§āϰ āĻĒāĻžāĻā§āĻž āϝāĻžā§āĨ¤
-
Esoteric Programming Languages: āϝāĻž āĻŽāĻāĻžāϰ āĻāĻĻā§āĻĻā§āĻļā§āϝ⧠āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ, āĻāĻžāĻā§āϰ āĻāύā§āϝ āύāϝāĻŧāĨ¤ āĻāϏāĻŦ āĻāĻžāώāĻžāϰ āĻā§āĻĄ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻāĻŋāϞ, āĻ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻāĻŦāĻ āĻ āĻĻā§āĻā§āϤāĻāĻžāĻŦā§ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻā§āϞ⧠āĻā§āϝāĻžāϞā§āĻā§āĻ āĻā§āϰāĻšāĻŖāĻāĻžāϰ⧠āĻŦā§āϝāĻā§āϤāĻŋāĻĻā§āϰ āĻāύā§āϝ āϤā§āϰāĻŋ āĻāϰāĻž āĻšā§āĨ¤
Examples:
10.1. LOLCODE: āĻā§āĻĄ āϞā§āĻāĻžāϰ āϏā§āĻāĻžāĻāϞ "meme" āĻāϰ āĻŽāϤā§; āϝā§āĻāĻžāύ⧠āĻā§āĻĄ āĻšāĻžāϏā§āϝāĻāϰāĻāĻžāĻŦā§ āϞā§āĻāĻž āĻšā§āĨ¤
10.2. Shakespeare: āĻāĻ āĻāĻžāώāĻžāϝāĻŧ āĻāĻŽāύāĻāĻžāĻŦā§ āĻā§āĻĄ āϞā§āĻāĻž āĻšāϝāĻŧ; āϝā§āĻāĻžāύ⧠āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻāĻŋ āĻāĻāĻāĻŋ āύāĻžāĻāĻā§āϰ āϏā§āĻā§āϰāĻŋāĻĒā§āĻā§āϰ āĻŽāϤ⧠āĻĻā§āĻāĻžāϝāĻŧāĨ¤ āĻā§āĻĄā§āϰ āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ āĻāĻŽāύāĻāĻžāĻŦā§ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āĻšāϝāĻŧ āϝ⧠āϤāĻž āĻĻā§āĻāϤ⧠āĻ āύā§āĻāĻāĻž āĻļā§āĻā§āϏāĻĒāĻŋāϝāĻŧāĻžāϰā§āϰ āύāĻžāĻāĻā§āϰ āĻŽāϤ⧠āĻŽāύ⧠āĻšāϝāĻŧāĨ¤
10.3. Piet: āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āĻāĻžāώāĻž; āϝāĻž āĻāĻŦāĻŋāϰ āĻŽāϤ⧠āĻā§āĻĄ āϞā§āĻā§, āϝā§āĻāĻžāύ⧠āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻāĻŋ āĻĻā§āĻļā§āϝāĻŽāĻžāύāĻāĻžāĻŦā§ āĻāĻāϧāϰāύā§āϰ āĻāĻŦāĻŋāϰ āĻāĻāĻžāϰ⧠āĻĨāĻžāĻā§āĨ¤
- Concurrency & Parallelism: āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻāϝāĻŧā§ āĻāύāĻāĻžāϰā§āύā§āϏāĻŋ āĻāĻŦāĻ āĻĒā§āϝāĻžāϰāĻžāϞā§āϞāĻŋāĻāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠āĻāĻāϏāĻžāĻĨā§ āĻ āύā§āĻ āĻāĻžāĻ āĻāϰāĻž āϝāĻžāϝāĻŧ, āϝāĻž āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻāĻžāϰā§āϝāĻā§āώāĻŽāϤāĻž āĻ āύā§āĻ āĻŦāĻžā§āĻŋā§ā§ āĻĻā§ā§āĨ¤ â Concurrency's about "dealing with" lots of things at once. Parallelism's about "doing" lots of things at once.