В общем возникла такая проблема. Делается условно абстрактный квиз с ветвлением. Причем ветвлений может быть несколько и количество вопросов в каждой ветке не одинаково.
Условный пример как выглядят правила для вопросов.
[
{id:0, quest:0, answer_1: 1, answer_2: 1},
{id:1, quest:1, answer_1: 2, answer_2: 2},
{id:2, quest:2, answer_1: 3, answer_2: 8},
{id:3, quest:3, answer_1: 4, answer_2: 4},
{id:4, quest:4, answer_1: 5, answer_2: 5},
{id:5, quest:5, answer_1: 6, answer_2: 6},
{id:6, quest:6, answer_1: 7, answer_2: 7},
{id:7, quest:7, answer_1: 11, answer_2: 11},
{id:8, quest:8, answer_1: 9, answer_2: 9},
{id:9, quest:9, answer_1: 10, answer_2: 10},
{id:10, quest:10, answer_1: 11, answer_2: 11},
{id:11, quest:11, answer_1: 12, answer_2: 15},
]
Правила используются из-за того, что в каждом ветвление могут быть похожие вопросы на вопросы из другого ветвления, к примеру на сколько будет 5+5, но при этом они не будут последовательны. Т.е. после вопроса А, не обязательно будет повторяющийся вопрос для других веток вопрос В, вполне может идти вопрос С, и это важно. И вопросы могут снова сливаться из разных веток в одну и потом снова ветвиться. Как в примере выше когда с вопроса 2, с айди правила 3, он разъединяется но потом две ветки снова приходят к вопросу 11, который снова разъединяется на разные ветки.
Соответственно для пользователя нужно выводить процент прохождения, и вот возникает вопрос, а как посчитать это дело для максимального количества вопросов, в ветке.
Самый просто вариант - в ручную пронумеровать каждый вопрос, и забить. Но не подходит, хочется автоматизировать дело, условного конструктора.
Буду рад помощи, как идеям для подсчёта, так и возможно более удачному шаблону построения квизов с ветвлением чем мой велосипед. Мне в голову пока ничего умнее не приходит.