Kanonische Zuweisung von Präfixcodes
Vergib kanonische binäre Präfixcodes für höchstens 256 Symbole mit Längen von 1 bis 16.
def canonical_codes(lengths):
if type(lengths) is not dict or len(lengths) > 256:
raise ValueError("codes.input")
if any(type(s) is not str or not s or type(n) is not int or
not 1 <= n <= 16 for s,n in lengths.items()):
raise ValueError("codes.length")
result, code, previous = {}, 0, 0
for symbol, length in sorted(lengths.items(), key=lambda p:(p[1],p[0])):
code <<= length-previous
if code >= 1 << length:
raise ValueError("codes.oversubscribed")
result[symbol] = format(code, f"0{length}b")
code += 1
previous = length
return result| Vor dem Anwenden prüfen | Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen. |
|---|---|
| Modelle | Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen. |
| Projekt | Teste leere und unvollständige Tabellen, sortiere gleiche Längen nach den ursprünglichen Unicode-Zeichenfolgen und lehne überbelegte oder ungültige Längen ohne Normalisierung ab. |
def canonical_codes(lengths):
if type(lengths) is not dict or len(lengths) > 256:
raise ValueError("codes.input")
if any(type(s) is not str or not s or type(n) is not int or
not 1 <= n <= 16 for s,n in lengths.items()):
raise ValueError("codes.length")
result, code, previous = {}, 0, 0
for symbol, length in sorted(lengths.items(), key=lambda p:(p[1],p[0])):
code <<= length-previous
if code >= 1 << length:
raise ValueError("codes.oversubscribed")
result[symbol] = format(code, f"0{length}b")
code += 1
previous = length
return resultÄnderungen an Codetabellen reproduzierbar machen
Wenn zwei Implementierungen aus derselben Beschreibung unterschiedliche Codetabellen erzeugen, erfordert die Fehlersuche mehr als eine weitere Beispielausgabe. Codelith bietet dafür eine KI-Programmierumgebung unter Windows: Öffnen Sie das Projekt, bringen Sie die abweichenden Ergebnisse ins Gespräch ein und lassen Sie das verbundene Modell vor Änderungsvorschlägen die Ursache des Unterschieds im Quellcode untersuchen.
Eine passende Aufgabe ist die Zuweisung kanonischer Präfixcodes anhand von Symbollängen. Beschreiben Sie die Sortierregel bei gleichen Längen und ob ursprüngliche Unicode-Zeichenfolgen unverändert bleiben müssen. Fügen Sie den nutzenden Code der Tabelle hinzu, damit der Vorschlag das zu lesende Format berücksichtigt. Das Zuweisungsbeispiel strukturiert Ihre Codeprüfung; es ist kein mitgeliefertes Kodierungswerkzeug.
Bitten Sie um einen gezielten Vorschlag, der die gewählte Reihenfolge ausdrücklich festlegt. Prüfen Sie leere und unvollständige Tabellen getrennt von überbelegten Codelängen und führen Sie dann Formattests in der eigenen Projektumgebung aus. Vergleichen Sie exakte Bitfolgen und Symbolzuordnungen. Auch eine geordnete Tabelle kann vom nutzenden Code abweichen. Halten Sie die erwartete Serialisierung während der Prüfung sichtbar.
Codelith unterstützt Modellverbindungen über OpenAI-kompatible oder Anthropic-Endpunkte. Ein uneingeschränktes KI-Modell ist wählbar, wenn Ihr Anbieter es bereitstellt; Zugangsdaten sind nach Bedarf erforderlich. Der gewählte Server und das Modell bestimmen Kontext, Werkzeuge und Einschränkungen. Ihre Testdaten und Prüfung stellen fest, ob die vorgeschlagene Kodierungsänderung die Anwendungsanforderungen erfüllt.
Fragen zu einer Codetabellenänderung
- Welche Belege helfen, zwei unterschiedliche Tabellen zu erklären?
Liefern Sie dieselbe Eingabe aus Symbolen und Längen, beide Ergebnistabellen und die dokumentierte Sortierkonvention. Zeigen Sie, wo die Anwendung die Tabelle schreibt oder liest. Das Modell kann dann eine konkrete Abweichung besprechen, statt die erwartete Formatausgabe zu erraten.
- Sollten Unicode-Symbole vor dem Sortieren normalisiert werden?
Nur wenn das Format diese Umwandlung ausdrücklich verlangt. Die Beispielaufgabe bewahrt ursprüngliche Zeichenfolgen und sortiert sie entsprechend. Nennen Sie die Konvention in der Anfrage und prüfen Sie, dass der vorgeschlagene Code unterschiedliche Symbole nicht stillschweigend zusammenführt oder verändert.
- Sind unvollständige und überbelegte Tabellen gleichartige Fehler?
Sie beschreiben unterschiedliche Zustände; Ihr Format bestimmt, welche es zulässt. Fügen Sie getrennte Testfälle und erwartete Ergebnisse hinzu. Der Vorschlag sollte die Unterscheidung bewahren, statt ungenutzten Coderaum generell als Beleg für eine ungültige Tabelle zu behandeln.
- Wie prüfe ich die Kompatibilität mit einem vorhandenen Leser?
Führen Sie repräsentative Tabellentests durch den schreibenden und lesenden Projektcode aus und vergleichen Sie die vom Format verlangten exakten Zuordnungen. Prüfen Sie beide Pfade, wenn der Vorschlag die Reihenfolge verändert. Eine erfolgreiche Quellcodeänderung allein belegt keine Kompatibilität mit bereits gespeicherten Daten.
Codelith · Aktualisiert 2026-10-25