Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
Boltzmann: default builders show the labels
Browse files Browse the repository at this point in the history
  • Loading branch information
Kerl13 committed Jun 22, 2019
1 parent a25d00c commit b94b94a
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions src/sage/combinat/boltzmann_sampling/generator.pyx
Expand Up @@ -226,20 +226,22 @@ cdef inline ProductBuilder(builders):
return tuple(builders[i](terms[i]) for i in range(len(terms)))
return build

cdef make_default_builder(rule):
cdef make_default_builder(rule, labelled=False):
"""Generate the default builders for a rule.
For use with Boltzmann samplers :mod:`sage.combinat.boltzmann_sampling`"""
if isinstance(rule, Ref):
return identity
elif isinstance(rule, Atom):
# return first
return identity
if labelled:
return identity
else:
return first
elif isinstance(rule, Union):
subbuilders = [make_default_builder(component) for component in rule.args]
subbuilders = [make_default_builder(component, labelled) for component in rule.args]
return UnionBuilder(*subbuilders)
elif isinstance(rule, Product):
subbuilders = [make_default_builder(component) for component in rule.args]
subbuilders = [make_default_builder(component, labelled) for component in rule.args]
return ProductBuilder(subbuilders)


Expand Down Expand Up @@ -540,7 +542,10 @@ class Generator:
self.singularity = None
# init builders
self.builders = [
make_default_builder(self.grammar.rules[self.id_to_name[id]])
make_default_builder(
self.grammar.rules[self.id_to_name[id]],
labelled=self.grammar.labelled
)
for id in range(len(self.id_to_name))
]
if self.grammar.labelled:
Expand Down

0 comments on commit b94b94a

Please sign in to comment.