ฟังก์ชันส่วนใหญ่เป็นฟังก์ชั่นบูลีนซึ่งรับอินพุตบูลีนสามรายการและส่งคืนค่าที่พบบ่อยที่สุด เช่นถ้าmaj(x,y,z)
เป็นฟังก์ชันส่วนใหญ่และT
หมายถึงความจริงและF
หมายถึงเท็จแล้ว:
maj(T,T,T) = T
maj(T,T,F) = T
maj(T,F,F) = F
maj(F,F,F) = F
คำถามนี้เกี่ยวข้องกับการเขียนฟังก์ชันบูลีนเป็นองค์ประกอบของฟังก์ชันส่วนใหญ่ ตัวอย่างขององค์ประกอบ 5 Ary (x1,x2,x3,x4,x5) => maj(x1,x2,maj(x3,x4,x5))
ของฟังก์ชั่นส่วนใหญ่เป็น ฟังก์ชันนี้ส่งคืนเอาต์พุตต่อไปนี้บนเวกเตอร์อินพุตตัวอย่างเหล่านี้:
(T,T,F,F,F) => maj(T,T,maj(F,F,F)) = maj(T,T,F) = T
(T,F,T,T,F) => maj(T,F,maj(T,T,F)) = maj(T,F,T) = T
(T,F,T,F,F) => maj(T,F,maj(T,F,F)) = maj(T,F,F) = F
(F,F,F,T,T) => maj(F,F,maj(F,T,T)) = maj(F,F,T) = F
งาน
เขียนโปรแกรมที่ป้อนจำนวนเต็มบวก n และรายการความยาว n เวกเตอร์ของบูลีนและส่งออกต้นไม้ของประตูเสียงส่วนใหญ่ที่ส่งกลับค่าจริงในเวกเตอร์ที่กำหนดทั้งหมดถ้าเป็นไปได้ ฟังก์ชั่นอาจกลับมาเป็นจริงหรือเท็จในเวกเตอร์ไม่ได้อยู่ในรายการข้อ จำกัด
รายการของเวกเตอร์อาจป้อนในรูปแบบใดก็ได้ที่คุณต้องการ หากคุณต้องการแทนที่จะป้อนเวกเตอร์คุณสามารถป้อนรายการตำแหน่งที่แท้จริงในเวกเตอร์ได้ ดังนั้นสำหรับตัวอย่างเช่น
[TTF,TFT,FTT]
หรือ[[T,T,F],[T,F,T],[F,T,T]]
หรือ[[1,2],[1,3],[2,3]]
(รายชื่อของตำแหน่งจริง) จะมีการปรับทั้งหมดเอาต์พุตสามารถเป็นรูปแบบแผนผังที่ถูกต้อง ตัวอย่างเช่นการ
maj(maj(x1,x2,x3),x4,x5)
ทำงาน[[1,2,3],4,5]
คุณอาจจะต้องการที่จะใช้ตัวเลขเดียวเป็นสแตนด์อินสำหรับตัวแปรเช่นเดียวกับใน ขัดกลับกัน123m45m
ก็โอเคเช่นหากไม่มีฟังก์ชั่นที่ใช้งานได้โปรแกรมของคุณควรสร้างข้อผิดพลาดหรือส่งออกค่าเท็จ
หากมีฟังก์ชั่นหลายอย่างที่ใช้งานได้โปรแกรมของคุณสามารถคืนค่าใด ๆ ฟังก์ชันนี้ไม่จำเป็นต้องทำให้ง่ายขึ้น ตัวอย่างเช่น
maj(x1,x1,x2)
หรือx1
เทียบเท่า
เกณฑ์การให้คะแนน
นี่คือรหัสกอล์ฟ: ทางออกที่สั้นที่สุดในการชนะไบต์
กรณีทดสอบ:
โปรดทราบว่ามีเอาต์พุตที่เป็นไปได้มากมายสำหรับแต่ละกรณีเหล่านี้ดังนั้นคุณควรเขียนสคริปต์ตัวตรวจสอบที่แปลงเอาต์พุตของคุณเป็นฟังก์ชันและตรวจสอบว่าฟังก์ชันของคุณคืนค่าเป็นจริงในแต่ละเวกเตอร์อินพุตที่ระบุ
Input: 3, [TFF]
Output: 1 or [1,1,2] or [1,[1,2,2],[1,1,3]] or other equivalent
Input: 3, [TFF,FTF]
Output: Falsey or error (it's not possible)
Input: 3, [TTF,TFT]
Output: [1,2,3] or 1 or other equivalent
Input: 3, [TTF,TFT,FTT]
Output: [1,2,3] or [1,3,2] or other equivalent
Input: 4, [TTFF,TFTF,FFTT]
Output: Falsey or error
Input: 4, [TTTF,TTFT,TFTT,FTTT]
Output: [1, 2, 3] or [2,3,4], or many other options
Input: 5, [TTTFF,FTTFT,TFFFT]
Output: [1,[1,[1,2,5],[2,4,5]],3] or many other options
Input: 6, [TTTFFF,FTFTTF,TFFTFT]
Output: [1, 2, 4] or [1, [1, 2, 4], [2, 3, 4]] or others
Input: 5, [TTTFF,TTFTF,TTFFT,TFTTF,TFTFT,TFFTT,FTTTF,FTTFT,FTFTT,FFTTT]
Output: [[1, [1, 3, 5], 4], [1, 2, [2, 4, 5]], [2, 3, [3, 4, 5]]] or others
Input: 7, [TTTTFFF,TTTFTFF,TTTFFTF,TTTFFFT,TTFTTFF,TTFTFTF,TTFTFFT,TTFFTTF,TTFFTFT,TTFFFTT,TFTTTFF,TFTTFTF,TFTTFFT,TFTFTTF,TFTFTFT,TFTFFTT,TFFTTTF,TFFTTFT,TFFTFTT,TFFFTTT,FTTTTFF,FTTTFTF,FTTTFFT,FTTFTTF,FTTFTFT,FTTFFTT,FTFTTTF,FTFTTFT,FTFTFTT,FTFFTTT,FFTTTTF,FFTTTFT,FFTTFTT,FFTFTTT,FFFTTTT]
Output: [[[1, [1, [1, 4, 7], 6], 5], [1, [1, 3, [3, 6, 7]], [3, 5, [5, 6, 7]]], [3, 4, [4, [4, 5, 7], 6]]], [[1, [1, [1, 4, 7], 6], 5], [1, 2, [2, [2, 5, 7], 6]], [2, [2, 4, [4, 6, 7]], [4, 5, [5, 6, 7]]]], [[2, [2, [2, 4, 7], 6], 5], [2, 3, [3, [3, 5, 7], 6]], [3, [3, 4, [4, 6, 7]], [4, 5, [5, 6, 7]]]]]