Я бы пошел с чем-то вроде.Сначала определите таблицу вопросов:
Question
--------------------------
Id Text
1 9 is the sum of 4 and 5, or 3 and 6
...
Затем сохраните положение скрытых подстрок, давайте назовем их полями, в другой таблице:
QuestionField
--------------------------
Id QuestionId StartsAt EndsAt Set
1 1 0 1 1
2 1 16 17 2
3 1 22 23 2 # NOTE: Is in the same set as QuestionField #2
...
Эта таблица позволяет получить фактическое значениеполя путем запроса таблицы вопросов (например, первая запись относится к значению «9» в первом вопросе).
Столбец «Набор» содержит идентификатор «набора», в котором находится это поле,где поля в одном наборе могут быть заменены друг другом.Заполняя его, вы должны убедиться, что все вопросы, которые можно заменить друг на друга, находятся в одном наборе.Фактический номер набора не имеет значения, пока он уникален.Но имеет смысл иметь его равным идентификатору одного из элементов набора.