Хабы: Математика, Программирование, Python
Хочу поделиться некоторым опытом по написанию программ для перечисления комбинаторных объектов из заданного класса (в примере будут рассматриваться латинские квадраты, хотя на картинке, для зрелищности, показан латинский куб). Обычно нужно перечислить все объекты с заданными параметрами, например, таблицы заданного размера, заполненные числами согласно некоторому правилу. Под словом «все» можно подразумевать как «все различные», так и «принципиально различные» в смысле, специфическом для конкретной задачи, например, таблицы могут считаться принципиально одинаковыми (эквивалентными), если одна получается из другой перестановкой строк.
Читать далее