diff --git a/README.md b/README.md index d5b339d..0d3555a 100644 --- a/README.md +++ b/README.md @@ -1,108 +1,114 @@ + # pytudes "An *étude* (a French word meaning *study*) is an instrumental musical composition, usually short, of considerable difficulty, and designed to provide practice material for perfecting a particular musical skill." — [Wikipedia](https://en.wikipedia.org/wiki/%C3%89tude) This project contains **pytudes**—Python programs, usually short, for perfecting programming skills. -Some are in Jupyter (IPython) notebooks, some in `.py` files. You can view the files here on github, or click the **NB** link to view them on [nbviewer](http://nbviewer.jupyter.org/) (which sometimes works better). If you want to *run* the notebooks, not just view them, you can clone the project, or run all the notebooks online by clicking this button: [![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/norvig/pytudes/master), or click the **DN** link to run each individual notebook on [deepnote](https://beta.deepnote.org/). +Some programs are in Jupyter (`.ipynb`) notebooks, some in `.py` files. For each notebook you can click on: +- [CO](https://colab.research.google.com) to **run** the file on Colab +- [DN](https://deepnote.com) to **run** the notebook on DeepNote +- [MY](https://mybinder.org) to **run** the notebook on MyBinder +- [NB](https://nbviewer.jupyter.org/) to **view** the notebook on NBViewer +- **The title** to **view** the notebook on github, and **download** or **fork** it. # Index of Jupyter (IPython) Notebooks - - -|Programming Examples| -|---| -|[Advent of Code 2018](ipynb/Advent-2018.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Advent-2018.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FAdvent-2018.ipynb)**
*Puzzle site with a coding puzzle each day for Advent 2018 .*| -|[Advent of Code 2017](ipynb/Advent%202017.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Advent%202017.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FAdvent%25202017.ipynb)**
*Puzzle site with a coding puzzle each day for Advent 2017.*| -|[Advent of Code 2016](ipynb/Advent%20of%20Code.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FAdvent%2520of%2520Code.ipynb)**
*Puzzle site with a coding puzzle each day for Advent 2016*.| -|[Project Euler Utilities](ipynb/Project%20Euler%20Utils.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Project%20Euler%20Utils.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FProject%2520Euler%2520Utils.ipynb)**
*My utility functions for the Project Euler problems, including `Primes` and `Factors`.*| -|[Translating English Sentences into Propositional Logic Statements](ipynb/PropositionalLogic.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/PropositionalLogic.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FPropositionalLogic.ipynb)**
*Automatically converting informal English sentences into formal Propositional Logic.*| -|[Beal's Conjecture Revisited](ipynb/Beal.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Beal.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FBeal.ipynb)**
*A search for counterexamples to Beal's Conjecture*| -|[WWW: Who Will Win (NBA Title)?](ipynb/WWW.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/WWW.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FWWW.ipynb)**
*Computing the probability of winning the NBA title, for my home town Warriors, or any other team.*| -|[Pickleball Tournament](ipynb/Pickleball.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Pickleball.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FPickleball.ipynb)**
*Scheduling a doubles tournament fairly and efficiently.*| -|[Dice Baseball](ipynb/Dice%20Baseball.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Dice%2520Baseball.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FDice%2520Baseball.ipynb)**
*Simulating baseball games.*| -|[Conway's Game of Life](ipynb/Life.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Life.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FLife.ipynb)**
*The cellular automata zero-player game.*| -|[A Chaos Game with Triangles](ipynb/Sierpinski.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Sierpinski.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FSierpinski.ipynb)**
*A surprising appearance of the Sierpinski triangle in a random walk between vertexes.*| -|[Generating Mazes](ipynb/Maze.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Maze.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FMaze.ipynb)**
*Make a maze by generating a random tree superimposed on a grid.*| -|[Weighing Twelve Balls](ipynb/TwelveBalls.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/TwelveBalls.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FTwelveBalls.ipynb)**
*A puzzle where you are given some billiard balls and a balance scale, and asked to find the one ball that is heavier or lighter, in a limited number of weighings.*| -|[Can't Stop](ipynb/Cant-Stop.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Cant-Stop.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCant-Stop.ipynb)**
*Optimal play in a dice board game.*| -|[Bike Speed Versus Grade](ipynb/Bike%20Speed%20versus%20Grade.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Bike%20Speed%20versus%20Grade.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FBike%2520Speed%2520versus%2520Grade.ipynb)**
*How fast can I bike as the route gets steeper?*| -|[Properly Ordered Card Hands](ipynb/Orderable%20Cards.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Orderable%20Cards.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FOrderable%2520Cards.ipynb)**
*Can you get your hand of cards into a nice order with just one move?*| -|[Tracking Trump: Electoral Votes](ipynb/Electoral%20Votes.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Electoral%20Votes.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FElectoral%20Votes.ipynb)**
*How many electoral votes would Trump get if he wins the state where he has positive net approval?*| +|Run|Programming Examples| +|---|--| +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Advent-2018.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FAdvent-2018.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Advent-2018.ipynb) | [Advent of Code 2018](/blob/master/ipynb/Advent-2018.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Advent%202017.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FAdvent%202017.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Advent%202017.ipynb) | [Advent of Code 2017](/blob/master/ipynb/Advent%202017.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Advent%20of%20Code.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FAdvent%20of%20Code.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Advent%20of%20Code.ipynb) | [Advent of Code 2016](/blob/master/ipynb/Advent%20of%20Code.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Project%20Euler%20Utils.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FProject%20Euler%20Utils.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Project%20Euler%20Utils.ipynb) | [Project Euler Utilities](/blob/master/ipynb/Project%20Euler%20Utils.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/PropositionalLogic.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FPropositionalLogic.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/PropositionalLogic.ipynb) | [Translating English Sentences into Propositional Logic Statements](/blob/master/ipynb/PropositionalLogic.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Beal.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FBeal.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Beal.ipynb) | [Beal's Conjecture Revisited](/blob/master/ipynb/Beal.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/WWW.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FWWW.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/WWW.ipynb) | [WWW: Who Will Win (NBA Title)?](/blob/master/ipynb/WWW.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Pickleball.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FPickleball.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Pickleball.ipynb) | [Pickleball Tournament](/blob/master/ipynb/Pickleball.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Dice%20Baseball.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FDice%20Baseball.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Dice%20Baseball.ipynb) | [Dice Baseball](/blob/master/ipynb/Dice%20Baseball.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Life.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FLife.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Life.ipynb) | [Conway's Game of Life](/blob/master/ipynb/Life.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Sierpinski.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FSierpinski.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Sierpinski.ipynb) | [A Chaos Game with Triangles](/blob/master/ipynb/Sierpinski.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Maze.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FMaze.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Maze.ipynb) | [Generating Mazes](/blob/master/ipynb/Maze.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/TwelveBalls.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FTwelveBalls.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/TwelveBalls.ipynb) | [Weighing Twelve Balls](/blob/master/ipynb/TwelveBalls.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Cant-Stop.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FCant-Stop.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Cant-Stop.ipynb) | [Can't Stop](/blob/master/ipynb/Cant-Stop.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Bike%20Speed%20versus%20Grade.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FBike%20Speed%20versus%20Grade.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Bike%20Speed%20versus%20Grade.ipynb) | [Bike Speed Versus Grade](/blob/master/ipynb/Bike%20Speed%20versus%20Grade.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Orderable%20Cards.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FOrderable%20Cards.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Orderable%20Cards.ipynb) | [Properly Ordered Card Hands](/blob/master/ipynb/Orderable%20Cards.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Electoral%20Votes.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FElectoral%20Votes.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Electoral%20Votes.ipynb) | [Tracking Trump: Electoral Votes](/blob/master/ipynb/Electoral%20Votes.ipynb) | |Logic and Number Puzzles| |---| -|[When is Cheryl's Birthday?](ipynb/Cheryl.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Cheryl.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCheryl.ipynb)**
*Solving the "Cheryl's Birthday" logic puzzle.*| -|[When Cheryl Met Eve: A Birthday Story](ipynb/Cheryl-and-Eve.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Cheryl-and-Eve.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCheryl-and-Eve.ipynb)**
*Inventing new puzzles in the Style of Cheryl's Birthday.*| -|[Riddler Lottery](ipynb/RiddlerLottery.ipynb) **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/RiddlerLottery.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FRiddlerLottery.ipynb)**
*Can you find what lottery number tickets these five friends picked?*| -|[How Many Soldiers Do You Need to Beat the Night King?](ipynb/NightKing.ipynb) **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/NightKing.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FNightKing.ipynb)**
*Investigasting a battle between the army of the dead and the army of the living.*| -|[The Devil and the Coin Flip Game](ipynb/Coin%20Flip.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Coin%20Flip.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCoin%2520Flip.ipynb)**
*How to beat the Devil at his own game.*| -|[The Puzzle of the Misanthropic Neighbors](ipynb/Mean%20Misanthrope%20Density.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Mean%20Misanthrope%20Density.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FMean%2520Misanthrope%2520Density.ipynb)**
*How crowded will this neighborhood be, if nobody wants to live next door to anyone else?*| -|[Four 4s, Five 5s, and Countdown to 2016](ipynb/Countdown.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Countdown.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCountdown.ipynb)**
*Solving the equation 10 _ 9 _ 8 _ 7 _ 6 _ 5 _ 4 _ 3 _ 2 _ 1 = 2016. From an Alex Bellos puzzle.*| -|[Sicherman Dice](ipynb/Sicherman%20Dice.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Sicherman%20Dice.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FSicherman%2520Dice.ipynb)**
*Find a pair of dice that is like a regular pair of dice, only different.*| -|[Sol Golomb's Rectangle Puzzle](ipynb/Golomb-Puzzle.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Golomb-Puzzle.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FGolomb-Puzzle.ipynb)**
*A Puzzle involving placing rectangles of different sizes inside a square.*| -|[Cryptarithmetic](ipynb/Cryptarithmetic.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Cryptarithmetic.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCryptarithmetic.ipynb)**
*Substitute digits for letters and make NUM + BER = PLAY.*| -|[The Riddler: Battle Royale](ipynb/Riddler%20Battle%20Royale.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Riddler%20Battle%20Royale.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FRiddler%2520Battle%2520Royale.ipynb)**
*A puzzle involving allocating your troops and going up against an opponent.*| +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Cheryl.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FCheryl.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Cheryl.ipynb) | [When is Cheryl's Birthday?](/blob/master/ipynb/Cheryl.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Cheryl-and-Eve.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FCheryl-and-Eve.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Cheryl-and-Eve.ipynb) | [When Cheryl Met Eve: A Birthday Story](/blob/master/ipynb/Cheryl-and-Eve.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/RiddlerLottery.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FRiddlerLottery.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/RiddlerLottery.ipynb) | [Riddler Lottery](/blob/master/ipynb/RiddlerLottery.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/NightKing.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FNightKing.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/NightKing.ipynb) | [How Many Soldiers Do You Need to Beat the Night King?](/blob/master/ipynb/NightKing.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Coin%20Flip.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FCoin%20Flip.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Coin%20Flip.ipynb) | [The Devil and the Coin Flip Game](/blob/master/ipynb/Coin%20Flip.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Mean%20Misanthrope%20Density.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FMean%20Misanthrope%20Density.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Mean%20Misanthrope%20Density.ipynb) | [The Puzzle of the Misanthropic Neighbors](/blob/master/ipynb/Mean%20Misanthrope%20Density.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Countdown.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FCountdown.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Countdown.ipynb) | [Four 4s, Five 5s, and Countdown to 2016](/blob/master/ipynb/Countdown.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Sicherman%20Dice.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FSicherman%20Dice.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Sicherman%20Dice.ipynb) | [Sicherman Dice](/blob/master/ipynb/Sicherman%20Dice.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Golomb-Puzzle.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FGolomb-Puzzle.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Golomb-Puzzle.ipynb) | [Sol Golomb's Rectangle Puzzle](/blob/master/ipynb/Golomb-Puzzle.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Cryptarithmetic.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FCryptarithmetic.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Cryptarithmetic.ipynb) | [Cryptarithmetic](/blob/master/ipynb/Cryptarithmetic.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Riddler%20Battle%20Royale.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FRiddler%20Battle%20Royale.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Riddler%20Battle%20Royale.ipynb) | [The Riddler: Battle Royale](/blob/master/ipynb/Riddler%20Battle%20Royale.ipynb) | -|Word Games| -|---| -|[Spelling Bee](ipynb/SpellingBee.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/SpellingBee.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FSpellingBee.ipynb)**
*Find the highest-scoring board for the NY Times Spelling Bee puzzle.*| -|[Boggle / Inverse Boggle](ipynb/Boggle.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Boggle.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FBoggle.ipynb)**
*Find all the words on a Boggle board; then find a board with a lot of words.*| -|[Portmantout Words](ipynb/Portmantout.ipynb) **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Portmantout.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FPortmantout.ipynb)**
*Find a long word that squishes together a bunch of words.*| -|[xkcd 1970: Name Dominoes](ipynb/xkcd-Name-Dominoes.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/xkcd-Name-Dominoes.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fxkcd-Name-Dominoes.ipynb)**
*Lay out dominoes legally; the dominoes have people names, not numbers.*| -|[Ghost](ipynb/Ghost.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Ghost.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FGhost.ipynb)**
*The word game Ghost (add letters, try to avoid making a word).*| -|[World's Longest Palindrome](ipynb/pal3.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/pal3.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fpal3.ipynb)**
*Searching for a long Panama-style palindrome, this time letter-by-letter.*| -|[Refactoring a Crossword Game Program](ipynb/Scrabble.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Scrabble.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FScrabble.ipynb)**
*Refactoring the Scrabble / Word with Friends game from Udacity 212.*| -|[xkcd 1313: Regex Golf](ipynb/xkcd1313.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/xkcd1313.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fxkcd1313.ipynb)**
*Find the smallest regular expression; inspired by Randall Monroe.*| -|[xkcd 1313: Regex Golf (Part 2: Infinite Problems)](ipynb/xkcd1313-part2.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/xkcd1313-part2.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fxkcd1313-part2.ipynb)**
*Regex Golf: better, faster, funner. With Stefan Pochmann.*| -|[Let's Code About Bike Locks](ipynb/Fred%20Buns.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Fred%20Buns.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FFred%2520Buns.ipynb)**
*A tale of a bicycle combination lock that uses letters instead of digits. Inspired by Bike Snob NYC.*| -|[Gesture Typing](ipynb/Gesture%20Typing.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Gesture%20Typing.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FGesture%2520Typing.ipynb)**
*What word has the longest path on a gesture-typing smartphone keyboard?*| -|[How to Do Things with Words, or Statistical Natural Language Processing in Python](ipynb/How%20to%20Do%20Things%20with%20Words.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/How%20to%20Do%20Things%20with%20Words.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FHow%2520to%2520Do%2520Things%2520with%2520Words.ipynb)**
*Spelling Correction, Secret Codes, Word Segmentation, and more: grab your bag of words.*| +|Run|Word Games| +|---|--| +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/SpellingBee.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FSpellingBee.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/SpellingBee.ipynb) | [Spelling Bee](/blob/master/ipynb/SpellingBee.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/ElementSpelling.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FElementSpelling.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/ElementSpelling.ipynb) | [Chemical Element Spelling](/blob/master/ipynb/ElementSpelling.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Boggle.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FBoggle.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Boggle.ipynb) | [Boggle / Inverse Boggle](/blob/master/ipynb/Boggle.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Portmantout.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FPortmantout.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Portmantout.ipynb) | [Portmantout Words](/blob/master/ipynb/Portmantout.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/xkcd-Name-Dominoes.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2Fxkcd-Name-Dominoes.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/xkcd-Name-Dominoes.ipynb) | [xkcd 1970: Name Dominoes](/blob/master/ipynb/xkcd-Name-Dominoes.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Ghost.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FGhost.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Ghost.ipynb) | [Ghost](/blob/master/ipynb/Ghost.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/pal3.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2Fpal3.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/pal3.ipynb) | [World's Longest Palindrome](/blob/master/ipynb/pal3.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Scrabble.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FScrabble.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Scrabble.ipynb) | [Refactoring a Crossword Game Program](/blob/master/ipynb/Scrabble.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/xkcd1313.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2Fxkcd1313.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/xkcd1313.ipynb) | [xkcd 1313: Regex Golf](/blob/master/ipynb/xkcd1313.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/xkcd1313-part2.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2Fxkcd1313-part2.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/xkcd1313-part2.ipynb) | [xkcd 1313: Regex Golf (Part 2: Infinite Problems)](/blob/master/ipynb/xkcd1313-part2.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Fred%20Buns.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FFred%20Buns.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Fred%20Buns.ipynb) | [Let's Code About Bike Locks](/blob/master/ipynb/Fred%20Buns.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Gesture%20Typing.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FGesture%20Typing.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Gesture%20Typing.ipynb) | [Gesture Typing](/blob/master/ipynb/Gesture%20Typing.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/How%20to%20Do%20Things%20with%20Words.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FHow%20to%20Do%20Things%20with%20Words.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/How%20to%20Do%20Things%20with%20Words.ipynb) | [How to Do Things with Words, or Statistical Natural Language Processing in Python](/blob/master/ipynb/How%20to%20Do%20Things%20with%20Words.ipynb) | -|Math Concepts| -|---| -|[A Concrete Introduction to Probability](ipynb/Probability.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Probability.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FProbability.ipynb)**
*Code and examples of the basic principles of Probability Theory.*| -|[Probability, Paradox, and the Reasonable Person Principle](ipynb/ProbabilityParadox.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/ProbabilityParadox.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FProbabilityParadox.ipynb)**
*Some classic paradoxes in Probability Theory, and how to think about disagreements.*| -|[Estimating Probabilities with Simulations](ipynb/ProbabilitySimulation.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/ProbabilitySimulation.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FProbabilitySimulation.ipynb)**
*When the sample space is too complex, simulations can estimate probabilities.*| -|[Symbolic Algebra, Simplification, and Differentiation](ipynb/Differentiation.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Differentiation.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FDifferentiation.ipynb)**
*A computer algebra system that manipulates expressions, including symbolic differentiation.*| -|[Economics Simulation](ipynb/Economics.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Economics.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FEconomics.ipynb)**
*A simulation of a simple economic game.*| -|[How to Count Things](ipynb/How%20To%20Count%20Things.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/How%20To%20Count%20Things.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FHow%2520To%2520Count%2520Things.ipynb)**
*Combinatorial math: how to count how many things there are, when there are a lot of them.*| -|[Pairing Socks](ipynb/Socks.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Socks.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FSocks.ipynb)**
*What is the probability that you will be able to pair up socks as you randomly pull them out of the dryer?*| -|[Euler's Sum of Powers Conjecture](ipynb/Euler's%20Conjecture.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Euler's%20Conjecture.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FEuler's%2520Conjecture.ipynb)**
*Solving a 200-year-old puzzle by finding integers that satisfy a5 + b5 + c5 + d5 = e5.*| +|Run|Math Concepts| +|--|--| +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Probability.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FProbability.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Probability.ipynb) | [A Concrete Introduction to Probability](/blob/master/ipynb/Probability.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/ProbabilityParadox.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FProbabilityParadox.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/ProbabilityParadox.ipynb) | [Probability, Paradox, and the Reasonable Person Principle](/blob/master/ipynb/ProbabilityParadox.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/ProbabilitySimulation.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FProbabilitySimulation.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/ProbabilitySimulation.ipynb) | [Estimating Probabilities with Simulations](/blob/master/ipynb/ProbabilitySimulation.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Differentiation.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FDifferentiation.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Differentiation.ipynb) | [Symbolic Algebra, Simplification, and Differentiation](/blob/master/ipynb/Differentiation.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Economics.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FEconomics.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Economics.ipynb) | [Economics Simulation](/blob/master/ipynb/Economics.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/How%20To%20Count%20Things.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FHow%20To%20Count%20Things.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/How%20To%20Count%20Things.ipynb) | [How to Count Things](/blob/master/ipynb/How%20To%20Count%20Things.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Socks.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FSocks.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Socks.ipynb) | [Pairing Socks](/blob/master/ipynb/Socks.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Euler's%20Conjecture.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FEuler's%20Conjecture.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Euler's%20Conjecture.ipynb) | [Euler's Sum of Powers Conjecture](/blob/master/ipynb/Euler's%20Conjecture.ipynb) | -|Computer Science Algorithms and Concepts| -|---| -|[BASIC Interpreter](ipynb/BASIC.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/BASIC.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FBASIC.ipynb)**
*How to write an interpreter for the BASIC programming language.*| -|[Bad Grade, Good Experience](ipynb/Snobol.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Snobol.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FSnobol.ipynb)**
*As a student, did you ever get a bad grade on a programming assignment? (Snobol, Concordance)*| -|[The Convex Hull Problem](ipynb/Convex%20Hull.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Convex%20Hull.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FConvex%2520Hull.ipynb)**
*A classic Computer Science Algorithm.*| -|[The Traveling Salesperson Problem](ipynb/TSP.ipynb)    **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/TSP.ipynb)**, **[DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FTSP.ipynb)**
*Another of the classics.*| +|Run|Computer Science Algorithms and Concepts| +|--|--| +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Convex%20Hull.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FConvex%20Hull.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Convex%20Hull.ipynb) | [The Convex Hull Problem](/blob/master/ipynb/Convex%20Hull.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/TSP.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FTSP.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/TSP.ipynb) | [The Traveling Salesperson Problem](/blob/master/ipynb/TSP.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/StableMatching.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FStableMatching.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/StableMatching.ipynb) | [The Stable Matching Problem](/blob/master/ipynb/StableMatching.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/BASIC.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FBASIC.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/BASIC.ipynb) | [BASIC Interpreter](/blob/master/ipynb/BASIC.ipynb) | +| [CO](https://colab.research.google.com/github/googlecolab/colabtools//blob/master/ipynb/Snobol.ipynb) [DN](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2F%2Fblob%2Fmaster%2Fipynb%2FSnobol.ipynb) [MY](https://mybinder.org/v2/gh/norvig/pytudes/master) [NB](https://nbviewer.jupyter.org/github/norvig/pytudes//blob/master/ipynb/Snobol.ipynb) | [Bad Grade, Good Experience](/blob/master/ipynb/Snobol.ipynb) | # Index of Python Files | **File** | **Description** | **Documentation**| |:--------|:-------------------|----| -|[SET.py](https://github.com/norvig/pytudes/blob/master/py/SET.py)|Analyze the card game [SET](http://www.setgame.com/set).|[SET.html](http://norvig.com/SET.html)| -|[beal.py](https://github.com/norvig/pytudes/blob/master/py/beal.py)|Search for counterexamples to Beal's Conjecture|[beal.html](http://norvig.com/beal.html) -|[docex.py](https://github.com/norvig/pytudes/blob/master/py/docex.py)|A framework for running unit tests, similar to `doctest`.| -|[ibol.py](https://github.com/norvig/pytudes/blob/master/py/ibol.py)|An Exercise in Species Barcoding|[ibol.html](http://norvig.com/ibol.html) -|[lettercount.py](https://github.com/norvig/pytudes/blob/master/py/lettercount.py)|Convert Google Ngram Counts to Letter Counts|[mayzner.html](http://norvig.com/mayzner.html) -|[lis.py](https://github.com/norvig/pytudes/blob/master/py/lis.py)|Lisp Interpreter written in Python|[lispy.html](http://norvig.com/lispy.html) -|[lispy.py](https://github.com/norvig/pytudes/blob/master/py/lispy.py)|Even Better Lisp Interpreter written in Python|[lispy2.html](http://norvig.com/lispy2.html) -|[lispytest.py](https://github.com/norvig/pytudes/blob/master/py/lispytest.py)|Tests for Lisp Interpreters| -|[pal.py](https://github.com/norvig/pytudes/blob/master/py/pal.py)|Find long palindromes|[palindrome.html](http://norvig.com/palindrome.html) -|[pal2.py](https://github.com/norvig/pytudes/blob/master/py/pal2.py)|Find longer palindromes|[palindrome.html](http://norvig.com/palindrome.html) -|[pal3.py](https://github.com/norvig/pytudes/blob/master/py/pal3.py)|Find even longer palindromes|[palindrome.html](http://norvig.com/palindrome.html) -|[py2html.py](https://github.com/norvig/pytudes/blob/master/py/py2html.py)|Pretty-printer to format Python files as html| -|[spell.py](https://github.com/norvig/pytudes/blob/master/py/spell.py)|Spelling corrector|[spell-correct.html](http://norvig.com/spell-correct.html) -|[sudoku.py](https://github.com/norvig/pytudes/blob/master/py/sudoku.py)|Program to solve sudoku puzzles|[sudoku.html](http://norvig.com/sudoku.html) -|[testaccum.py](https://github.com/norvig/pytudes/blob/master/py/testaccum.py)|Tests for my failed Python `accumulation display` proposal|[pyacc.html](http://norvig.com/pyacc.html) -|[yaptu.py](https://github.com/norvig/pytudes/blob/master/py/yaptu.py)|Yet Another Python Templating Utility| +|[SET.py](/blob/master/py/SET.py)|*Analyze the card game SET*|[documentation](http://norvig.com/SET.html)| +|[beal.py](/blob/master/py/beal.py)|*Search for counterexamples to Beal's Conjecture*|[documentation](http://norvig.com/beal.html)| +|[docex.py](/blob/master/py/docex.py)|*A framework for running unit tests, similar to `doctest`*|| +|[ibol.py](/blob/master/py/ibol.py)|*An Exercise in Species Barcoding*|[documentation](http://norvig.com/ibol.html)| +|[lettercount.py](/blob/master/py/lettercount.py)|*Convert Google Ngram Counts to Letter Counts*|[documentation](http://norvig.com/mayzner.html)| +|[lis.py](/blob/master/py/lis.py)|*Lisp Interpreter written in Python*|[documentation](http://norvig.com/lispy.html)| +|[lispy.py](/blob/master/py/lispy.py)|*Even Better Lisp Interpreter written in Python*|[documentation](http://norvig.com/lispy2.html)| +|[lispytest.py](/blob/master/py/lispytest.py)|*Tests for Lisp Interpreters*|| +|[pal.py](/blob/master/py/pal.py)|*Find long palindromes*|[documentation](http://norvig.com/palindrome.html)| +|[pal2.py](/blob/master/py/pal2.py)|*Find longer palindromes*|[documentation](http://norvig.com/palindrome.html)| +|[pal3.py](/blob/master/py/pal3.py)|*Find even longer palindromes*|[documentation](http://norvig.com/palindrome.html)| +|[py2html.py](/blob/master/py/py2html.py)|*Pretty-printer to format Python files as html*|| +|[spell.py](/blob/master/py/spell.py)|*Spelling corrector*|[documentation](http://norvig.com/spell-correct.html)| +|[sudoku.py](/blob/master/py/sudoku.py)|*Program to solve sudoku puzzles*|[documentation](http://norvig.com/sudoku.html)| +|[testaccum.py](/blob/master/py/testaccum.py)|*Tests for my failed Python `accumulation display` proposal*|[documentation](http://norvig.com/pyacc.html)| +|[yaptu.py](/blob/master/py/yaptu.py)|*Yet Another Python Templating Utility*|| # Etudes for Programmers -I got the idea for the "etudes" part of the name from +I got the idea for the *"etudes"* part of the name from this [1978 book](https://books.google.com/books/about/Etudes_for_programmers.html?id=u89WAAAAMAAJ) -by [Charles Wetherell](http://demin.ws/blog/english/2012/08/25/interview-with-charles-wetherell/) +by [Charles Wetherell](http://demin.ws/blog/english/2012/08/25/interview-with-charles-wetherell) that was very influential to me when I was first learning to program. ![](https://images-na.ssl-images-amazon.com/images/I/51ZnZH29dvL._SX394_BO1,204,203,200_.jpg)