Emulated-Inc/logic-grid-puzzles-training-pool
Logic grid puzzles training pool Logic grid puzzles: a row of positions, a handful of attributes with one value per position, and a list of clues that together admit exactly one arrangement. Two sets drawn for this pool by generators run here under the seeds recorded below, and two public datasets read at the pinned revisions named below, laid out twice. Train on either layer or on both. pool.jsonl Every source rewritten into one shape, 390945 rows, one JSON… See the full description on the dataset page: https://huggingface.co/datasets/Emulated-Inc/logic-grid-puzzles-training-pool.
Logic grid puzzles training pool
Logic grid puzzles: a row of positions, a handful of attributes with one value per position, and a list of clues that together admit exactly one arrangement. Two sets drawn for this pool by generators run here under the seeds recorded below, and two public datasets read at the pinned revisions named below, laid out twice. Train on either layer or on both.
pool.jsonl
Every source rewritten into one shape, 390945 rows, one JSON object per line, with these fields.
223040 of the rows carry a whole answer grid and the rest answer one cell of it, which is the question their own source asks. A cell row states its question inside puzzle, at the end, after the clues. A grid row states no question: the task is the whole arrangement, and solution holds it as a header naming the position column and then the attribute columns, followed by one row per position whose first entry is that position's label.
199930 of the rows carry a trace, a list of one-line deductions in the order they can be made, each naming the clue it follows from or saying that nothing else is left. Where a puzzle cannot be finished by following clues alone the trace also carries the steps that rule a position out by assuming it and reaching a contradiction. Every trace was checked to end on the answer the row ships. Only the set drawn by this pool's own generator carries one, because no other source publishes a worked solution and none was invented for a source that does not.
Rows are deduplicated on the puzzle text itself, with case folded and runs of whitespace collapsed, keeping the first source that carries it in the order of the sections below.
The size field is the number of positions by the number of attributes, which is what makes a puzzle easy or hard. How the rows fall across it is worth reading before sampling, because the spread is deliberate and steep.
sources/
The same data untouched, 391818 rows, one directory per source. The two downloaded sets hold the files at the paths, in the parquet format and with the columns their own repositories publish, and the two sets drawn here are one jsonl file each. Nothing here was renamed, reshaped, reordered or deduplicated. Use this layer if you want a field the rewritten one drops, such as the kind of every clue and which clues are deliberate red herrings in the multilingual set, or the generator's own metadata in the two drawn from a library.
The sources
sources/generated
Puzzles of a row of houses, one line of possible values per attribute and a numbered list of clues, every one of them proved by a solver to admit exactly one grid, every one of them carrying that grid, and 199930 of them carrying a trace of the deductions that reach it. Drawn for this pool under seed 20260914. 200000 rows here, of which 200000 also appear in pool.jsonl. Provenance class rule-generated, licence cc-by-4.0. Its own fields are id, size, nhouses, nattributes, n_clues, header, puzzle, solution, trace.
Answers. Every row of it answers with a whole answer grid, one row per house.
Worth knowing. One generator drew all of it under one vocabulary of eleven attributes, so it is one distribution rather than a survey of puzzle styles, and its sizes follow the weights recorded in the manifest rather than a uniform spread. The clue sets are minimal, meaning no single clue can be dropped without losing uniqueness, which makes them harder than a puzzle of the same size with a clue to spare.
sources/multi_zebra_logic
Grid puzzles in forty four languages and two sizes, generated from a template bank per language, each with an introduction naming the categories and their values, a numbered clue list that deliberately includes irrelevant clues, and the whole solution as a list of attributes per position. From alexandrainst/multi-zebra-logic at revision dd9edb2ce11fe03c9c553a3142e593203004682c, 180 files. 23040 rows here, of which 23040 also appear in pool.jsonl. Provenance class rule-generated, licence apache-2.0. It is written in 44 languages. Its own fields are introduction, clues as a list of sentences, question, formatinstructions, formatexample, solution as a map from objectN to its list of attributes, cluetypes naming the kind of every clue, red_herrings naming the clue numbers that are irrelevant.
Answers. Every row of it answers with a whole answer grid, one row per position.
Worth knowing. Its two sizes are two houses by three attributes and four by five, so it adds no large puzzles. Five clues of every row are red herrings by construction and the row says which, and some of the smaller configurations repeat the first sentence of the introduction as an unnumbered entry at the head of the clue list, which the rewritten layer drops. The non-English rows were not read by anyone here: they are shipped because the generator wrote them the same way it wrote the English ones.
sources/reasoning_gym
Puzzles of the same family from the zebrapuzzles generator of the reasoning-gym library, with its own attribute bank and its own clue wordings, each asking for one cell of the grid rather than for the whole of it. Drawn for this pool from `reasoning-gym` 0.1.25 under seed 20260915. 72157 rows here, of which 71284 also appear in `pool.jsonl`. Provenance class `rule-generated`, licence `apache-2.0`. Its own fields are id, size, numpeople, num_characteristics, seed, index, question, answer, metadata.
Answers. Every row of it answers with one cell, the value the question asks for.
Worth knowing. The question asks for a single cell, so a row teaches the deduction but not the output shape of a whole grid, and a model can be right on it by luck far more often than on a grid. The generator is slow at the larger sizes, which is why the large sizes here are drawn thinner than in the set this package's own generator wrote.
sources/rlvr_zebra_puzzles
A hundred thousand puzzles of the same family, drawn from the same reasoning-gym generator at version 0.1.19 under seed 42 and published as a reinforcement learning set, with the puzzle and its answer kept whole inside the reward field. From carbonteq/rg-zebra_puzzles-instruct-100k at revision f288127ae8bae42114ed4f449d38e4e58cc8f406, 1 file. 96621 rows here, of which 96621 also appear in pool.jsonl. Provenance class rule-generated, licence mit. Its own fields are datasource, prompt as a chat message list wrapped in another model's template, ability, rewardmodel holding the question, the answer and the generator's own metadata, extra_info.
Answers. Every row of it answers with one cell, the value the question asks for.
Worth knowing. Its prompt column is wrapped in a chat template that is not the one anything here uses, so the rewritten layer reads the clean question out of the reward field instead. Its build record names library version 0.1.19, which is the version string the library reported at the time and may be a release behind. Only its train split was read.
Provenance
Every row carries the class of work that produced it in provenance_class, and every row of this pool is rule-generated: a program drew an arrangement, wrote clues that are true of it, and checked that no other arrangement fits. No logic grid puzzle corpus written by people exists at any useful size, and this pool does not pretend otherwise. The published human-written puzzles of this kind belong to the sites that publish them and are not redistributable, so none of them is here. Nothing here was written by a language model and nothing here was labelled by one: every key was computed by the program that wrote the puzzle.
That one class is worth thinking about before training on all of it. A generator writes the same sentence frames over and over with the names and the values swapped, so a model trained on one generator's output can learn that generator rather than the deduction behind it. Three different generators are here for exactly that reason, with different vocabularies, different clue wordings and different questions, and the source field is how to mix or hold back whichever parts you want.
Licences
The pool as a whole is offered under cc-by-4.0, the most restrictive term its sources compose to. No source here carries a non-commercial term and no source here is without a stated licence, which is why several larger collections of this kind of puzzle are not in it.
Each rewritten row carries its own term in the licence field and each directory under sources/ is one source, so a subset under a single term can be selected. Attribution goes to alexandrainst/multi-zebra-logic for the multilingual set, to the open-thought reasoning-gym project for the generator two of these sources come from, and to carbonteq/rg-zebra_puzzles-instruct-100k for the published draw of it. The set drawn here is offered under cc-by-4.0.
Filtering
4222 rows were removed before publication, from both layers alike, because their puzzle matched one in a held-out list that is not distributed here: 0 whose puzzle was one of those puzzles, compared as a structure over integers where that could be computed and as the text otherwise, and 4222 that shared an eight word run of content with one of them. Nothing else was filtered: no size, no language and no difficulty was selected for or against, and the test splits of the downloaded sources were simply not read, so what is here is their training and validation material in full.
