ถ้าคุณจำกลับไปปีการศึกษาของคุณคุณอาจจำได้เรียนรู้เกี่ยวกับตารางความจริง ดูเหมือนว่าพวกเขาน่าเบื่อ แต่เป็นพื้นฐานสำหรับตรรกะและ (บางคนอาจโต้แย้ง) การคำนวณทั้งหมด ...
ปัญหา
ภารกิจของคุณคุณควรเลือกที่จะยอมรับมันคือการเขียนโปรแกรมฟังก์ชั่นหรือวิดเจ็ตของรหัสที่สามารถแสดงผลตารางความจริงที่ป้อนเข้า
อินพุต
การป้อนข้อมูลจะเป็นสตริง (เช่นโครงสร้างข้อมูล) ที่มีคำสั่งตรรกะเพื่อทำให้ตารางความจริงเป็น ตัวอย่างเช่น:
p ∧ q
นี่หมายถึงp and q(การเชื่อมโยงแบบลอจิคัล) และจะส่งออก:
p q p ∧ q
T T T
T F F
F T F
F F F
สังเกตเห็นการเว้นวรรค: รายการของคอลัมน์อยู่ตรงกลางของส่วนหัว
ตัวละคร
ให้คะแนนผ่านตัวละครไม่ใช่ไบต์ ตัวอักขระเปรียบเทียบแบบลอจิกมีความพิเศษและไม่เหมือนกันเสมอ ใช้ตัวละครเหล่านี้:
การเชื่อมต่อแบบลอจิคัล (AND): ∧U + 2227
ความผิดพลาดเชิงตรรกะ (OR): ∨U + 2228
การปฏิเสธเชิงตรรกะ (NOT) ~หรือ¬U + 7e และ U + ac ตามลำดับ
โบนัส
โบนัสเหล่านี้เป็นตัวเลือก แต่จะทำให้คะแนนของคุณหายไป เลือกใด ๆ
การปฏิเสธเชิงตรรกะ
Logical Negation เป็นโอเปอเรเตอร์ unary ในตารางความจริง มันเทียบเท่ากับ!ในภาษา C-based ส่วนใหญ่ มันทำให้false=> trueและคีมจับในทางกลับกัน มันมีเครื่องหมาย¬ หรือ ~ (คุณต้องสนับสนุนทั้งสอง) การสนับสนุนสิ่งนี้จะทำให้คะแนนของคุณลดลง 10% อย่างไรก็ตามคุณต้องเพิ่มคอลัมน์เพิ่มเติมเพื่อแสดงผลลัพธ์: ตัวอย่างเช่น:
~p ∧ q
จะส่งออก:
p ~p q ~p ∧ q
T F T F
T F F F
F T T T
F T F F
พริตตี้พิมพ์
สัญกรณ์ตารางปกติน่าเบื่อ มาทำให้สวยกันเถอะ! รูปแบบการพิมพ์ที่สวยงามมีดังต่อไปp ∧ qนี้เป็นดังนี้:
+---+---+-------+
| p | q | p ∧ q |
+---+---+-------+
| T | T | T |
+---+---+-------+
| T | F | F |
+---+---+-------+
| F | T | F |
+---+---+-------+
| F | F | F |
+---+---+-------+
รายละเอียดพิเศษสำหรับงานพิมพ์สวย:
- มีช่องว่างภายใน 1 ช่องในแต่ละเซลล์
- ค่าของเซลล์ยังคงอยู่กึ่งกลาง
ถ้าคุณสวยพิมพ์ตารางของคุณจากรหัสของคุณแล้วคูณด้วย 0.6 ใช้ฟังก์ชั่นนี้สำหรับโบนัสนี้:
score = 0.6 * code
ตัวอย่าง
p ∧ q:
p q p ∧ q
T T T
T F F
F T F
F F F
p ∨ q:
p q p ∨ q
T T T
T F T
F T T
F F F
~p ∧ q:
p ~p q ~p ∧ q
T F T F
T F F F
F T T T
F T F F
~p ∨ q:
p ~p q ~p ∧ q
T F T T
T F F F
F T T T
F T F T
กฎระเบียบ
- ช่องโหว่มาตรฐานใช้
- ไม่มีทรัพยากรภายนอก
- หากคุณกำลังฝ่าฝืนกฎจงฉลาด;)
ชนะรหัสที่สั้นที่สุด (เป็นตัวอักษร) โชคดี!
score = 0.6 * (code - 15)=.6 * code - 9
p qและrในตารางความจริง;)

pqนอกจากว่าพวกเขามีชื่อเหล่านี้เสมอคุณอาจต้องการแสดงตัวเลือกที่แตกต่างกันในตัวอย่างทดสอบ พวกเขาเป็นตัวอักษรเดียวเสมอหรือไม่?