Aritmetika postfix terbatas
Evaluasi satu hingga 100 token postfix dengan bilangan bulat terbatas dan operator +, -, *, serta //.
def postfix_value(tokens):
tokens = tuple(tokens)
if not 1 <= len(tokens) <= 100:
raise ValueError("tokens.limit")
stack = []
for token in tokens:
if type(token) is int and abs(token) <= 1000000000:
stack.append(token)
continue
if type(token) is not str or token not in ("+", "-", "*", "//") or len(stack) < 2:
raise ValueError("token.invalid")
right, left = stack.pop(), stack.pop()
if token == "//" and right == 0:
raise ValueError("division.zero")
value = (left + right if token == "+" else left - right if token == "-" else left * right if token == "*" else left // right)
if abs(value) > 10**18:
raise ValueError("result.range")
stack.append(value)
if len(stack) != 1:
raise ValueError("stack.remainder")
return stack[0]- Proyek
- Uji pembagian negatif yang dibulatkan ke bawah dan tolak pembagian nol, tumpukan tidak lengkap, atau nilai mutlak antara di atas 10**18.
- 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.
def postfix_value(tokens):
tokens = tuple(tokens)
if not 1 <= len(tokens) <= 100:
raise ValueError("tokens.limit")
stack = []
for token in tokens:
if type(token) is int and abs(token) <= 1000000000:
stack.append(token)
continue
if type(token) is not str or token not in ("+", "-", "*", "//") or len(stack) < 2:
raise ValueError("token.invalid")
right, left = stack.pop(), stack.pop()
if token == "//" and right == 0:
raise ValueError("division.zero")
value = (left + right if token == "+" else left - right if token == "-" else left * right if token == "*" else left // right)
if abs(value) > 10**18:
raise ValueError("result.range")
stack.append(value)
if len(stack) != 1:
raise ValueError("stack.remainder")
return stack[0]Definisikan kemampuan ekspresi sebelum mengubah parsernya
Penanganan ekspresi memerlukan batas jelas meskipun bahasanya kecil. StackSundial adalah ruang kerja pemrograman AI Windows untuk membahas batas itu di samping berkas sumber. Buka proyek dan minta model terhubung memeriksa token yang diterima, aturan evaluasi, dan penanganan kesalahan pemanggil sebelum mengusulkan perubahan implementasi.
Salah satu tugas adalah meninjau evaluator postfix untuk layar perhitungan internal. Tentukan operator yang diizinkan, batas numerik, dan respons terhadap ekspresi berformat salah. Minta asisten mengidentifikasi tempat penegakan kebutuhan itu dan mengusulkan perubahan terarah jika belum ada. Dengan begitu, percakapan membahas pemeliharaan perangkat lunak Anda, bukan sekadar menghasilkan evaluator lain.
Tinjau jalur penolakan dengan perhatian yang sama seperti aritmetika berhasil. Jalankan pemeriksaan proyek untuk operand hilang, hasil berlebih, pembagian dengan nol, dan nilai di luar batas yang diizinkan. Periksa urutan operand pada operasi nonkomutatif dan pastikan pemanggil menerima kesalahan yang dimaksud. Hindari menerima perulangan evaluasi lebih pendek jika melemahkan kontrak di sekitarnya.
StackSundial mendukung koneksi ke endpoint yang kompatibel dengan OpenAI atau endpoint Anthropic. Jika tersedia, pilih model AI abliterasi dengan memahami bahwa batasan, batas konteks, dan alat bergantung pada layanan pilihan. Kode usulannya tetap merupakan titik awal untuk pemeriksaan dan verifikasi sendiri, bukan bukti interpreter sudah siap.
Sebelum menerima perubahan evaluator
- Aturan apa yang harus disertakan dalam deskripsi tugas?
Nyatakan token yang diizinkan, tipe operand, batas numerik, dan perilaku kesalahan. Sertakan pemanggil yang menyajikan kegagalan kepada pengguna. Tanpa aturan itu, usulan dapat menghitung contoh biasa dengan benar sambil menerima ekspresi yang seharusnya ditolak aplikasi.
- Mengapa menguji pengurangan dan pembagian secara eksplisit?
Hasilnya bergantung pada urutan operand, berbeda dari penjumlahan dalam kasus biasa. Gunakan kasus uji dengan hasil yang jelas berbeda jika operand dibalik. Periksa konvensi pembagian yang diwajibkan proyek serta respons terhadap pembagi nol.
- Haruskah ekspresi berformat salah mengembalikan nol?
Hanya jika itu kebutuhan aplikasi yang eksplisit. Nilai pengganti numerik yang tampak masuk akal dapat menyembunyikan masukan buruk. Minta asisten mempertahankan jalur penolakan jelas dan periksa cara pemanggil membedakan hasil nol valid dari kesalahan.
- Bisakah batas token saja membatasi evaluasi?
Tinjau semua batas yang diperlukan proyek, termasuk nilai antara dan struktur masukan yang diterima. Jumlah token hanya menjawab satu bagian kontrak itu. Uji jalur penolakan yang relevan setelah setiap perubahan perulangan evaluasi.
StackSundial · Diperbarui 2026-10-25