/pytudes

Python programs, usually short, of considerable difficulty, to perfect particular skills.

Primary LanguageJupyter NotebookMIT LicenseMIT

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

This project contains pytudes—Python programs, usually short, for perfecting particular programming skills. Many of the problems are difficult, but I hope that the solutions are easy to follow. Some programs are in Jupyter (.ipynb) notebooks, some in .py files. For each notebook you can:

  • Click on c to run the file on Colab
  • Click on d to run the notebook on DeepNote
  • Click on m to run the notebook on MyBinder
  • Click on n (or the title) to view the notebook on NBViewer
  • Click on g to view the notebook on github
  • Hover over the title to view a description.

Index of Jupyter (IPython) Notebooks

Run Year Programming Examples
c d m n g 2018 Advent of Code 2018
c d m n g 2017 Advent of Code 2017
c d m n g 2016 Advent of Code 2016
c d m n g 2018 Beal's Conjecture Revisited
c d m n g 2020 Bike Speed Versus Grade
c d m n g 2018 Can't Stop
c d m n g 2019 Chaos with Triangles
c d m n g 2017 Conway's Game of Life
c d m n g 2018 Euler's Sum of Powers Conjecture
c d m n g 2020 Generating and Solving Mazes
c d m n g 2020 Photo Focal Lengths
c d m n g 2018 Pickleball Tournament
c d m n g 2017 Project Euler Utilities
c d m n g 2020 Tracking Trump: Electoral Votes
Run Year Logic and Number Puzzles
c d m n g 2014 Cryptarithmetic
c d m n g 2020 Equilength Number Expressions
c d m n g 2020 Making Numbers: Four 4s, Five 5s, and Countdowns
c d m n g 2019 Pairing Socks
c d m n g 2018 Sicherman Dice
c d m n g 2014 Sol Golomb's Rectangle Puzzle
c d m n g 2020 When is Cheryl's Birthday? (new: Mad Cheryl)
c d m n g 2015 When Cheryl Met Eve: A Birthday Story
c d m n g 2015 xkcd 1313: Regex Golf
c d m n g 2015 xkcd 1313: Regex Golf (Part 2: Infinite Problems)
Run Year Word Puzzles
c d m n g 2020 Boggle / Inverse Boggle
c d m n g 2020 Chemical Element Spelling
c d m n g 2017 Gesture Typing
c d m n g 2017 Ghost: A Word game
c d m n g 2018 How to Do Things with Words: NLP in Python
c d m n g 2020 Jotto: A Word Guessing Game
c d m n g 2015 Let's Code About Bike Locks
c d m n g 2017 Scrabble: Refactoring a Crossword Game Program
c d m n g 2020 Spelling Bee
c d m n g 2017 Translating English into Propositional Logic
c d m n g 2017 World's Longest Palindrome
c d m n g 2020 World's Shortest Portmantout Word
c d m n g 2018 xkcd 1970: Name Dominoes
Run Year The Riddler (from 538)
c d m n g 2017 Riddler: Battle Royale
c d m n g 2020 Riddler: Flipping Cards; A Guessing Game
c d m n g 2019 Riddler: Lottery
c d m n g 2019 Riddler: How Many Soldiers to Beat the Night King?
c d m n g 2018 Riddler: Properly Ordered Card Hands
c d m n g 2017 Riddler: The Puzzle of the Misanthropic Neighbors
c d m n g 2020 Riddler: Tour de 538
c d m n g 2020 Riddler: War. What is it Good for?
c d m n g 2020 Riddler: Weighing Twelve Balls
Run Year Probability, Uncertainty, and Counting
c d m n g 2018 A Concrete Introduction to Probability
c d m n g 2016 Probability, Paradox, and the Reasonable Person Principle
c d m n g 2020 Estimating Probabilities with Simulations
c d m n g 2019 The Devil and the Coin Flip Game
c d m n g 2020 Dice Baseball
c d m n g 2018 Economics Simulation
c d m n g 2020 How to Count Things
c d m n g 2020 The Unfinished Game .... of Risk
c d m n g 2019 WWW: Who Will Win (NBA Title)?
Run Year Computer Science Algorithms and Concepts
c d m n g 2017 Bad Grade, Good Experience
c d m n g 2017 BASIC Interpreter
c d m n g 2017 The Convex Hull Problem
c d m n g 2020 The Stable Matching Problem
c d m n g 2017 Symbolic Algebra, Simplification, and Differentiation
c d m n g 2018 The Traveling Salesperson Problem

Index of Python Files

File Description Documentation
beal.py Search for counterexamples to Beal's Conjecture documentation
docex.py An obsolete framework for running unit tests, similar to doctest
ibol.py An Exercise in Species Barcoding documentation
lettercount.py Convert Google Ngram Counts to Letter Counts documentation
lis.py Lisp Interpreter written in Python documentation
lispy.py Even Better Lisp Interpreter written in Python documentation
lispytest.py Tests for Lisp Interpreters
pal.py Find long palindromes documentation
pal2.py Find longer palindromes documentation
pal3.py Find even longer palindromes documentation
pytudes.py Pre-process text to generate this README.md file.
py2html.py Pretty-printer to format Python files as html
SET.py Analyze the card game SET documentation
spell.py Spelling corrector documentation
sudoku.py Program to solve sudoku puzzles documentation
testaccum.py Tests for my failed Python accumulation display proposal documentation
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 that was very influential to me when I was first learning to program. I still have my copy.