diff --git a/README.md b/README.md index 8246e62..e00eb54 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,23 @@ -
Peter Norvig
MIT License
2015-2020
+
Peter Norvig +
MIT License
2015-2020
# 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) +"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 particular programming skills. -Some programs are in Jupyter (`.ipynb`) notebooks, some in `.py` files. For each notebook you can: +This project contains **pytudes**—Python programs, usually short, for perfecting particular programming skills. + +# Who is this for? + +To continue the musical analogy, some people think of programming like [Spotify](http://spotify.com): they want to know how to install the app, find a good playlist, and hit the "play" button; after that they don't want to think about it. There are plenty of other tutorials that will tell you how to do the equivalent of that for various programming tasks—this one won't help. But if you think of programming like playing the piano—a craft that can take [years](https://norvig.com/21-days.html) to perfect—then I hope this collection can help. + + +# Index of Jupyter (IPython) Notebooks + +For each notebook you can: - Click on [c](https://colab.research.google.com) to **run** the notebook on Colab - Click on [d](https://deepnote.com) to **run** the notebook on DeepNote - Click on [m](https://mybinder.org) to **run** the notebook on MyBinder @@ -16,42 +26,39 @@ Some programs are in Jupyter (`.ipynb`) notebooks, some in `.py` files. For each - Hover over the title to **view** a description. -# Index of Jupyter (IPython) Notebooks - - |Run|Year|Programming Examples| -|---|----|---| -| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Advent-2020.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FAdvent-2020.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FAdvent-2020.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Advent-2020.ipynb) | 2020 | Advent of Code 2020 | +|---|---|---| +| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Advent-2020.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FAdvent-2020.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FAdvent-2020.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Advent-2020.ipynb) | 2020 | Advent of Code 2020 | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Advent-2018.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FAdvent-2018.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FAdvent-2018.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Advent-2018.ipynb) | 2018 | Advent of Code 2018 | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Advent%202017.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FAdvent%202017.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FAdvent%202017.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Advent%202017.ipynb) | 2017 | Advent of Code 2017 | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FAdvent%20of%20Code.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FAdvent%20of%20Code.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb) | 2016 | Advent of Code 2016 | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Beal.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FBeal.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FBeal.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Beal.ipynb) | 2018 | Beal's Conjecture Revisited | -| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Bike%20Speed%20versus%20Grade.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FBike%20Speed%20versus%20Grade.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FBike%20Speed%20versus%20Grade.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Bike%20Speed%20versus%20Grade.ipynb) | 2020 | Bicycling Statistics | +| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Bike%20Speed%20versus%20Grade.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FBike%20Speed%20versus%20Grade.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FBike%20Speed%20versus%20Grade.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Bike%20Speed%20versus%20Grade.ipynb) | 2020 | Bicycling Statistics | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Cant-Stop.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCant-Stop.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FCant-Stop.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Cant-Stop.ipynb) | 2018 | Can't Stop | -| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Sierpinski.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FSierpinski.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FSierpinski.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Sierpinski.ipynb) | 2019 | Chaos with Triangles | +| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Sierpinski.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FSierpinski.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FSierpinski.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Sierpinski.ipynb) | 2019 | Chaos with Triangles | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Life.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FLife.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FLife.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Life.ipynb) | 2017 | Conway's Game of Life | -| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Maze.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FMaze.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FMaze.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Maze.ipynb) | 2020 | Generating and Solving Mazes | -| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/PhotoFocalLengths.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FPhotoFocalLengths.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FPhotoFocalLengths.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/PhotoFocalLengths.ipynb) | 2020 | Photo Focal Lengths | +| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Maze.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FMaze.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FMaze.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Maze.ipynb) | 2020 | Generating and Solving Mazes | +| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/PhotoFocalLengths.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FPhotoFocalLengths.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FPhotoFocalLengths.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/PhotoFocalLengths.ipynb) | 2020 | Photo Focal Lengths | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Pickleball.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FPickleball.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FPickleball.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Pickleball.ipynb) | 2018 | Pickleball Tournament | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Project%20Euler%20Utils.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FProject%20Euler%20Utils.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FProject%20Euler%20Utils.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Project%20Euler%20Utils.ipynb) | 2017 | Project Euler Utilities | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Electoral%20Votes.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FElectoral%20Votes.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FElectoral%20Votes.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Electoral%20Votes.ipynb) | 2020 | Tracking Trump: Electoral Votes | |Run|Year|Logic and Number Puzzles| -|---|----|---| +|---|---|---| | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Cryptarithmetic.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCryptarithmetic.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FCryptarithmetic.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Cryptarithmetic.ipynb) | 2014 | Cryptarithmetic | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Euler's%20Conjecture.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FEuler's%20Conjecture.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FEuler's%20Conjecture.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Euler's%20Conjecture.ipynb) | 2018 | Euler's Sum of Powers Conjecture | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Countdown.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCountdown.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FCountdown.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Countdown.ipynb) | 2020 | Four 4s, Five 5s, and Countdowns | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Socks.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FSocks.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FSocks.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Socks.ipynb) | 2019 | Pairing Socks | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Sicherman%20Dice.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FSicherman%20Dice.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FSicherman%20Dice.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Sicherman%20Dice.ipynb) | 2018 | Sicherman Dice | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Golomb-Puzzle.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FGolomb-Puzzle.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FGolomb-Puzzle.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Golomb-Puzzle.ipynb) | 2014 | Sol Golomb's Rectangle Puzzle | -| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/SquareSum.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FSquareSum.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FSquareSum.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/SquareSum.ipynb) | 2020 | Square Sum Puzzle | +| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/SquareSum.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FSquareSum.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FSquareSum.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/SquareSum.ipynb) | 2020 | Square Sum Puzzle | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Cheryl.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCheryl.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FCheryl.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Cheryl.ipynb) | 2020 | When is Cheryl's Birthday? (new: Mad Cheryl) | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Cheryl-and-Eve.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCheryl-and-Eve.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FCheryl-and-Eve.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Cheryl-and-Eve.ipynb) | 2015 | When Cheryl Met Eve: A Birthday Story | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/xkcd1313.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fxkcd1313.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2Fxkcd1313.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/xkcd1313.ipynb) | 2015 | xkcd 1313: Regex Golf | -| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/xkcd1313-part2.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fxkcd1313-part2.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2Fxkcd1313-part2.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/xkcd1313-part2.ipynb) | 2015 | xkcd 1313: Regex Golf (Part 2: Infinite Problems) | +| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/xkcd1313-part2.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fxkcd1313-part2.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2Fxkcd1313-part2.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/xkcd1313-part2.ipynb) | 2015 | xkcd 1313: Regex Golf (Part 2: Infinite Problems) | |Run|Year|The Riddler (from 538)| -|---|----|---| +|---|---|---| | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Riddler%20Battle%20Royale.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FRiddler%20Battle%20Royale.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FRiddler%20Battle%20Royale.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Riddler%20Battle%20Royale.ipynb) | 2017 | Battle Royale | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/CrossProduct.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCrossProduct.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FCrossProduct.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/CrossProduct.ipynb) | 2021 | CrossProduct | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/flipping.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fflipping.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2Fflipping.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/flipping.ipynb) | 2020 | Flipping Cards; A Guessing Game | @@ -64,7 +71,7 @@ Some programs are in Jupyter (`.ipynb`) notebooks, some in `.py` files. For each | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/war.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fwar.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2Fwar.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/war.ipynb) | 2020 | War. What is it Good For? | |Run|Year|Word Puzzles| -|---|----|---| +|---|---|---| | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Boggle.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FBoggle.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FBoggle.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Boggle.ipynb) | 2020 | Boggle / Inverse Boggle | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/ElementSpelling.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FElementSpelling.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FElementSpelling.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/ElementSpelling.ipynb) | 2020 | Chemical Element Spelling | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/equilength-numbers.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fequilength-numbers.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2Fequilength-numbers.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/equilength-numbers.ipynb) | 2020 | Equilength Numbers: FOUR = 4 | @@ -81,33 +88,33 @@ Some programs are in Jupyter (`.ipynb`) notebooks, some in `.py` files. For each | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/xkcd-Name-Dominoes.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fxkcd-Name-Dominoes.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2Fxkcd-Name-Dominoes.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/xkcd-Name-Dominoes.ipynb) | 2018 | xkcd 1970: Name Dominoes | |Run|Year|Probability and Uncertainty| -|---|----|---| +|---|---|---| | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Probability.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FProbability.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FProbability.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Probability.ipynb) | 2018 | A Concrete Introduction to Probability | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/ProbabilityParadox.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FProbabilityParadox.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FProbabilityParadox.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/ProbabilityParadox.ipynb) | 2016 | Probability, Paradox, and the Reasonable Person Principle | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/ProbabilitySimulation.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FProbabilitySimulation.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FProbabilitySimulation.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/ProbabilitySimulation.ipynb) | 2020 | Estimating Probabilities with Simulations | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Coin%20Flip.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FCoin%20Flip.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FCoin%20Flip.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Coin%20Flip.ipynb) | 2019 | The Devil and the Coin Flip Game | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Dice%20Baseball.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FDice%20Baseball.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FDice%20Baseball.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Dice%20Baseball.ipynb) | 2020 | Dice Baseball | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Economics.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FEconomics.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FEconomics.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Economics.ipynb) | 2018 | Economics Simulation | -| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/poker.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fpoker.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2Fpoker.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/poker.ipynb) | 2012 | Poker Hand Ranking | +| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/poker.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Fpoker.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2Fpoker.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/poker.ipynb) | 2012 | Poker Hand Ranking | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/risk.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2Frisk.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2Frisk.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/risk.ipynb) | 2020 | The Unfinished Game .... of Risk | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/WWW.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FWWW.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FWWW.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/WWW.ipynb) | 2019 | WWW: Who Will Win (NBA Title)? | |Run|Year|Computer Science Algorithms and Concepts| -|---|----|---| +|---|---|---| | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Snobol.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FSnobol.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FSnobol.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Snobol.ipynb) | 2017 | Bad Grade, Good Experience | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/BASIC.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FBASIC.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FBASIC.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/BASIC.ipynb) | 2017 | BASIC Interpreter | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Convex%20Hull.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FConvex%20Hull.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FConvex%20Hull.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Convex%20Hull.ipynb) | 2017 | Convex Hull Problem | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/How%20To%20Count%20Things.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FHow%20To%20Count%20Things.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FHow%20To%20Count%20Things.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/How%20To%20Count%20Things.ipynb) | 2020 | How to Count Things | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/StableMatching.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FStableMatching.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FStableMatching.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/StableMatching.ipynb) | 2020 | Stable Matching Problem | -| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Differentiation.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FDifferentiation.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FDifferentiation.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Differentiation.ipynb) | 2017 | Symbolic Algebra, Simplification, and Differentiation | +| [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/Differentiation.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FDifferentiation.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FDifferentiation.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Differentiation.ipynb) | 2017 | Symbolic Algebra, Simplification, and Differentiation | | [c](https://colab.research.google.com/github/norvig/pytudes/blob/master/ipynb/TSP.ipynb) [d](https://beta.deepnote.org/launch?template=python_3.6&url=https%3A%2F%2Fgithub.com%2Fnorvig%2Fpytudes%2Fblob%2Fmaster%2Fipynb%2FTSP.ipynb) [m](https://mybinder.org/v2/gh/norvig/pytudes/master?filepath=ipynb%2FTSP.ipynb) [n](https://nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/TSP.ipynb) | 2018 | Traveling Salesperson Problem | # Index of Python Files -| File | Description | Documentation | -|:--|:----|----| +|File|Description|Documentation| +|---|---|---| |[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)|*An obsolete 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)|