Skip to content

norvig/pytudes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,139 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Peter Norvig
MIT License
2015-2026

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 on the title to see a description, or click the title to view on github, or click one of the letters in the left column to open the notebook on colab or nbviewer.

Open Year New
co nb 2026 Approximating Pi with a Fraction
co nb 2026 Did you solve it? R y clvr ngh t rd ths sntnc?
co nb 2026 Project Euler #3: Largest prime factor
co nb 2026 Truncatable Primes
co nb 2025 Advent of Code 2025
co nb 2025 Advent of Code 2025: AI LLM Edition
Open Year Programming Examples
co nb 2022 AlphaCode Automated Programming
co nb 2026 Approximating Pi with a Fraction
co nb 2022 The Babylonian Number System
co nb 2018 Beal's Conjecture Revisited
co nb 2020 Bicycling Statistics
co nb 2018 Can't Stop
co nb 2019 Chaos with Triangles
co nb 2017 Conway's Game of Life
co nb 2020 Generating and Solving Mazes
co nb 2024 The Languages of English, Math, and Programming
co nb 2021 Mel's Konane Board
co nb 2020 Photo Focal Lengths
co nb 2018 Pickleball Tournament
co nb 2017 Project Euler Utilities
co nb 2022 Selecting Names from a Menu
co nb 2020 Tracking Polls: Electoral Votes
Open Year Advent of Code
co nb 2025 Advent of Code 2025: AI LLM Edition
co nb 2025 Advent of Code 2025
co nb 2024 Advent of Code 2024
co nb 2023 Advent of Code 2023
co nb 2022 Advent of Code 2022
co nb 2021 Advent of Code 2021
co nb 2020 Advent of Code 2020
co nb 2018 Advent of Code 2018
co nb 2017 Advent of Code 2017
co nb 2016 Advent of Code 2016
co nb 2022 Advent of Code Utilities
Open Year Probability and Uncertainty
co nb 2019 Effectiveness of Language Models
co nb 2018 A Concrete Introduction to Probability
co nb 2016 Probability, Paradox, and the Reasonable Person Principle
co nb 2020 Estimating Probabilities with Simulations
co nb 2023 The Diamond Game: A Probability Puzzle
co nb 2019 The Devil and the Coin Flip Game
co nb 2020 Dice Baseball
co nb 2018 Economics Simulation
co nb 2024 Overtime in American Football
co nb 2012 Poker Hand Ranking
co nb 2020 The Unfinished Game .... of Risk
co nb 2019 WWW: Who Will Win (NBA Title)?
Open Year Logic and Number/Counting Puzzles
co nb 2024 Counting Cluster Sizes in Paint by Numbers
co nb 2014 Cryptarithmetic
co nb 2018 Euler's Sum of Powers Conjecture
co nb 2020 Four 4s, Five 5s, and Countdowns
co nb 2020 How to Count Things
co nb 2021 KenKen (Sudoku-like Puzzle)
co nb 2024 Number Bracelets Game
co nb 2026 Project Euler #3: Largest prime factor
co nb 2019 Pairing Socks
co nb 2018 Sicherman Dice
co nb 2014 Sol Golomb's Rectangle Puzzle
co nb 2024 Stubborn number endings
co nb 2021 Star Battle (Sudoku-like Puzzle)
co nb 2006 Sudoku
co nb 2021 Sudoku: 200,000 puzzles/second in Java
co nb 2020 Square Sum Puzzle
co nb 2020 When is Cheryl's Birthday?
co nb 2015 When Cheryl Met Eve: A Birthday Story
co nb 2024 LLMs, Theory of Mind, and Cheryl's Birthday
co nb 2015 xkcd 1313: Regex Golf
co nb 2015 xkcd 1313: Regex Golf (Part 2: Infinite Problems)
Open Year Word Puzzles
co nb 2020 Boggle / Inverse Boggle
co nb 2020 Chemical Element Spelling
co nb 2026 Did you solve it? R y clvr ngh t rd ths sntnc?
co nb 2020 Equilength Numbers: FOUR = 4
co nb 2017 Gesture Typing
co nb 2017 Ghost: A Word game
co nb 2018 How to Do Things with Words: NLP in Python
co nb 2015 Let's Code About Bike Locks
co nb 2023 One Letter Off
co nb 2017 Scrabble: Refactoring a Crossword Game Program
co nb 2020 Spelling Bee
co nb 2017 Translating English into Propositional Logic
co nb 2020 Wordle, Evil Wordle, Antiwordle, and Jotto
co nb 2022 Winning Wordle
co nb 2017 World's Longest Palindrome
co nb 2020 World's Shortest Portmantout Word
co nb 2018 xkcd 1970: Name Dominoes
Open Year The Riddler (from 538)
co nb 2022 Anigrams: Word Chains
co nb 2017 Battle Royale
co nb 2021 Climbing Wall
co nb 2021 CrossProduct
co nb 2020 Flipping Cards; A Guessing Game
co nb 2019 Lottery
co nb 2019 How Many Soldiers to Beat the Night King?
co nb 2017 Misanthropic Neighbors
co nb 2018 Properly Organized Card Hands
co nb 2021 Race Track
co nb 2021 Split the States
co nb 2020 Tour de 538
co nb 2020 Weighing Twelve Balls
co nb 2020 War. What is it Good For?
Open Year Computer Science Algorithms and Concepts
co nb 2017 BASIC Interpreter
co nb 2017 Convex Hull Problem
co nb 2023 Docstring Fixpoint Theory
co nb 2020 Stable Matching Problem
co nb 2017 Symbolic Algebra, Simplification, and Differentiation
co nb 2017 Snobol: Bad Grade, Good Experience
co nb 2018 Traveling Salesperson Problem
co nb 2026 Truncatable Primes

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, but it is now easier to find a pdf than a hard copy.

Reviews of pytudes

Here's what some people are saying about pytudes:

  • "What I find interesting is how Peter builds bottom-up solutions using low-level utilities... Reading his code is educational." - Jeremey Howard, co-founder of fast.ai and chief scientist at Kaggle
  • "Everything I see from Peter Norvig is just always so incredibly well written and coded." — Jonathan, Hacker News
  • "Peter Norvig is my go to recommendation when someone is interested in becoming better at solving day to day problems ... I feel his skill of dividing a problem into small pieces and expressing them in code in a natural way is unparalleled." — mikevin, Hacker News
  • "I've never seen Peter Norvig choose anything but the most elegant and perfect data model for the problem at hand." — spoonjim, Hacker News
  • "I just find Norvig's style of "functional Python" lovely in its own way (with noted disregard of Pep8 and other "best practices")" —raverbashing, Hacker News
  • "You should check out Norvig's design of computer programs course on Udacity where he uses these kinds of puzzle programs to teach programming design concepts. It is a hard but really rewarding course. — nafizh, HN ACademy
  • "Often enough I would think of something [a possible improvement[, but if you worked it out in detail there was some less-obvious reason the code was the way it was... All the code is pretty short, and it's not really 'production code', but it's enough to be an education in craftsmanship at every level."
  • [What code samples should programmers read?] "Anything else implemented by Norvig, he's one of the best programmers that I've had the pleasure of reading code from." - jacquesm on Hacker News
  • "Everything I see from Peter Norvig is just always so incredibly well written and coded. Every year looking at his solutions for advent of code [0] brings just so much learnings. Strongly recommend. - jyepin Hacker News
  • "I feel his skill of dividing a problem into small pieces and expressing them in code in a natural way is unparalleled." - mikevin Hacker News

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages