コード例 #1
0
def description_strength_tester(codelet):
    description = codelet.arguments[0]
    description.descriptor.buffer = 100.0
    description.updateStrength()
    strength = description.totalStrength
    probability = formulas.temperatureAdjustedProbability(strength / 100.0)
    assert formulas.coinFlip(probability)
    coderack.newCodelet('description-builder', codelet, strength)
コード例 #2
0
def __slippability(conceptMappings):
    for mapping in conceptMappings:
        slippiness = mapping.slippability() / 100.0
        probabilityOfSlippage = formulas.temperatureAdjustedProbability(
            slippiness)
        if formulas.coinFlip(probabilityOfSlippage):
            return True
    return False
コード例 #3
0
def bond_strength_tester(codelet):
    bond = codelet.arguments[0]
    __showWhichStringObjectIsFrom(bond)
    bond.updateStrength()
    strength = bond.totalStrength
    probability = formulas.temperatureAdjustedProbability(strength / 100.0)
    logging.info('bond strength = %d for %s', strength, bond)
    assert formulas.coinFlip(probability)
    bond.facet.buffer = 100.0
    bond.sourceDescriptor.buffer = 100.0
    bond.destinationDescriptor.buffer = 100.0
    logging.info("succeeded: posting bond-builder")
    coderack.newCodelet('bond-builder', codelet, strength)
コード例 #4
0
def breaker():
    probabilityOfFizzle = (100.0 - formulas.Temperature) / 100.0
    assert not formulas.coinFlip(probabilityOfFizzle)
    # choose a structure at random
    structures = [s for s in workspace.structures if
                  isinstance(s, (Group, Bond, Correspondence))]
    assert structures
    structure = random.choice(structures)
    __showWhichStringObjectIsFrom(structure)
    breakObjects = [structure]
    if isinstance(structure, Bond):
        if structure.source.group:
            if structure.source.group == structure.destination.group:
                breakObjects += [structure.source.group]
    # try to break all objects
    for structure in breakObjects:
        breakProbability = formulas.temperatureAdjustedProbability(
            structure.totalStrength / 100.0)
        if formulas.coinFlip(breakProbability):
            return
    for structure in breakObjects:
        structure.break_the_structure()