The Push_swap project was an enlightening journey into the realm of algorithm optimization, particularly highlighting how optimization criteria can lead to counterintuitive strategies. Tasked with sorting integers on a stack using the least number of actions, I delved deep into various sorting algorithms, each with its own set of complexities and efficiencies.

What stood out most profoundly was the realization that the most efficient solution isn't always the most obvious one. Depending on the criteria—whether it's the number of operations, the computational complexity, or memory usage—optimization took on different forms. This project taught me the critical lesson that optimization is not a one-size-fits-all solution but a nuanced challenge that requires understanding the specific constraints and goals of the task at hand.

In developing the push_swap program, I not only refined my skills in C and algorithmic thinking but also learned to approach problem-solving with flexibility, adapting my strategies to meet the project's unique optimization criteria. This experience was a powerful reminder of the intricate dance between theory and practice in the world of computer science.