def test_guided_searcher(): tilescope = TileScope( "123", TileScopePack.point_placements().make_fusion(tracked=False)) spec = tilescope.auto_search() searcher = GuidedSearcher.from_spec( spec, TileScopePack.point_placements().make_fusion(tracked=True)) tracked_spec = searcher.auto_search() tracked_spec = tracked_spec.expand_verified() assert [tracked_spec.count_objects_of_size(i) for i in range(13)] == [ 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, ]
def forest_expansion(): """ A forest spec that at some point became not productive once expanded. """ basis = "0213_1032_1302" pack = TileScopePack.point_placements() css = TileScope(basis, pack, ruledb=RuleDBForest()) spec = css.auto_search(status_update=30) for rule in spec.rules_dict.values(): rule.label = spec.get_label(rule.comb_class) spec.expand_verified() assert [spec.count_objects_of_size(i) for i in range(13)] == [ 1, 1, 2, 6, 21, 77, 287, 1079, 4082, 15522, 59280, 227240, 873886, ]
def test_123_interleaving(): pack = TileScopePack.point_placements().make_interleaving() css = TileScope("123", pack) spec = css.auto_search(status_update=30) spec = spec.expand_verified() assert isinstance(spec, CombinatorialSpecification) assert [spec.count_objects_of_size(i) for i in range(20)] == [ 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, ]
def test_inject_basis(): pack = TileScopePack.point_placements() assert not pack.ver_strats[2].basis fixed_pack = pack.add_basis([Perm((0, 1, 2, 3))]) assert isinstance(pack.ver_strats[2], strat.OneByOneVerificationStrategy) assert not pack.ver_strats[2].basis assert isinstance(fixed_pack, TileScopePack) assert isinstance(fixed_pack.ver_strats[2], strat.OneByOneVerificationStrategy) assert fixed_pack.ver_strats[2].basis == (Perm((0, 1, 2, 3)), )
def test_from_tiling(): t = Tiling(obstructions=[ GriddedPerm(Perm((0, 1)), ((0, 0), (0, 0))), GriddedPerm(Perm((0, 1)), ((0, 0), (1, 1))), GriddedPerm(Perm((0, 1)), ((1, 1), (1, 1))), ]) searcher = TileScope(t, TileScopePack.point_placements()) spec = searcher.auto_search() print(spec) assert sympy.simplify(spec.get_genf() - sympy.sympify("(1+x)/(1-x)")) == 0
import pytest import sympy from comb_spec_searcher import CombinatorialSpecification from comb_spec_searcher.rule_db import LimitedStrategyRuleDB from comb_spec_searcher.strategies import EmptyStrategy from comb_spec_searcher.strategies.rule import VerificationRule from comb_spec_searcher.utils import taylor_expand from permuta import Perm from tilings import GriddedPerm, Tiling from tilings import strategies as strat from tilings.strategies.fusion import ComponentFusionStrategy, FusionStrategy from tilings.strategy_pack import TileScopePack from tilings.tilescope import TileScope point_placements = TileScopePack.point_placements() all_the_strategies_verify_database = TileScopePack.all_the_strategies( ).make_database() all_the_strategies_fusion = TileScopePack.all_the_strategies().make_fusion( tracked=False) point_placements_fusion = point_placements.make_fusion(tracked=False) point_placements_component_fusion = point_placements.make_fusion( component=True, tracked=False) row_placements_fusion = TileScopePack.row_and_col_placements( row_only=True).make_fusion(tracked=True) row_and_col_placements_component_fusion_fusion = ( TileScopePack.row_and_col_placements().make_fusion( component=True, tracked=False).make_fusion(tracked=False)) reginsenc = TileScopePack.regular_insertion_encoding(3)