pytudes README

The project's README from github.com/norvig/pytudes. As one markdown file: README.md.

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 (How to Write a (Lisp) Interpreter (in Python))
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 Largest prime factor
co nb 2026 Project Euler #1–100 by Fable LLM
co nb 2026 Project Euler #1–100 by Kimi LLM
co nb 2026 Project Euler #1–100 by Opus LLM
co nb 2026 Project Euler #1–100 by a Human
co nb 2026 Truncatable Primes
co nb 2025 Advent of Code 2025
co nb 2025 Advent of Code 2025: AI LLM Edition
Open Year Large Language Models
co nb 2022 AlphaCode Automated Programming
co nb 2025 Advent of Code 2025: AI LLM Edition
co nb 2019 Effectiveness of Language Models
co nb 2018 How to Do Things with Words: NLP in Python
co nb 2024 The Languages of English, Math, and Programming
co nb 2024 LLMs, Theory of Mind, and Cheryl's Birthday
co nb 2023 One Letter Off
co nb 2026 Project Euler #1–100 by a Human
co nb 2026 Project Euler #1–100 by Fable LLM
co nb 2026 Project Euler #1–100 by Opus LLM
co nb 2026 Project Euler #1–100 by Kimi LLM
Open Year Programming Examples
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 2026 Largest prime factor
co nb 2021 Mel's Konane Board
co nb 2020 Photo Focal Lengths
co nb 2018 Pickleball Tournament
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 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 2024 Number Bracelets Game
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 2020 Square Sum Chain Puzzle
co nb 2020 When is Cheryl's Birthday?
co nb 2015 When Cheryl Met Eve: A Birthday Story
co nb 2015 xkcd 1313: Regex Golf
co nb 2015 xkcd 1313: Regex Golf (Part 2: Infinite Problems)
Open Year Sudoku and Similar Puzzles
co nb 2006 Sudoku
co nb 2021 Sudoku: 400,000 puzzles/second in Java
co nb 2021 KenKen (Sudoku-like Puzzle)
co nb 2021 Star Battle (Sudoku-like Puzzle)
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 2015 Let's Code About Bike Locks
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 2026 (How to Write a (Lisp) Interpreter (in Python))
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:

pytudes (norvig/pytudes)

Searching Database…

24.4K ·GitHub
Что это такое?Pytudes — личная коллекция Питера Норвига из коротких, намеренно сложных программ на Python и ноутбуков Jupyter. Каждая написана, чтобы отточить один конкретный навык программирования, в духе музыкального этюда.
Это библиотека, которую я подключаю, или набор отдельных ноутбуков?Это не библиотека, а каталог из десятков независимых ноутбуков Jupyter и простых .py-скриптов. Каждый решает свою головоломку или алгоритм, и их открывают по отдельности, а не импортируют.
Как мне изучать ноутбуки?Выберите любую запись из индексных таблиц в README и нажмите ссылку 'co', чтобы открыть её в Google Colab, или 'nb', чтобы посмотреть на nbviewer/GitHub. Можно также клонировать репозиторий и запускать .py-файлы напрямую.
Что нужно, чтобы их запустить?Достаточно Python 3 и, для ноутбуков, Jupyter или браузера с Google Colab. Репозиторий не объявляет дополнительных зависимостей pip и не содержит Dockerfile.
Это пошаговый учебник для новичков?Нет. Норвиг прямо противопоставляет его урокам «установил и поехали»: он рассчитан на тех, кто готов воспринимать программирование как ремесло, которым занимаются годами, а не как быстрое прохождение.
Что стоит за названием 'pytudes'?Название сочетает 'Python' и 'étude' — «этюд», короткую музыкальную пьесу, написанную для отработки одного конкретного навыка. Норвиг применяет ту же идею к задачам по программированию.
Есть ли здесь решения Advent of Code?Да, есть решения для Advent of Code с 2016 по 2025 год, включая ноутбук 'AI LLM Edition' за 2025 год, в котором сравниваются решения, сгенерированные LLM.
Есть ли ноутбуки, которые сравнивают решения людей и ИИ?Да, в наборе ноутбуков 2026 года задачи Project Euler с 1 по 100 решаются отдельно вручную и с помощью LLM Fable, Kimi и Opus для сравнения.
Какие темы, кроме головоломок, здесь освещаются?Охватываются вероятность и неопределённость, логические головоломки в духе судоку, словесные игры, колонка Riddler на FiveThirtyEight и базовые темы информатики — интерпретаторы Lisp и задача коммивояжёра.
Creator
norvig
Size
136.4 MB
Stars
24.4K
Updated
CommitOct 05
Age
9y
Commits · 90 Days