From 88819c4cd043afa265ba1f7fedc03e006a2082e6 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 23 Oct 2017 10:32:23 -0700 Subject: [PATCH] Add subdirectories Add /ipynb/ and /py/ subdirectories to keep the home page neater. --- .DS_Store | Bin 0 -> 6148 bytes README.md | 94 +++++++++--------- .../Advent of Code.ipynb | 0 BASIC.ipynb => ipynb/BASIC.ipynb | 0 Beal.ipynb => ipynb/Beal.ipynb | 0 .../Bike Speed versus Grade.ipynb | 0 .../Cheryl-and-Eve.ipynb | 0 Cheryl.ipynb => ipynb/Cheryl.ipynb | 0 Coin Flip.ipynb => ipynb/Coin Flip.ipynb | 0 Convex Hull.ipynb => ipynb/Convex Hull.ipynb | 0 Countdown.ipynb => ipynb/Countdown.ipynb | 0 .../Differentiation.ipynb | 0 Economics.ipynb => ipynb/Economics.ipynb | 0 Fred Buns.ipynb => ipynb/Fred Buns.ipynb | 0 .../Gesture Typing.ipynb | 0 Ghost.ipynb => ipynb/Ghost.ipynb | 0 .../Golomb-Puzzle.ipynb | 0 .../How To Count Things.ipynb | 0 .../How to Do Things with Words.ipynb | 0 Life.ipynb => ipynb/Life.ipynb | 0 .../Mean Misanthrope Density.ipynb | 0 Palindrome.ipynb => ipynb/Palindrome.ipynb | 0 Probability.ipynb => ipynb/Probability.ipynb | 0 .../ProbabilityParadox.ipynb | 0 .../Project Euler Utils.ipynb | 0 .../PropositionalLogic.ipynb | 0 .../Riddler Battle Royale.ipynb | 0 SET.ipynb => ipynb/SET.ipynb | 0 Scrabble.ipynb => ipynb/Scrabble.ipynb | 0 .../Sicherman Dice.ipynb | 0 Sierpinski.ipynb => ipynb/Sierpinski.ipynb | 0 Snobol.ipynb => ipynb/Snobol.ipynb | 0 .../Sudoku IPython Notebook.ipynb | 0 TSP.ipynb => ipynb/TSP.ipynb | 0 WWW.ipynb => ipynb/WWW.ipynb | 0 .../dist-climb-time.csv | 0 money.png => ipynb/money.png | Bin pal3.ipynb => ipynb/pal3.ipynb | 0 .../xkcd1313-part2.ipynb | 0 xkcd1313.ipynb => ipynb/xkcd1313.ipynb | 0 xkxd-part3.ipynb => ipynb/xkxd-part3.ipynb | 0 SET.py => py/SET.py | 0 beal.py => py/beal.py | 0 docex.py => py/docex.py | 0 ibol.py => py/ibol.py | 0 lettercount.py => py/lettercount.py | 0 lis.py => py/lis.py | 0 lispy.py => py/lispy.py | 0 lispytest.py => py/lispytest.py | 0 pal.py => py/pal.py | 0 pal2.py => py/pal2.py | 0 pal3.py => py/pal3.py | 0 parse.py => py/parse.py | 0 py2html.py => py/py2html.py | 0 spell.py => py/spell.py | 0 sudoku-easy50.txt => py/sudoku-easy50.txt | 0 sudoku-hardest.txt => py/sudoku-hardest.txt | 0 sudoku-top95.txt => py/sudoku-top95.txt | 0 sudoku.py => py/sudoku.py | 0 testaccum.py => py/testaccum.py | 0 yaptu.py => py/yaptu.py | 0 61 files changed, 48 insertions(+), 46 deletions(-) create mode 100644 .DS_Store rename Advent of Code.ipynb => ipynb/Advent of Code.ipynb (100%) rename BASIC.ipynb => ipynb/BASIC.ipynb (100%) rename Beal.ipynb => ipynb/Beal.ipynb (100%) rename Bike Speed versus Grade.ipynb => ipynb/Bike Speed versus Grade.ipynb (100%) rename Cheryl-and-Eve.ipynb => ipynb/Cheryl-and-Eve.ipynb (100%) rename Cheryl.ipynb => ipynb/Cheryl.ipynb (100%) rename Coin Flip.ipynb => ipynb/Coin Flip.ipynb (100%) rename Convex Hull.ipynb => ipynb/Convex Hull.ipynb (100%) rename Countdown.ipynb => ipynb/Countdown.ipynb (100%) rename Differentiation.ipynb => ipynb/Differentiation.ipynb (100%) rename Economics.ipynb => ipynb/Economics.ipynb (100%) rename Fred Buns.ipynb => ipynb/Fred Buns.ipynb (100%) rename Gesture Typing.ipynb => ipynb/Gesture Typing.ipynb (100%) rename Ghost.ipynb => ipynb/Ghost.ipynb (100%) rename Golomb-Puzzle.ipynb => ipynb/Golomb-Puzzle.ipynb (100%) rename How To Count Things.ipynb => ipynb/How To Count Things.ipynb (100%) rename How to Do Things with Words.ipynb => ipynb/How to Do Things with Words.ipynb (100%) rename Life.ipynb => ipynb/Life.ipynb (100%) rename Mean Misanthrope Density.ipynb => ipynb/Mean Misanthrope Density.ipynb (100%) rename Palindrome.ipynb => ipynb/Palindrome.ipynb (100%) rename Probability.ipynb => ipynb/Probability.ipynb (100%) rename ProbabilityParadox.ipynb => ipynb/ProbabilityParadox.ipynb (100%) rename Project Euler Utils.ipynb => ipynb/Project Euler Utils.ipynb (100%) rename PropositionalLogic.ipynb => ipynb/PropositionalLogic.ipynb (100%) rename Riddler Battle Royale.ipynb => ipynb/Riddler Battle Royale.ipynb (100%) rename SET.ipynb => ipynb/SET.ipynb (100%) rename Scrabble.ipynb => ipynb/Scrabble.ipynb (100%) rename Sicherman Dice.ipynb => ipynb/Sicherman Dice.ipynb (100%) rename Sierpinski.ipynb => ipynb/Sierpinski.ipynb (100%) rename Snobol.ipynb => ipynb/Snobol.ipynb (100%) rename Sudoku IPython Notebook.ipynb => ipynb/Sudoku IPython Notebook.ipynb (100%) rename TSP.ipynb => ipynb/TSP.ipynb (100%) rename WWW.ipynb => ipynb/WWW.ipynb (100%) rename dist-climb-time.csv => ipynb/dist-climb-time.csv (100%) rename money.png => ipynb/money.png (100%) rename pal3.ipynb => ipynb/pal3.ipynb (100%) rename xkcd1313-part2.ipynb => ipynb/xkcd1313-part2.ipynb (100%) rename xkcd1313.ipynb => ipynb/xkcd1313.ipynb (100%) rename xkxd-part3.ipynb => ipynb/xkxd-part3.ipynb (100%) rename SET.py => py/SET.py (100%) rename beal.py => py/beal.py (100%) rename docex.py => py/docex.py (100%) rename ibol.py => py/ibol.py (100%) rename lettercount.py => py/lettercount.py (100%) rename lis.py => py/lis.py (100%) rename lispy.py => py/lispy.py (100%) rename lispytest.py => py/lispytest.py (100%) rename pal.py => py/pal.py (100%) rename pal2.py => py/pal2.py (100%) rename pal3.py => py/pal3.py (100%) rename parse.py => py/parse.py (100%) rename py2html.py => py/py2html.py (100%) rename spell.py => py/spell.py (100%) rename sudoku-easy50.txt => py/sudoku-easy50.txt (100%) rename sudoku-hardest.txt => py/sudoku-hardest.txt (100%) rename sudoku-top95.txt => py/sudoku-top95.txt (100%) rename sudoku.py => py/sudoku.py (100%) rename testaccum.py => py/testaccum.py (100%) rename yaptu.py => py/yaptu.py (100%) diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fa102e138b6d08c8a7c18dc40e146c4889f0f711 GIT binary patch literal 6148 zcmeHKK~4iP40KA7DsidAg=4_=2Pw*aQY=bsx#1SfF zOUWd5Y$qdavKEoFJ`5|7rHCxhh>3%SP~9}md@+qlW86O8tv1{JZft}(O%?ZkE)O!w zi#$nd{}bzO-}l4ec`Nd9`TnX0s;t8g*75#`nHjS-7*lrHdHev)OPZ^S=M#$#8( zKrj#t1OtD~0N!lM;=(ZcU?3O>2EG~K{gBa!ontZ7s{@^u0KhraDj2htpig$}9E%|= zkYuhvb4^}iBy)#8`?}7t7@E5z&5Ssn`Kx$InjQMA%O!P&(FX&;K+V9JO_zNCukpz= zi~QOpX2C!(@Xr`X^M2E>aVURVkB-N;Hly93QMj&f0KvHW3BZK+$dww+o;k+4&aoIW T3iav^j2{6dB)VYW7Z~^iU|~EW literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 3da4fc9..43bf700 100644 --- a/README.md +++ b/README.md @@ -2,46 +2,47 @@ *Etudes* are exercises to practice or demonstrate skills, long used by piano players. -This project contains **pytudes**—Python programs to practice or demonstrate skills. +This project contains **pytudes**—Python programs to practice or demonstrate skills. +Some are in Jupyter (IPython) notebooks, some in *.py files. # pytudes: Index of Jupyter (IPython) Notebooks |Logic and Number Puzzles| |---| -|[Advent of Code 2016](https://github.com/norvig/pytudes/blob/master/Advent%20of%20Code.ipynb)
*Puzzle site with a coding puzzle each day for Advent 2016*| -|[Translating English Sentences into Propositional Logic Statements](https://github.com/norvig/pytudes/blob/master/PropositionalLogic.ipynb)
*Automatically converting informal English sentences into formal Propositional Logic.*| -|[The Puzzle of the Misanthropic Neighbors](https://github.com/norvig/pytudes/blob/master/Mean%20Misanthrope%20Density.ipynb)
*How crowded will this neighborhood be, if nobody wants to live next door to anyone else?*| -|[Countdown to 2016](https://github.com/norvig/pytudes/blob/master/Countdown.ipynb)
*Solving the equation 10 _ 9 _ 8 _ 7 _ 6 _ 5 _ 4 _ 3 _ 2 _ 1 = 2016. From an Alex Bellos puzzle.*| -|[Sicherman Dice](https://github.com/norvig/pytudes/blob/master/Sicherman%20Dice.ipynb)
*Find a pair of dice that is like a regular pair of dice, only different.*| -|[Beal's Conjecture Revisited](https://github.com/norvig/pytudes/blob/master/Beal.ipynb)
*A search for counterexamples to Beal's Conjecture*| -|[When is Cheryl's Birthday?](https://github.com/norvig/pytudes/blob/master/Cheryl.ipynb)
*Solving the "Cheryl's Birthday" logic puzzle.*| -|[When Cheryl Met Eve: A Birthday Story](https://github.com/norvig/pytudes/blob/master/Cheryl-and-Eve.ipynb)
*Inventing new puzzles in the Style of Cheryl's Birthday.*| -|[Sol Golomb's Rectangle Puzzle](https://github.com/norvig/pytudes/blob/master/Golomb-Puzzle.ipynb)
*A Puzzle involving placing rectangles of different sizes inside a square. Bonus: cryptarithmetic.*| -|[WWW: Will Warriors Win?](https://github.com/norvig/pytudes/blob/master/WWW.ipynb)
*Golden State Warriors probability of winning the 2016 NBA title.*| +|[Advent of Code 2016](https://github.com/norvig/pytudes/blob/master/ipynb/Advent%20of%20Code.ipynb)
*Puzzle site with a coding puzzle each day for Advent 2016*| +|[Translating English Sentences into Propositional Logic Statements](https://github.com/norvig/pytudes/blob/master/ipynb/PropositionalLogic.ipynb)
*Automatically converting informal English sentences into formal Propositional Logic.*| +|[The Puzzle of the Misanthropic Neighbors](https://github.com/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?*| +|[Countdown to 2016](https://github.com/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](https://github.com/norvig/pytudes/blob/master/ipynb/Sicherman%20Dice.ipynb)
*Find a pair of dice that is like a regular pair of dice, only different.*| +|[Beal's Conjecture Revisited](https://github.com/norvig/pytudes/blob/master/ipynb/Beal.ipynb)
*A search for counterexamples to Beal's Conjecture*| +|[When is Cheryl's Birthday?](https://github.com/norvig/pytudes/blob/master/ipynb/Cheryl.ipynb)
*Solving the "Cheryl's Birthday" logic puzzle.*| +|[When Cheryl Met Eve: A Birthday Story](https://github.com/norvig/pytudes/blob/master/ipynb/Cheryl-and-Eve.ipynb)
*Inventing new puzzles in the Style of Cheryl's Birthday.*| +|[Sol Golomb's Rectangle Puzzle](https://github.com/norvig/pytudes/blob/master/ipynb/Golomb-Puzzle.ipynb)
*A Puzzle involving placing rectangles of different sizes inside a square. Bonus: cryptarithmetic.*| +|[WWW: Will Warriors Win?](https://github.com/norvig/pytudes/blob/master/ipynb/WWW.ipynb)
*Golden State Warriors probability of winning the 2016 NBA title.*| |Word Games| |---| -|[Ghost](https://github.com/norvig/pytudes/blob/master/Ghost.ipynb)
*The word game Ghost (add letters, try to avoid making a word).*| -|[World's Longest Palindrome](https://github.com/norvig/pytudes/blob/master/pal3.ipynb)
*Searching for a long Panama-style palindrome, this time letter-by-letter.*| -|[Refactoring a Crossword Game Program](https://github.com/norvig/pytudes/blob/master/Scrabble.ipynb)
*Refactoring the Scrabble / Word with Friends game from Udacity 212.*| -|[xkcd 1313: Regex Golf](https://github.com/norvig/pytudes/blob/master/xkcd1313.ipynb)
*Find the smallest regular expression; inspired by Randall Monroe.*| -|[xkcd 1313: Regex Golf (Part 2: Infinite Problems)](https://github.com/norvig/pytudes/blob/master/xkcd1313-part2.ipynb)
*Regex Golf: better, faster, funer. With Stefan Pochmann.*| -|[Let's Code About Bike Locks](https://github.com/norvig/pytudes/blob/master/Fred%20Buns.ipynb)
*A tale of a bicycle combination lock that uses letters instead of digits. Inspired by Bike Snob NYC.*| -|[Gesture Typing](https://github.com/norvig/pytudes/blob/master/Gesture%20Typing.ipynb)
*What word has the longest path on a gesture-typing smartphone keyboard? Inspired by Nicolas Schank and Shumin Zhai.*| -|[How to Do Things with Words, or Statistical Natural Language Processing in Python](https://github.com/norvig/pytudes/blob/master/How%20to%20Do%20Things%20with%20Words.ipynb)
*Spelling Correction, Secret Codes, Word Segmentation, and more: grab your bag of words.*| +|[Ghost](https://github.com/norvig/pytudes/blob/master/ipynb/Ghost.ipynb)
*The word game Ghost (add letters, try to avoid making a word).*| +|[World's Longest Palindrome](https://github.com/norvig/pytudes/blob/master/ipynb/pal3.ipynb)
*Searching for a long Panama-style palindrome, this time letter-by-letter.*| +|[Refactoring a Crossword Game Program](https://github.com/norvig/pytudes/blob/master/ipynb/Scrabble.ipynb)
*Refactoring the Scrabble / Word with Friends game from Udacity 212.*| +|[xkcd 1313: Regex Golf](https://github.com/norvig/pytudes/blob/master/ipynb/xkcd1313.ipynb)
*Find the smallest regular expression; inspired by Randall Monroe.*| +|[xkcd 1313: Regex Golf (Part 2: Infinite Problems)](https://github.com/norvig/pytudes/blob/master/ipynb/xkcd1313-part2.ipynb)
*Regex Golf: better, faster, funer. With Stefan Pochmann.*| +|[Let's Code About Bike Locks](https://github.com/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](https://github.com/norvig/pytudes/blob/master/ipynb/Gesture%20Typing.ipynb)
*What word has the longest path on a gesture-typing smartphone keyboard? Inspired by Nicolas Schank and Shumin Zhai.*| +|[How to Do Things with Words, or Statistical Natural Language Processing in Python](https://github.com/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.*| |Computer Science Algorithms, Concepts, and Problems| |---| -|[A Chaos Game with Triangles](https://github.com/norvig/pytudes/blob/master/Sierpinski.ipynb)
*A surprising appearance of the Sierpinski triangle in a random walk between vertexes.*| -|[BASIC Interpreter](https://github.com/norvig/pytudes/blob/master/BASIC.ipynb)
*How to write an interpreter for the BASIC programming language.*| -|[Bad Grade, Good Experience](https://github.com/norvig/pytudes/blob/master/Snobol.ipynb)
*As a student, did you ever get a bad grade on a programming assignment? (Snobol, Concordance)*| -|[Conway's Game of Life](https://github.com/norvig/pytudes/blob/master/Life.ipynb)
*The cellular automata zero-player game.*| -|[A Concrete Introduction to Probability](https://github.com/norvig/pytudes/blob/master/Probability.ipynb)
*Code and examples of the basic principles of Probability Theory.*| -|[Probability, Paradox, and the Reasonable Person Principle](https://github.com/norvig/pytudes/blob/master/ProbabilityParadox.ipynb)
*Some classic paradoxes in Probability Theory, and how too think about disagreements.*| -|[The Convex Hull Problem](https://github.com/norvig/pytudes/blob/master/Convex%20Hull.ipynb)
*A classic Computer Science Algorithm.*| -|[The Traveling Salesperson Problem](https://github.com/norvig/pytudes/blob/master/TSP.ipynb)
*Another of the classics.*| -|[Economics Simulation](https://github.com/norvig/pytudes/blob/master/Economics.ipynb)
*A simulation of a simple economic game.*| -|[Project Euler Utilities](https://github.com/norvig/pytudes/blob/master/Project%20Euler%20Utils.ipynb)
*My utility functions for the Project Euler problems, including `Primes` and `Factors`.*| +|[A Chaos Game with Triangles](https://github.com/norvig/pytudes/blob/master/ipynb/Sierpinski.ipynb)
*A surprising appearance of the Sierpinski triangle in a random walk between vertexes.*| +|[BASIC Interpreter](https://github.com/norvig/pytudes/blob/master/ipynb/BASIC.ipynb)
*How to write an interpreter for the BASIC programming language.*| +|[Bad Grade, Good Experience](https://github.com/norvig/pytudes/blob/master/ipynb/Snobol.ipynb)
*As a student, did you ever get a bad grade on a programming assignment? (Snobol, Concordance)*| +|[Conway's Game of Life](https://github.com/norvig/pytudes/blob/master/ipynb/Life.ipynb)
*The cellular automata zero-player game.*| +|[A Concrete Introduction to Probability](https://github.com/norvig/pytudes/blob/master/ipynb/Probability.ipynb)
*Code and examples of the basic principles of Probability Theory.*| +|[Probability, Paradox, and the Reasonable Person Principle](https://github.com/norvig/pytudes/blob/master/ipynb/ProbabilityParadox.ipynb)
*Some classic paradoxes in Probability Theory, and how too think about disagreements.*| +|[The Convex Hull Problem](https://github.com/norvig/pytudes/blob/master/ipynb/Convex%20Hull.ipynb)
*A classic Computer Science Algorithm.*| +|[The Traveling Salesperson Problem](https://github.com/norvig/pytudes/blob/master/ipynb/TSP.ipynb)
*Another of the classics.*| +|[Economics Simulation](https://github.com/norvig/pytudes/blob/master/ipynb/Economics.ipynb)
*A simulation of a simple economic game.*| +|[Project Euler Utilities](https://github.com/norvig/pytudes/blob/master/ipynb/Project%20Euler%20Utils.ipynb)
*My utility functions for the Project Euler problems, including `Primes` and `Factors`.*| # pytudes: Index of Python Files @@ -50,25 +51,26 @@ The following are not notebooks, but raw `.py` files, although some of them have | **File** | **Description** | **Documentation**| |:--------|:-------------------|----| -|[SET.py](https://github.com/norvig/pytudes/blob/master/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/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/docex.py)|A framework for running unit tests, similar to `doctest`.| -|[ibol.py](https://github.com/norvig/pytudes/blob/master/ibol.py)|An Exercise in Species Barcoding|[ibol.html](http://norvig.com/ibol.html) -|[lettercount.py](https://github.com/norvig/pytudes/blob/master/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/lis.py)|Lisp Interpreter written in Python|[lispy.html](http://norvig.com/lispy.html) -|[lispy.py](https://github.com/norvig/pytudes/blob/master/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/lispytest.py)|Tests for Lisp Interpreters| -|[pal.py](https://github.com/norvig/pytudes/blob/master/pal.py)|Find long palindromes|[palindrome.html](http://norvig.com/palindrome.html) -|[pal2.py](https://github.com/norvig/pytudes/blob/master/pal2.py)|Find longer palindromes|[palindrome.html](http://norvig.com/palindrome.html) -|[pal3.py](https://github.com/norvig/pytudes/blob/master/pal3.py)|Find even longer palindromes|[palindrome.html](http://norvig.com/palindrome.html) -|[py2html.py](https://github.com/norvig/pytudes/blob/master/py2html.py)|Pretty-printer to format Python files as html| -|[spell.py](https://github.com/norvig/pytudes/blob/master/spell.py)|Spelling corrector|[spell-correct.html](http://norvig.com/spell-correct.html) -|[sudoku.py](https://github.com/norvig/pytudes/blob/master/sudoku.py)|Program to solve sudoku puzzles|[sudoku.html](http://norvig.com/sudoku.html) -|[testaccum.py](https://github.com/norvig/pytudes/blob/master/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/yaptu.py)|Yet Another Python Templating Utility| +|[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| # Etudes for Programmers -I got the idea for the "etudes" part of the name from this [1978 book by Charles Wetherell](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 by Charles Wetherell](https://books.google.com/books/about/Etudes_for_programmers.html?id=u89WAAAAMAAJ) +that was very influential to me when I was learning to program around 1980. ![](https://images-na.ssl-images-amazon.com/images/I/51ZnZH29dvL._SX394_BO1,204,203,200_.jpg) diff --git a/Advent of Code.ipynb b/ipynb/Advent of Code.ipynb similarity index 100% rename from Advent of Code.ipynb rename to ipynb/Advent of Code.ipynb diff --git a/BASIC.ipynb b/ipynb/BASIC.ipynb similarity index 100% rename from BASIC.ipynb rename to ipynb/BASIC.ipynb diff --git a/Beal.ipynb b/ipynb/Beal.ipynb similarity index 100% rename from Beal.ipynb rename to ipynb/Beal.ipynb diff --git a/Bike Speed versus Grade.ipynb b/ipynb/Bike Speed versus Grade.ipynb similarity index 100% rename from Bike Speed versus Grade.ipynb rename to ipynb/Bike Speed versus Grade.ipynb diff --git a/Cheryl-and-Eve.ipynb b/ipynb/Cheryl-and-Eve.ipynb similarity index 100% rename from Cheryl-and-Eve.ipynb rename to ipynb/Cheryl-and-Eve.ipynb diff --git a/Cheryl.ipynb b/ipynb/Cheryl.ipynb similarity index 100% rename from Cheryl.ipynb rename to ipynb/Cheryl.ipynb diff --git a/Coin Flip.ipynb b/ipynb/Coin Flip.ipynb similarity index 100% rename from Coin Flip.ipynb rename to ipynb/Coin Flip.ipynb diff --git a/Convex Hull.ipynb b/ipynb/Convex Hull.ipynb similarity index 100% rename from Convex Hull.ipynb rename to ipynb/Convex Hull.ipynb diff --git a/Countdown.ipynb b/ipynb/Countdown.ipynb similarity index 100% rename from Countdown.ipynb rename to ipynb/Countdown.ipynb diff --git a/Differentiation.ipynb b/ipynb/Differentiation.ipynb similarity index 100% rename from Differentiation.ipynb rename to ipynb/Differentiation.ipynb diff --git a/Economics.ipynb b/ipynb/Economics.ipynb similarity index 100% rename from Economics.ipynb rename to ipynb/Economics.ipynb diff --git a/Fred Buns.ipynb b/ipynb/Fred Buns.ipynb similarity index 100% rename from Fred Buns.ipynb rename to ipynb/Fred Buns.ipynb diff --git a/Gesture Typing.ipynb b/ipynb/Gesture Typing.ipynb similarity index 100% rename from Gesture Typing.ipynb rename to ipynb/Gesture Typing.ipynb diff --git a/Ghost.ipynb b/ipynb/Ghost.ipynb similarity index 100% rename from Ghost.ipynb rename to ipynb/Ghost.ipynb diff --git a/Golomb-Puzzle.ipynb b/ipynb/Golomb-Puzzle.ipynb similarity index 100% rename from Golomb-Puzzle.ipynb rename to ipynb/Golomb-Puzzle.ipynb diff --git a/How To Count Things.ipynb b/ipynb/How To Count Things.ipynb similarity index 100% rename from How To Count Things.ipynb rename to ipynb/How To Count Things.ipynb diff --git a/How to Do Things with Words.ipynb b/ipynb/How to Do Things with Words.ipynb similarity index 100% rename from How to Do Things with Words.ipynb rename to ipynb/How to Do Things with Words.ipynb diff --git a/Life.ipynb b/ipynb/Life.ipynb similarity index 100% rename from Life.ipynb rename to ipynb/Life.ipynb diff --git a/Mean Misanthrope Density.ipynb b/ipynb/Mean Misanthrope Density.ipynb similarity index 100% rename from Mean Misanthrope Density.ipynb rename to ipynb/Mean Misanthrope Density.ipynb diff --git a/Palindrome.ipynb b/ipynb/Palindrome.ipynb similarity index 100% rename from Palindrome.ipynb rename to ipynb/Palindrome.ipynb diff --git a/Probability.ipynb b/ipynb/Probability.ipynb similarity index 100% rename from Probability.ipynb rename to ipynb/Probability.ipynb diff --git a/ProbabilityParadox.ipynb b/ipynb/ProbabilityParadox.ipynb similarity index 100% rename from ProbabilityParadox.ipynb rename to ipynb/ProbabilityParadox.ipynb diff --git a/Project Euler Utils.ipynb b/ipynb/Project Euler Utils.ipynb similarity index 100% rename from Project Euler Utils.ipynb rename to ipynb/Project Euler Utils.ipynb diff --git a/PropositionalLogic.ipynb b/ipynb/PropositionalLogic.ipynb similarity index 100% rename from PropositionalLogic.ipynb rename to ipynb/PropositionalLogic.ipynb diff --git a/Riddler Battle Royale.ipynb b/ipynb/Riddler Battle Royale.ipynb similarity index 100% rename from Riddler Battle Royale.ipynb rename to ipynb/Riddler Battle Royale.ipynb diff --git a/SET.ipynb b/ipynb/SET.ipynb similarity index 100% rename from SET.ipynb rename to ipynb/SET.ipynb diff --git a/Scrabble.ipynb b/ipynb/Scrabble.ipynb similarity index 100% rename from Scrabble.ipynb rename to ipynb/Scrabble.ipynb diff --git a/Sicherman Dice.ipynb b/ipynb/Sicherman Dice.ipynb similarity index 100% rename from Sicherman Dice.ipynb rename to ipynb/Sicherman Dice.ipynb diff --git a/Sierpinski.ipynb b/ipynb/Sierpinski.ipynb similarity index 100% rename from Sierpinski.ipynb rename to ipynb/Sierpinski.ipynb diff --git a/Snobol.ipynb b/ipynb/Snobol.ipynb similarity index 100% rename from Snobol.ipynb rename to ipynb/Snobol.ipynb diff --git a/Sudoku IPython Notebook.ipynb b/ipynb/Sudoku IPython Notebook.ipynb similarity index 100% rename from Sudoku IPython Notebook.ipynb rename to ipynb/Sudoku IPython Notebook.ipynb diff --git a/TSP.ipynb b/ipynb/TSP.ipynb similarity index 100% rename from TSP.ipynb rename to ipynb/TSP.ipynb diff --git a/WWW.ipynb b/ipynb/WWW.ipynb similarity index 100% rename from WWW.ipynb rename to ipynb/WWW.ipynb diff --git a/dist-climb-time.csv b/ipynb/dist-climb-time.csv similarity index 100% rename from dist-climb-time.csv rename to ipynb/dist-climb-time.csv diff --git a/money.png b/ipynb/money.png similarity index 100% rename from money.png rename to ipynb/money.png diff --git a/pal3.ipynb b/ipynb/pal3.ipynb similarity index 100% rename from pal3.ipynb rename to ipynb/pal3.ipynb diff --git a/xkcd1313-part2.ipynb b/ipynb/xkcd1313-part2.ipynb similarity index 100% rename from xkcd1313-part2.ipynb rename to ipynb/xkcd1313-part2.ipynb diff --git a/xkcd1313.ipynb b/ipynb/xkcd1313.ipynb similarity index 100% rename from xkcd1313.ipynb rename to ipynb/xkcd1313.ipynb diff --git a/xkxd-part3.ipynb b/ipynb/xkxd-part3.ipynb similarity index 100% rename from xkxd-part3.ipynb rename to ipynb/xkxd-part3.ipynb diff --git a/SET.py b/py/SET.py similarity index 100% rename from SET.py rename to py/SET.py diff --git a/beal.py b/py/beal.py similarity index 100% rename from beal.py rename to py/beal.py diff --git a/docex.py b/py/docex.py similarity index 100% rename from docex.py rename to py/docex.py diff --git a/ibol.py b/py/ibol.py similarity index 100% rename from ibol.py rename to py/ibol.py diff --git a/lettercount.py b/py/lettercount.py similarity index 100% rename from lettercount.py rename to py/lettercount.py diff --git a/lis.py b/py/lis.py similarity index 100% rename from lis.py rename to py/lis.py diff --git a/lispy.py b/py/lispy.py similarity index 100% rename from lispy.py rename to py/lispy.py diff --git a/lispytest.py b/py/lispytest.py similarity index 100% rename from lispytest.py rename to py/lispytest.py diff --git a/pal.py b/py/pal.py similarity index 100% rename from pal.py rename to py/pal.py diff --git a/pal2.py b/py/pal2.py similarity index 100% rename from pal2.py rename to py/pal2.py diff --git a/pal3.py b/py/pal3.py similarity index 100% rename from pal3.py rename to py/pal3.py diff --git a/parse.py b/py/parse.py similarity index 100% rename from parse.py rename to py/parse.py diff --git a/py2html.py b/py/py2html.py similarity index 100% rename from py2html.py rename to py/py2html.py diff --git a/spell.py b/py/spell.py similarity index 100% rename from spell.py rename to py/spell.py diff --git a/sudoku-easy50.txt b/py/sudoku-easy50.txt similarity index 100% rename from sudoku-easy50.txt rename to py/sudoku-easy50.txt diff --git a/sudoku-hardest.txt b/py/sudoku-hardest.txt similarity index 100% rename from sudoku-hardest.txt rename to py/sudoku-hardest.txt diff --git a/sudoku-top95.txt b/py/sudoku-top95.txt similarity index 100% rename from sudoku-top95.txt rename to py/sudoku-top95.txt diff --git a/sudoku.py b/py/sudoku.py similarity index 100% rename from sudoku.py rename to py/sudoku.py diff --git a/testaccum.py b/py/testaccum.py similarity index 100% rename from testaccum.py rename to py/testaccum.py diff --git a/yaptu.py b/py/yaptu.py similarity index 100% rename from yaptu.py rename to py/yaptu.py