มีฟังก์ชั่นบูลีน 16 แบบสำหรับตัวแปรไบนารีสองแบบคือ A และ B:
A B | F0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13 | F14 | F15
-----------------------------------------------------------------------------------------
0 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1
0 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1
1 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1
1 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1
ตัวดำเนินการที่น้อยกว่า<
ซึ่งตามปกติจะไม่คิดว่าเป็นตัวดำเนินการเชิงตรรกะเช่น NOT, AND หรือ OR เป็นจริงหนึ่งในฟังก์ชันเหล่านี้ (F4) เมื่อใช้กับค่าบูลีน:
A B | A < B
-----------
0 0 | 0
0 1 | 1
1 0 | 0
1 1 | 0
ที่น่าสนใจที่เราสามารถจำลองการใด ๆของฟังก์ชั่นอื่น ๆ 15 ()<AB10
ใช้นิพจน์ที่มีเพียงสัญลักษณ์ นิพจน์เหล่านี้อ่านและประเมินผลเช่นเดียวกับในภาษาการเขียนโปรแกรมมาตรฐานเช่นวงเล็บต้องจับคู่และ<
ต้องมีอาร์กิวเมนต์ในแต่ละด้าน
โดยเฉพาะนิพจน์เหล่านี้ต้องเป็นไปตามไวยากรณ์ต่อไปนี้ (ระบุในรูปแบบ Backus-Naur ):
element ::= A | B | 1 | 0
expression ::= element<element | (expression)<element | element<(expression) | (expression)<(expression)
ซึ่งหมายความว่าA<B<1
ไม่อนุญาตให้มีparethes และนิพจน์ในแบบฟอร์มที่ไร้ประโยชน์
ดังนั้นการแสดงออกA<B
ตรงกับ F4 ฟังก์ชั่นและA<B<1
ต้องมีการเปลี่ยนแปลงไปหรือ(A<B)<1
A<(B<1)
เพื่อพิสูจน์ว่า 15 ฟังก์ชันอื่น ๆ สามารถเปลี่ยนเป็นนิพจน์ได้ก็เพียงพอที่จะสร้างชุดของนิพจน์ที่สมบูรณ์ตามหน้าที่เพราะจากนั้นตามนิยามแล้วฟังก์ชันเหล่านั้นสามารถประกอบเป็นนิพจน์สำหรับฟังก์ชันใด ๆ
หนึ่งชุดดังกล่าวของการแสดงออกเป็นx<1
(ที่x
เป็นA
หรือB
) ซึ่งเป็น¬x
และซึ่งเป็น(((B<A)<1)<A)<1
A → B
การปฏิเสธ ( ¬
) และการอนุมาน ( →
) เป็นที่ทราบกันว่าสมบูรณ์ตามหน้าที่
ท้าทาย
ใช้อักขระ()<AB10
เขียน 16 นิพจน์ในรูปแบบที่อธิบายไว้ข้างต้นซึ่งเทียบเท่ากับฟังก์ชันบูลีนที่แตกต่างกัน 16 รายการ
เป้าหมายคือทำให้แต่ละนิพจน์สั้นที่สุดเท่าที่จะทำได้ คะแนนของคุณคือผลรวมของจำนวนอักขระในแต่ละ 16 นิพจน์ของคุณ คะแนนต่ำสุดชนะ Tiebreaker ไปที่คำตอบแรกสุด (หากพวกเขาไม่ได้แก้ไขคำตอบในภายหลังด้วยการแสดงออกสั้นลงจากคนอื่น)
คุณไม่จำเป็นต้องเขียนโค้ดจริงสำหรับการแข่งขันครั้งนี้ แต่อย่างใด แต่ถ้าคุณเขียนโปรแกรมใด ๆ เพื่อช่วยคุณในการสร้างการแสดงออกคุณควรโพสต์ข้อความเหล่านั้น
คุณสามารถใช้กองย่อยนี้เพื่อตรวจสอบว่าการแสดงออกของคุณทำสิ่งที่คาดหวัง: