เลขคณิตแบบโพสต์ฟิกซ์ที่มีขอบเขต
ประเมินโทเคนโพสต์ฟิกซ์หนึ่งถึง 100 ตัวด้วยจำนวนเต็มมีขอบเขตและตัวดำเนินการ +, -, * และ //.
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]- โปรเจกต์
- ทดสอบการหารค่าลบแบบปัดลง แล้วปฏิเสธการหารด้วยศูนย์ สแตกไม่สมบูรณ์ หรือค่าสัมบูรณ์ระหว่างทางเกิน 10**18.
- ตรวจสอบก่อนนำไปใช้
- เปรียบเทียบการทำงานจริงกับผลที่คาดหวัง หากการตรวจสอบไม่ผ่าน ให้หาสาเหตุก่อนแก้ไขเพิ่มเติม
- โมเดล
- ตั้งค่า endpoint ที่รองรับ OpenAI หรือ Anthropic ด้วย URL หลักและคีย์ API หากจำเป็น ทดสอบการเชื่อมต่อ เซิร์ฟเวอร์โมเดลในเครื่องต้องทำงานอยู่ เครื่องมือระยะไกลอาจส่งข้อมูลแยกต่างหาก
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]กำหนดว่านิพจน์ทำอะไรได้ก่อนเปลี่ยนตัวแยกวิเคราะห์
การจัดการนิพจน์ต้องมีขอบเขตชัดแม้ภาษาจะเล็ก StackSundial เป็นพื้นที่เขียนโค้ดด้วย AI บน Windows สำหรับอภิปรายขอบเขตเหล่านั้นข้างไฟล์ซอร์ส เปิดโครงการและขอให้โมเดลที่เชื่อมต่อตรวจโทเคนที่ยอมรับ กฎการประเมิน และการจัดการข้อผิดพลาดของผู้เรียกก่อนเสนอแก้โค้ด
งานหนึ่งที่เป็นไปได้คือการตรวจตัวประเมิน postfix ที่ใช้ในหน้าจอคำนวณภายใน ระบุตัวดำเนินการที่อนุญาต ขีดจำกัดตัวเลข และการตอบสนองต่อนิพจน์ผิดรูปแบบ ขอให้ผู้ช่วยระบุจุดที่บังคับใช้ข้อกำหนดเหล่านั้นและเสนอการแก้เฉพาะจุดที่ยังขาด วิธีนี้ทำให้การสนทนาเกี่ยวกับการดูแลซอฟต์แวร์ของคุณ ไม่ใช่เพียงสร้างตัวประเมินอีกตัว
ตรวจเส้นทางปฏิเสธอย่างใส่ใจเท่ากับเลขคณิตที่สำเร็จ รันการตรวจโครงการสำหรับตัวถูกดำเนินการที่ขาด ผลลัพธ์เกิน การหารด้วยศูนย์ และค่าเกินขอบเขต ตรวจลำดับตัวถูกดำเนินการในการดำเนินการที่สลับที่ไม่ได้ และยืนยันว่าผู้เรียกได้รับข้อผิดพลาดที่ตั้งใจ หลีกเลี่ยงการยอมรับลูปประเมินที่สั้นลงหากทำให้ข้อตกลงรอบข้างอ่อนลง
StackSundial รองรับการเชื่อมต่อปลายทางที่เข้ากันได้กับ OpenAI หรือปลายทาง Anthropic เลือกโมเดล AI แบบ abliterated เมื่อมีให้ โดยเข้าใจว่าข้อจำกัด ขีดจำกัดบริบท และเครื่องมือขึ้นอยู่กับบริการที่เลือก โค้ดที่เสนอเป็นจุดเริ่มต้นสำหรับตรวจและยืนยันเอง ไม่ใช่หลักฐานว่าตัวแปลภาษาพร้อมแล้ว
ก่อนยอมรับแพตช์ตัวประเมิน
- ควรรวมกฎใดในคำอธิบายงาน?
ระบุโทเคนที่อนุญาต ชนิดตัวถูกดำเนินการ ขอบเขตตัวเลข และพฤติกรรมข้อผิดพลาด รวมผู้เรียกที่แสดงความล้มเหลวแก่ผู้ใช้ หากไม่มีกฎเหล่านี้ ข้อเสนออาจคำนวณตัวอย่างปกติถูก แต่ยอมรับนิพจน์ที่แอปพลิเคชันตั้งใจปฏิเสธ
- เหตุใดต้องทดสอบการลบและการหารอย่างชัดเจน?
ผลขึ้นอยู่กับลำดับตัวถูกดำเนินการ ต่างจากการบวกในกรณีทั่วไป ใช้กรณีทดสอบที่ให้ผลต่างชัดเมื่อสลับตัวถูกดำเนินการ ตรวจข้อตกลงการหารที่โครงการต้องการพร้อมการตอบสนองต่อตัวหารศูนย์
- นิพจน์ผิดรูปแบบควรคืนศูนย์หรือไม่?
เฉพาะเมื่อเป็นข้อกำหนดแอปพลิเคชันที่ชัดเจน ค่าเลขสำรองที่ดูสมเหตุผลอาจซ่อนข้อมูลผิด ขอให้ผู้ช่วยรักษาเส้นทางปฏิเสธที่ชัด และตรวจว่าผู้เรียกแยกผลศูนย์ที่ถูกต้องจากข้อผิดพลาดอย่างไร
- ขีดจำกัดจำนวนโทเคนอย่างเดียวจำกัดการประเมินได้หรือไม่?
ตรวจทุกขีดจำกัดที่โครงการต้องการ รวมค่าระหว่างคำนวณและโครงสร้างข้อมูลเข้าที่ยอมรับ จำนวนโทเคนตอบเพียงส่วนหนึ่งของข้อตกลง ทดสอบเส้นทางปฏิเสธที่เกี่ยวข้องหลังเปลี่ยนลูปประเมินทุกครั้ง
StackSundial · อัปเดตล่าสุด 2026-10-25