Прочитал удалённый кусочек вашего комментария на почте, думаю разумно будет дать больше пояснений. 609 492 049 920 - это математический предел уникальных и правильных сеток которые можно сгенерировать из одной базовой не нарушая при этом правила Судоку. Операция остатка от деления (A % B) работает как кольцевой счетчик, как циферблат. В результате выражение seedBigInt % 609492049920 всегда выдаст нам число от 0 до 609492049919. Получив это итоговое число PermutationsReader начинает его распаковывать в обратном порядке: делит N на 362880 (9!, используются системы счисления перестановок, 362880 для цифр и 6 для блоков), берет остаток и понимает: цифры меняем вот по такой схеме, само число N уменьшается, мы отрезали от него часть данных, дальше делит остаток на 6 и понимает: строки меняем так, и так до тех пор пока от огромного не останется ноль а сетка не будет полностью перемешана уникальным образом. прочитал данные -> сдвинулся -> прочитал следующие -> сдвинулся Таким образом достигается жесткая биекция.
К сожалению пока нигде. Хочется сделать apk для андроид, но каникулы подходят к концу. В понедельник на работу, школьные чаты уже о себе напоминают и моё "приключение" вот-вот закончится. Теперь любая работа над этим проектом будет продвигаться гораздо медленнее. Вероятно через какое-то неопределённое время я смогу поделиться результатами.
Блоки с явным указанием 3! и 9! выглядят страшновато, тем более что это всегда факториал от длины массива. Изящнее был бы какой-нибудь класс-помощник которому можно было передать N и запрашивать перестановки, при этом он сам бы внутри менял N.
"Don't Repeat Yourself" ). Вы правы, так будет почище.
Программа поддерживает изменение сложности "на лету" (ползунок на скриншоте). От 5 до 0 отображаемых цифр подсказок, и от 0 до 4 скрываемых/отображаемых знака больше меньше. То какие цифры и знаки будут скрываться и в какой последовательности, определяет сид, то есть для каждого сида будет всегда своя одинаковая уникальная последовательность отображения подсказок.
Прочитал удалённый кусочек вашего комментария на почте, думаю разумно будет дать больше пояснений.
609 492 049 920 - это математический предел уникальных и правильных сеток которые можно сгенерировать из одной базовой не нарушая при этом правила Судоку. Операция остатка от деления (A % B) работает как кольцевой счетчик, как циферблат. В результате выражение seedBigInt % 609492049920 всегда выдаст нам число от 0 до 609492049919. Получив это итоговое число PermutationsReader начинает его распаковывать в обратном порядке:
делит N на 362880 (9!, используются системы счисления перестановок, 362880 для цифр и 6 для блоков),
берет остаток и понимает: цифры меняем вот по такой схеме,
само число N уменьшается, мы отрезали от него часть данных,
дальше делит остаток на 6 и понимает: строки меняем так,
и так до тех пор пока от огромного не останется ноль а сетка не будет полностью перемешана уникальным образом.
прочитал данные -> сдвинулся -> прочитал следующие -> сдвинулся
Таким образом достигается жесткая биекция.
К сожалению пока нигде. Хочется сделать apk для андроид, но каникулы подходят к концу. В понедельник на работу, школьные чаты уже о себе напоминают и моё "приключение" вот-вот закончится. Теперь любая работа над этим проектом будет продвигаться гораздо медленнее. Вероятно через какое-то неопределённое время я смогу поделиться результатами.
"Don't Repeat Yourself" ). Вы правы, так будет почище.
Программа поддерживает изменение сложности "на лету" (ползунок на скриншоте). От 5 до 0 отображаемых цифр подсказок, и от 0 до 4 скрываемых/отображаемых знака больше меньше. То какие цифры и знаки будут скрываться и в какой последовательности, определяет сид, то есть для каждого сида будет всегда своя одинаковая уникальная последовательность отображения подсказок.