QQuotaMosaic
AI-werkruimte voor code

Verdeling met grootste restanten

Verdeel maximaal 10000 zetels over maximaal 1000 niet-negatieve gehele gewichten met de grootste restanten.

● ● ●QuotaMosaic●
Werkprocessen · Verdeling met grootste restanten ×
def allocate(weights, seats):
    if type(weights) not in (list, tuple) or len(weights) > 1000:
        raise ValueError("weights.container")
    weights = tuple(weights)
    if type(seats) is not int or not 0 <= seats <= 10000:
        raise ValueError("seats.range")
    if len(weights) > 1000 or any(type(w) is not int or w < 0 for w in weights):
        raise ValueError("weights.invalid")
    total = sum(weights)
    if total == 0:
        if seats:
            raise ValueError("weight.zero")
        return [0] * len(weights)
    result = [w * seats // total for w in weights]
    remaining = seats - sum(result)
    order = sorted(range(len(weights)), key=lambda i: (-(weights[i] * seats % total), i))
    for i in order[:remaining]:
        result[i] += 1
    return result
✳Verdeel maximaal 10000 zetels over maximaal 1000 niet-negatieve gehele gewichten met de grootste restanten.
✓ WijzigingenControleer vóór het toepassen ↗
Illustratie van de werkruimte
01

Modellen

Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen.

02

Project

Test nulgewichten en gelijke restanten met invoervolgorde als doorslag en weiger positieve verdeling bij totaalgewicht nul vóór deling.

03

Controleer vóór het toepassen

Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.

Werkprocessen

Verdeling met grootste restanten

Werkprocessen ↗
Werkprocessen
def allocate(weights, seats):
    if type(weights) not in (list, tuple) or len(weights) > 1000:
        raise ValueError("weights.container")
    weights = tuple(weights)
    if type(seats) is not int or not 0 <= seats <= 10000:
        raise ValueError("seats.range")
    if len(weights) > 1000 or any(type(w) is not int or w < 0 for w in weights):
        raise ValueError("weights.invalid")
    total = sum(weights)
    if total == 0:
        if seats:
            raise ValueError("weight.zero")
        return [0] * len(weights)
    result = [w * seats // total for w in weights]
    remaining = seats - sum(result)
    order = sorted(range(len(weights)), key=lambda i: (-(weights[i] * seats % total), i))
    for i in order[:remaining]:
        result[i] += 1
    return result
AI-werkruimte voor code

Laat verdeelwijzigingen hun totalen en gelijke resten verklaren

Een verdeelroutine kan het vereiste totaal halen en individuele aandelen toch anders verdelen dan gebruikers verwachten. QuotaMosaic is AI-programmeersoftware voor Windows om dat onderscheid in je eigen project te onderzoeken. Voeg implementatie, aanroeper en enkele verwachte verdelingen aan een gesprek toe voordat je om een broncodewijziging vraagt.

Een mogelijke beoordelingstaak is een verdeling volgens de grootste-restmethode, waarbij hele eenheden op basis van niet-negatieve gewichten worden toegewezen. Vraag het verbonden model te onderzoeken hoe de basisverdeling en resterende eenheden samenhangen. Voeg een voorbeeld met gelijke resten toe en vermeld de beslisregel expliciet, zodat een gewijzigde volgorde niet stilzwijgend de uitkomst verandert.

Beoordeel de interface even zorgvuldig als de berekening. Bepaal wat lege invoer of een totaalgewicht van nul betekent als eenheden worden gevraagd en onderzoek hoe fouten de aanroeper bereiken. Voer de projectcontroles uit met kleine onafhankelijk gecontroleerde voorbeelden en controleer zowel de eindsom als de individuele toewijzingen. Behoud van één invariant bewijst de andere niet.

QuotaMosaic verbindt met ondersteunde OpenAI-compatibele of Anthropic-endpoints. Een geablitereerd AI-model kan worden gekozen waar beschikbaar, waarbij model en server de mogelijkheden en limieten bepalen. Gebruik het model om de regels te onderzoeken en een beoordeelbare patch voor te bereiden en verifieer daarna het resulterende gedrag in je toepassing.

Totalen en gelijke resten verklaren — vragen vóór het aanpassen

Wat moet ik over gelijke resten vastleggen voordat ik een patch vraag?

Specificeer hoe gelijke resten worden geordend, inclusief of de oorspronkelijke invoervolgorde van belang is. Geef een voorbeeld met gelijke resten en de verwachte verdeling. Anders kan een schijnbaar onschuldige sorteerwijziging veranderen welke ontvanger de laatste eenheid krijgt.

Is controle van de som genoeg om de wijziging te verifiëren?

Nee. Verschillende verdelingen kunnen hetzelfde totaal hebben. Controleer ook de hoeveelheid per ontvanger en de uitkomst bij gelijke resten. Gebruik onafhankelijke verwachte voorbeelden in plaats van alleen de berekening van de implementatie in een test te herhalen.

Hoe moet totaalgewicht nul worden behandeld?

Leg afzonderlijke verwachtingen vast voor een verzoek om nul eenheden en om een positief aantal. Beoordeel de bestaande foutafspraken met de aanroeper. Het model mag geen ontvangers verzinnen of door een ongedefinieerd totaal delen om de functie iets te laten teruggeven.

Definieert het voorbeeld elk verdeelbeleid?

Het definieert een specifieke beoordelingscontext met hele eenheden en niet-negatieve gewichten. Heeft je toepassing maxima, minima of andere prioriteiten, voeg die dan expliciet toe. Onderzoek of de voorgestelde wijziging nog het beleid uitvoert dat je gebruikers nodig hebben.

Download voor Windows ↗

QuotaMosaic · Bijgewerkt 2026-10-25