ถ้าคุณจำกลับไปปีการศึกษาของคุณคุณอาจจำได้เรียนรู้เกี่ยวกับตารางความจริง ดูเหมือนว่าพวกเขาน่าเบื่อ แต่เป็นพื้นฐานสำหรับตรรกะและ (บางคนอาจโต้แย้ง) การคำนวณทั้งหมด ...
ปัญหา
ภารกิจของคุณคุณควรเลือกที่จะยอมรับมันคือการเขียนโปรแกรมฟังก์ชั่นหรือวิดเจ็ตของรหัสที่สามารถแสดงผลตารางความจริงที่ป้อนเข้า
อินพุต
การป้อนข้อมูลจะเป็นสตริง (เช่นโครงสร้างข้อมูล) ที่มีคำสั่งตรรกะเพื่อทำให้ตารางความจริงเป็น ตัวอย่างเช่น:
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
ในตารางความจริง;)
p
q
นอกจากว่าพวกเขามีชื่อเหล่านี้เสมอคุณอาจต้องการแสดงตัวเลือกที่แตกต่างกันในตัวอย่างทดสอบ พวกเขาเป็นตัวอักษรเดียวเสมอหรือไม่?