Raymond Hettinger - Modern solvers: Problems well-defined are problems solved - PyCon 2019

Speaker: Raymond Hettinger Every programmer should learn to use solvers, tools that reason directly from a description of a problem to its solution. Tools like AlphaZero can formulate winning strategies for games given only a description of the rules of the game. For certain classes of problems, we really can just let the computer do the work. In this talk, we learn principles, techniques, and multiple examples for three solvers available in Python. The first tool is a generic puzzle-solving framework that employs tree search strategies. We apply it to a simple sequencing problem and then to a harder sliding-block puzzle. Next, we'll look at the solver code to learn how it works. I'll also show an essential optimization technique and how to humanize the output. We demonstrate our skills by solving another famous puzzle. The second tool is called a SAT solver. It is one of the miracles of the 21st century. From first principles, I'll show you what problems it solves and the way problems need to be described for modules like *PycoSAT*. I'll provide helper functions to humanize our interactions with this great tool. Then, we'll demonstrate our skills by creating a Sudoku solver and a readable logic problem solver. The third tool is the ""multi-armed bandit"". It is a generic reinforcement learning algorithm that is easy to learn, powerful, and applicable to a broad class of problems. We apply it to winning rock-paper-scissors using pattern recognition. Lastly, I'll summarize DeepMind's paper on AlphaZero which was published in the December 2018 edition of *Science*. This gives us hints at the full potential of these techniques. Pure Python source code and examples are provided for all of the tools. Slides can be found at: https://rhettinger.github.io

Anthony Shaw - Wily Python: Writing simpler and more maintainable Python - PyCon 2019
▶︎

Anthony Shaw - Wily Python: Writing simpler and more maintainable Python - PyCon 2019

Structural Pattern Matching in the Real World - Raymond Hettinger
▶︎

Structural Pattern Matching in the Real World - Raymond Hettinger

Jake VanderPlas - Performance Python: Seven Strategies for Optimizing Your Numerical Code
▶︎

Jake VanderPlas - Performance Python: Seven Strategies for Optimizing Your Numerical Code

David Wolever - Floats are Friends: making the most of IEEE754.00000000000000002 - PyCon 2019
▶︎

David Wolever - Floats are Friends: making the most of IEEE754.00000000000000002 - PyCon 2019

Raymond Hettinger   Modern Python Dictionaries    A confluence of a dozen great ideas   PyCon 2017
▶︎

Raymond Hettinger Modern Python Dictionaries A confluence of a dozen great ideas PyCon 2017

Keynote - Preventing, Finding, and Fixing Bugs On a Time Budget | Raymond Hettinger @ PyBay2018
▶︎

Keynote - Preventing, Finding, and Fixing Bugs On a Time Budget | Raymond Hettinger @ PyBay2018

Raymond Hettinger - Dataclasses:  The code generator to end all code generators - PyCon 2018
▶︎

Raymond Hettinger - Dataclasses: The code generator to end all code generators - PyCon 2018

Simon Willison - Instant serverless APIs, powered by SQLite - PyCon 2019
▶︎

Simon Willison - Instant serverless APIs, powered by SQLite - PyCon 2019

Rachael Tatman - Put down the deep learning: When not to use neural networks and what to do instead
▶︎

Rachael Tatman - Put down the deep learning: When not to use neural networks and what to do instead

Raymond Hettinger: Numerical Marvels Inside Python - Keynote | PyData Tel Aviv 2022
▶︎

Raymond Hettinger: Numerical Marvels Inside Python - Keynote | PyData Tel Aviv 2022

Data Structure and Algorithm Patterns for LeetCode Interviews – Tutorial
▶︎

Data Structure and Algorithm Patterns for LeetCode Interviews – Tutorial

Jake VanderPlas - How to Think about Data Visualization - PyCon 2019
▶︎

Jake VanderPlas - How to Think about Data Visualization - PyCon 2019

The Mental Game of Python - Raymond Hettinger [synced version]
▶︎

The Mental Game of Python - Raymond Hettinger [synced version]

Reuven M. Lerner - Practical decorators - PyCon 2019
▶︎

Reuven M. Lerner - Practical decorators - PyCon 2019

Eric Snow - to GIL or not to GIL: the Future of Multi-Core (C)Python - PyCon 2019
▶︎

Eric Snow - to GIL or not to GIL: the Future of Multi-Core (C)Python - PyCon 2019

Raymond Hettinger - Super considered super! - PyCon 2015
▶︎

Raymond Hettinger - Super considered super! - PyCon 2015

Pro tips for writing great unit tests - Raymond Hettinger
▶︎

Pro tips for writing great unit tests - Raymond Hettinger

Dustin Ingram - PEP 572: The Walrus Operator - PyCon 2019
▶︎

Dustin Ingram - PEP 572: The Walrus Operator - PyCon 2019

Ariel Ortiz - The Perils of Inheritance: Why We Should Prefer Composition - PyCon 2019
▶︎

Ariel Ortiz - The Perils of Inheritance: Why We Should Prefer Composition - PyCon 2019

Elana Hashman - The Black Magic of Python Wheels - PyCon 2019
▶︎

Elana Hashman - The Black Magic of Python Wheels - PyCon 2019