逻辑门的格里曼德
多数函数是一个布尔函数,它接受三个布尔输入并返回最常用的。例如,如果maj(x,y,z)是多数功能并T表示true和Ffalse,则: maj(T,T,T) = T maj(T,T,F) = T maj(T,F,F) = F maj(F,F,F) = F 这个问题涉及将布尔函数编写为多数函数的组合。多数函数的5元组成的示例是(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的布尔向量列表,并输出一个多数门树,如果可能,则在所有给定向量上返回true。该函数可能会在约束列表之外的向量上返回true或false。 向量列表可以按您喜欢的任何格式输入。如果愿意,可以输入向量中真实位置的列表,而不输入向量。因此,例如[TTF,TFT,FTT]or [[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也可以。 如果没有起作用的函数,则您的程序应生成错误或输出错误值。 …