/pytudes

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

Primary LanguageJupyter NotebookMIT LicenseMIT

Peter Norvig
MIT License
2015-2022

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.

Who is this for?

To continue the musical analogy, some people think of programming like Spotify: 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 to perfect—then I hope this collection can help.

Index of Jupyter (IPython) Notebooks

For each notebook you can hover or click on the title, or click one of the letters in the left column to launch the notebook on Colab, Deepnote, Github, Mybinder, Sagemaker, or NBViewer.

Run Year Recent (2022)
CDGMNS 2022 AlphaCode Automated Programming
CDGMNS 2022 Selecting Names from a Menu
CDGMNS 2022 Advent of Code 2022
CDGMNS 2022 Advent of Code Utilities
CDGMNS 2022 Winning Wordle
CDGMNS 2022 Goldberg's Character-level Language Model
CDGMNS 2022 Anigrams: Word Chains
Run Year Programming Examples
CDGMNS 2022 AlphaCode Automated Programming
CDGMNS 2018 Beal's Conjecture Revisited
CDGMNS 2020 Bicycling Statistics
CDGMNS 2018 Can't Stop
CDGMNS 2019 Chaos with Triangles
CDGMNS 2017 Conway's Game of Life
CDGMNS 2020 Generating and Solving Mazes
CDGMNS 2021 Mel's Konane Board
CDGMNS 2022 Selecting Names from a Menu
CDGMNS 2020 Photo Focal Lengths
CDGMNS 2018 Pickleball Tournament
CDGMNS 2017 Project Euler Utilities
CDGMNS 2020 Tracking Trump: Electoral Votes
Run Year Advent of Code
CDGMNS 2022 Advent of Code 2022
CDGMNS 2021 Advent of Code 2021
CDGMNS 2020 Advent of Code 2020
CDGMNS 2018 Advent of Code 2018
CDGMNS 2017 Advent of Code 2017
CDGMNS 2016 Advent of Code 2016
CDGMNS 2022 Advent of Code Utilities
Run Year Logic and Number Puzzles
CDGMNS 2014 Cryptarithmetic
CDGMNS 2018 Euler's Sum of Powers Conjecture
CDGMNS 2020 Four 4s, Five 5s, and Countdowns
CDGMNS 2021 KenKen (Sudoku-like Puzzle)
CDGMNS 2019 Pairing Socks
CDGMNS 2018 Sicherman Dice
CDGMNS 2014 Sol Golomb's Rectangle Puzzle
CDGMNS 2021 Star Battle (Sudoku-like Puzzle)
CDGMNS 2006 Sudoku
CDGMNS 2021 Sudoku: 100,000 puzzles/second in Java
CDGMNS 2020 Square Sum Puzzle
CDGMNS 2020 When is Cheryl's Birthday?
CDGMNS 2015 When Cheryl Met Eve: A Birthday Story
CDGMNS 2015 xkcd 1313: Regex Golf
CDGMNS 2015 xkcd 1313: Regex Golf (Part 2: Infinite Problems)
Run Year Word Puzzles
CDGMNS 2020 Boggle / Inverse Boggle
CDGMNS 2020 Chemical Element Spelling
CDGMNS 2020 Equilength Numbers: FOUR = 4
CDGMNS 2017 Gesture Typing
CDGMNS 2017 Ghost: A Word game
CDGMNS 2018 How to Do Things with Words: NLP in Python
CDGMNS 2020 Jotto and Wordle: Word Guessing Games
CDGMNS 2015 Let's Code About Bike Locks
CDGMNS 2017 Scrabble: Refactoring a Crossword Game Program
CDGMNS 2020 Spelling Bee
CDGMNS 2017 Translating English into Propositional Logic
CDGMNS 2022 Winning Wordle
CDGMNS 2017 World's Longest Palindrome
CDGMNS 2020 World's Shortest Portmantout Word
CDGMNS 2018 xkcd 1970: Name Dominoes
Run Year Probability and Uncertainty
CDGMNS 2022 Goldberg's Character-level Language Model
CDGMNS 2018 A Concrete Introduction to Probability
CDGMNS 2016 Probability, Paradox, and the Reasonable Person Principle
CDGMNS 2020 Estimating Probabilities with Simulations
CDGMNS 2019 The Devil and the Coin Flip Game
CDGMNS 2020 Dice Baseball
CDGMNS 2018 Economics Simulation
CDGMNS 2012 Poker Hand Ranking
CDGMNS 2020 The Unfinished Game .... of Risk
CDGMNS 2019 WWW: Who Will Win (NBA Title)?
Run Year The Riddler (from 538)
CDGMNS 2022 Anigrams: Word Chains
CDGMNS 2017 Battle Royale
CDGMNS 2021 CrossProduct
CDGMNS 2020 Flipping Cards; A Guessing Game
CDGMNS 2019 Lottery
CDGMNS 2019 How Many Soldiers to Beat the Night King?
CDGMNS 2017 Misanthropic Neighbors
CDGMNS 2018 Properly Ordered Card Hands
CDGMNS 2021 Split the States
CDGMNS 2020 Tour de 538
CDGMNS 2020 Weighing Twelve Balls
CDGMNS 2020 War. What is it Good For?
Run Year Computer Science Algorithms and Concepts
CDGMNS 2017 BASIC Interpreter
CDGMNS 2017 Convex Hull Problem
CDGMNS 2020 How to Count Things
CDGMNS 2020 Stable Matching Problem
CDGMNS 2017 Symbolic Algebra, Simplification, and Differentiation
CDGMNS 2017 Snobol: Bad Grade, Good Experience
CDGMNS 2018 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.