Programming Puzzles

Tal Schuster, Ashwin Kalyan, Oleksandr Polozov, Adam Tauman Kalai
6/10/2021
cs.LGcs.AIcs.CL

Official code: microsoft/PythonProgrammingPuzzles (997 stars, MIT, last commit 2024-04-24).

Abstract

We introduce a new type of programming challenge called programming puzzles, as an objective and comprehensive evaluation of program synthesis, and release an open-source dataset of Python Programming Puzzles (P3). Each puzzle is defined by a short Python program $f$, and the goal is to find an input which makes $f$ return True. The puzzles are objective in that each one is specified entirely by the source code of its verifier $f$, so evaluating $f$ is all that is needed to test a candidate solution. They do not require an answer key or input/output examples, nor do they depend on natural language understanding. The dataset is comprehensive in that it spans problems of a range of difficulties and domains, ranging from trivial string manipulation problems, to classic programming puzzles (e.g., Tower of Hanoi), to interview/competitive-programming problems (e.g., dynamic programming), to longstanding open problems in algorithms and mathematics (e.g., factoring). We develop baseline enumerative program synthesis, GPT-3 and Codex solvers that are capable of solving puzzles -- even without access to any reference solutions -- by learning from their own past solutions. Codex performs best, solving up to 18% of 397 test problems with a single try and 80% of the problems with 1,000 tries per problem. In a small user study, we find a positive correlation between puzzle-solving performance and coding experience, and between the puzzle difficulty for humans and AI solvers. Therefore, further improvements on P3 could have a significant impact on many program synthesis areas.

View on arXivView PDF

Code Implementations(1)

MIT

A Dataset of Python Challenges for AI Research

99796Shell, PythonApr 25, 20212 years agoMIT
aiprogram-synthesisprogramming-competitionspuzzles

Similar Papers

Cite this paper

@article{schuster2021programming,
  title  = {Programming Puzzles},
  author = {Tal Schuster and Ashwin Kalyan and Oleksandr Polozov and Adam Tauman Kalai},
  year   = {2021},
  eprint = {2106.05784},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/2106.05784}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2106.05784.svg)](https://codeofpaper.com/paper/2106.05784)

Discussion