diff --git a/README.md b/README.md
index b091c44..2fbb88f 100644
--- a/README.md
+++ b/README.md
@@ -2,68 +2,68 @@
"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 for perfecting programming skills.
+This project contains **pytudes**—Python programs 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: [](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 are in Jupyter (IPython) notebooks, some in `.py` files. You can view the files here. or clone the project, or run the notebooks online by clicking this button: [](https://mybinder.org/v2/gh/norvig/pytudes/master) (Note: when Github serves are busy, you may get a "Something went wrong" error message when you try to view a notebook. If that happens, click the **NB** link to view the notebook on [nbviewer](http://nbviewer.jupyter.org/).)
-
# Index of Jupyter (IPython) Notebooks
|Programming Examples|
|---|
-|[Advent of Code 2017](ipynb/Advent%202017.ipynb) **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Advent%202017.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/dvent%20of%20Code.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)**
*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)**
*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)**
*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)**
*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)**
*Scheduling a doubles tournament fairly and efficiently.*|
-|[Conway's Game of Life](ipynb/Life.ipynb) **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Life.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)**
*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)**
*Make a maze by generating a random tree superimposed on a grid.*|
-|[Can't Stop](ipynb/Cant-Stop.ipynb) **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Cant-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)**
*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)**
*Can you get your hand of cards into a nice order with just one move?*|
+|[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/dvent%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.*|
+|[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.*|
+|[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?*|
|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)**
*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)**
*Inventing new puzzles in the Style of Cheryl's Birthday.*|
-|[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)**
*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)**
*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)**
*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)**
*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)**
*A Puzzle involving placing rectangles of different sizes inside a square. Bonus: cryptarithmetic.*|
-|[The Riddler: Battle Royale](ipynb/Riddler%20Battle%20Royale.ipynb) **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Riddler%20Battle%20Royale.ipynb)**
*A puzzle involving allocating your troops and going up against an opponent.*|
+|[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.*|
+|[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. Bonus: cryptarithmetic.*|
+|[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.*|
|Word Games|
|---|
-|[xkcd 1970: Name Dominoes](ipynb/xkcd-Name-Dominoes.ipynb) **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/xkcd-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)**
*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)**
*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)**
*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)**
*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)**
*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)**
*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)**
*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)**
*Spelling Correction, Secret Codes, Word Segmentation, and more: grab your bag 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.*|
|Math Concepts|
|---|
-|[A Concrete Introduction to Probability](ipynb/Probability.ipynb) **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Probability.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)**
*Some classic paradoxes in Probability Theory, and how to think about disagreements.*|
-|[Symbolic Algebra, Simplification, and Differentiation](ipynb/Differentiation.ipynb) **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/Differentiation.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)**
*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)**
*Combinatorial math: how to count how many things there are, when there are a lot of them.*|
-|[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)**
*Solving a 200-year-old puzzle by finding integers that satisfy a5 + b5 + c5 + d5 = e5.*|
+|[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.*|
+|[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.*|
+|[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.*|
|Computer Science Algorithms and Concepts|
|---|
-|[BASIC Interpreter](ipynb/BASIC.ipynb) **[NB](http:/nbviewer.jupyter.org/github/norvig/pytudes/blob/master/ipynb/BASIC.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)**
*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)**
*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)**
*Another of the classics.*|
+|[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.*|
# Index of Python Files
@@ -88,8 +88,8 @@ Some are in Jupyter (IPython) notebooks, some in `.py` files. You can view the f
# Etudes for Programmers
-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)
+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/)
that was very influential to me when I was first learning to program.