Penetapan kode prefiks kanonis
Tetapkan kode prefiks biner kanonis bagi maksimal 256 simbol dengan panjang 1 sampai 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| Tinjau sebelum menerapkan | Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain. |
|---|---|
| Model | Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah. |
| Proyek | Uji tabel kosong dan tak lengkap, urutkan panjang sama berdasarkan string Unicode asli lalu tolak panjang berlebih atau tak valid tanpa normalisasi. |
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 resultBuat perubahan tabel pengodean dapat direproduksi
Ketika dua implementasi membuat tabel pengodean berbeda dari deskripsi yang sama, penelusuran kesalahan memerlukan lebih dari contoh keluaran tambahan. Codelith menyediakan ruang kerja pemrograman AI untuk Windows bagi penyelidikan itu: buka proyek, masukkan hasil yang berbeda ke percakapan, dan minta model yang terhubung memeriksa sumber perbedaannya sebelum menyarankan perubahan.
Salah satu tugas yang sesuai adalah penetapan kode prefiks kanonis dari panjang simbol. Jelaskan aturan urutan untuk panjang yang sama dan apakah string Unicode asli harus tetap utuh. Sertakan komponen pengguna tabel agar usulan mempertimbangkan format yang harus dibacanya. Contoh penetapan itu adalah cara membingkai peninjauan kode, bukan alat pengodean yang disertakan dalam ruang kerja.
Minta usulan terfokus yang menyatakan urutan pilihan secara eksplisit. Tinjau tabel kosong dan tidak lengkap secara terpisah dari panjang kode yang melebihi kapasitas, lalu jalankan data uji format di lingkungan proyek sendiri. Bandingkan string bit persis dan hubungan simbolnya. Tabel yang teratur tetap dapat tidak cocok dengan penggunanya. Pastikan serialisasi yang diharapkan tetap terlihat selama peninjauan.
Codelith mendukung koneksi model melalui endpoint kompatibel OpenAI atau Anthropic. Model AI tanpa batasan dapat dipilih jika penyedia Anda menawarkannya, dengan kredensial sesuai kebutuhan. Server dan model terpilih mengatur konteks, alat, serta pembatasan. Data uji dan peninjauan Anda menentukan apakah perubahan pengodean yang diusulkan memenuhi kontrak aplikasi.
Pertanyaan untuk perubahan tabel pengodean
- Bukti apa yang membantu menjelaskan dua tabel berbeda?
Berikan masukan simbol-panjang yang sama, setiap tabel hasil, dan konvensi urutan yang didokumentasikan. Identifikasi di mana aplikasi menulis atau membaca tabel. Model kemudian dapat membahas ketidaksesuaian konkret, bukan menebak keluaran yang diharapkan format.
- Haruskah simbol Unicode dinormalisasi sebelum diurutkan?
Hanya jika format secara eksplisit mewajibkan transformasi itu. Tugas ilustrasi mempertahankan string asli dan mengurutkannya sesuai itu. Nyatakan konvensi dalam permintaan, lalu verifikasi bahwa kode usulan tidak diam-diam menggabungkan atau mengubah simbol yang berbeda.
- Apakah tabel tidak lengkap dan tabel yang melebihi kapasitas merupakan kesalahan setara?
Keduanya menggambarkan kondisi berbeda, dan format Anda menentukan mana yang diterima. Sertakan data uji terpisah serta hasil yang diharapkan. Minta usulan mempertahankan pembedaan itu, bukan menganggap ruang kode yang tidak terpakai sebagai bukti tabel tidak valid.
- Bagaimana memeriksa kompatibilitas dengan pembaca yang ada?
Jalankan data uji tabel yang representatif melalui penulis dan pembaca proyek, sambil membandingkan hubungan persis yang diwajibkan format. Tinjau kedua jalur jika usulan mengubah urutan. Penyuntingan kode yang berhasil saja tidak membuktikan kompatibilitas dengan data yang sudah tersimpan.
Codelith · Diperbarui 2026-10-25