BBarCumulus
Espace de développement avec IA

Rectangle maximal dans un histogramme

Trouvez le plus grand rectangle sous des barres de largeur unitaire avec au plus 256 hauteurs entières entre zéro et 1000000.

● ● ●BarCumulus●
Méthodes de travail · Rectangle maximal dans un histogramme ×
def histogram_area(heights):
    heights = tuple(heights)
    if len(heights) > 256 or any(type(h) is not int or not 0 <= h <= 1000000 for h in heights):
        raise ValueError("height.range")
    stack, best = [], 0
    for i in range(len(heights) + 1):
        current = heights[i] if i < len(heights) else 0
        while stack and heights[stack[-1]] > current:
            height = heights[stack.pop()]
            start = stack[-1] + 1 if stack else 0
            best = max(best, height * (i - start))
        stack.append(i)
    return best
✳Trouvez le plus grand rectangle sous des barres de largeur unitaire avec au plus 256 hauteurs entières entre zéro et 1000000.
✓ ModificationsVérifiez avant d’appliquer ↗
Illustration de l’espace de travail
01

Projet

Testez une entrée vide et des hauteurs égales, en rejetant les valeurs négatives ou booléennes sans modifier les données.

02

Vérifiez avant d’appliquer

Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.

03

Modèles

Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément.

Méthodes de travail

Rectangle maximal dans un histogramme

Méthodes de travail ↗
Méthodes de travail
def histogram_area(heights):
    heights = tuple(heights)
    if len(heights) > 256 or any(type(h) is not int or not 0 <= h <= 1000000 for h in heights):
        raise ValueError("height.range")
    stack, best = [], 0
    for i in range(len(heights) + 1):
        current = heights[i] if i < len(heights) else 0
        while stack and heights[stack[-1]] > current:
            height = heights[stack.pop()]
            start = stack[-1] + 1 if stack else 0
            best = max(best, height * (i - start))
        stack.append(i)
    return best
Espace de développement avec IA

Définissez ce qu’une refactorisation doit préserver avant de la modifier

BarCumulus est un espace de programmation avec IA sous Windows pour examiner une modification d’implémentation sans perdre le comportement à préserver. Ouvrez le dossier du projet et expliquez le but de la refactorisation : un état plus clair, une fonction plus petite ou des tests plus faciles. Demandez au modèle d’examiner le contrat existant avant de proposer un remplacement.

Vous pouvez connecter un modèle d’IA sans censure si votre point de terminaison compatible OpenAI ou Anthropic pris en charge le propose. Ajoutez les identifiants nécessaires. Les restrictions du fournisseur, les capacités des outils et les limites de contexte restent applicables ; utilisez donc la conversation pour élaborer un raisonnement vérifiable, sans considérer qu’une implémentation différente est en soi une amélioration.

Le calcul du rectangle maximal sur des hauteurs de barres constitue un exemple possible. Demandez une revue du traitement des plateaux, de l’entrée vide et du travail restant en fin de traitement. Incluez de petits jeux de test aux résultats vérifiés manuellement, puis demandez quelles parties de la refactorisation proposée préservent ces cas et lesquelles les modifient.

Examinez le diff obtenu et exécutez les vérifications du projet sur la version exacte que vous comptez conserver. Pour les modifications complexes, comparez avec une implémentation simple indépendante sur de petites entrées. Cette comparaison apporte des éléments dans la plage testée ; elle ne transforme pas l’espace de programmation en système de preuve automatique.

Rendre une refactorisation vérifiable

Quelle raison utile peut motiver une refactorisation d’algorithme ?

Nommez un problème de maintenance évaluable, comme des transitions d’état obscures ou des traitements dupliqués. Demandez la plus petite proposition qui le résout. Un remplacement doit se justifier par sa lisibilité et un comportement vérifié, pas seulement par sa nouveauté.

Pourquoi inclure des barres de même hauteur dans les tests ?

Des valeurs égales peuvent révéler les hypothèses sur la conservation ou la suppression de l’état en attente. Incluez un court plateau au résultat attendu connu. Demandez au modèle d’expliquer ce cas dans l’implémentation proposée avant d’examiner de plus grands exemples.

Les tests différentiels prouvent-ils l’équivalence de deux implémentations ?

Ils étayent l’équivalence pour les entrées testées et peuvent révéler des désaccords. Gardez visibles la plage d’entrée et l’implémentation de référence, et examinez les différences. Ne présentez pas des tests finis comme une preuve pour toute entrée possible acceptée par la fonction de production.

Comment examiner un script de comparaison proposé ?

Lisez ses bornes d’entrée et son plan d’exécution avant de le lancer. Confirmez aussi les destinations des outils : l’inférence locale nécessite un serveur distinct et ne rend pas locaux tous les outils d’exécution connectés. Gardez délibérément les charges de test petites.

Télécharger pour Windows ↗

BarCumulus · Mis à jour 2026-10-25