CoolFace
Apppublic

build-small-hackathon/aube-nova

sourceHugging Faceupdated 3mo agoView on Hugging Face
1likes
genetics.py44 linesDownload Raw Back to simulation
1"""2Trait inheritance for the generational mechanic.3Pure math — no LLM.4"""5 6import random7 8from simulation.colonist import ALL_TRAITS, Colonist9 10 11def inherit_traits(12    parent_a: Colonist, parent_b: Colonist, cultural_bias: list[str] | None = None13) -> list[str]:14    """15    Child inherits from both parents with mutation.16    cultural_bias: traits common in the colony get slight preference.17    """18    pool = parent_a.traits + parent_b.traits19    inherited = random.sample(pool, k=min(3, len(pool)))20 21    # Mutation: 15% chance to add a colony-culture trait22    if random.random() < 0.15:23        if cultural_bias:24            inherited.append(random.choice(cultural_bias))25        else:26            inherited.append(random.choice(ALL_TRAITS))27 28    return list(set(inherited))[:3]29 30 31def spawn_child(32    parent_a: Colonist, parent_b: Colonist, child_id: str, cultural_bias: list[str]33) -> Colonist:34    traits = inherit_traits(parent_a, parent_b, cultural_bias)35    return Colonist(36        id=child_id,37        name=f"{parent_a.name[:2]}{parent_b.name[:2]}",  # merged name38        age=0,39        job=random.choice(["farmer", "researcher", "engineer", "medic"]),40        traits=traits,41        generation=max(parent_a.generation, parent_b.generation) + 1,42        parent_ids=[parent_a.id, parent_b.id],43    )44