我想编写一个显示True和False组合的程序。这只是计划的一部分。我写了其他部分,但我找不到解决方案。
例如:
input: 2
output:
T T
T F
F T
F F
input: 4
output:
T T T T
T T T F
T T F T
T T F F
T F T T
T F T F
T F F T
T F F F
F T T T
F T T F
F T F T
F T F F
F F T T
F F T F
F F F T
F F F F
如果您不想编写代码,可以解释或使用伪代码或Python:)
答案 0 :(得分:3)
如何将整数简单转换为二进制格式?
def possibilities(bitcount):
for i in reversed(xrange(2**bitcount)):
yield ("{0:0" + str(bitcount) + "b}").format(i)
def prettyprint(bitcount):
for p in possibilities(bitcount):
print " ".join(p.replace("0", "F").replace("1", "T") + "/")
如果您需要以编程方式处理这些可能性,那么一堆位操作就足够了,您甚至不需要进行字符串转换。
答案 1 :(得分:2)
你去了:
def PrintTruthTable(size):
for i in range(0,1<<size):
print ' '.join(['T' if (i>>j)&1==1 else 'F' for j in range(0,size)])
i
索引遍历0到2 ^ size-1 j
索引遍历由i
您可能更容易理解:
def PrintTruthTable(size):
for i in range(0,1<<size):
line = ''
for j in range(0,size):
if (i>>j)&1 == 1:
line += 'T'
else:
line += 'F'
print line
答案 2 :(得分:0)
最简单的方法是使用二进制代码。
我们只需为从0到 最大数量 的所有数字编写二进制代码,我们可以使用 二进制数字 等于输入。
说,我们输入3。 我们使用3个二进制数字可以产生的最大数量是111,即7。 因此,我们将为0到7之间的所有数字编写二进制代码。
这是:
000 = 0
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7
要写T或F,我们将简单地设置一个条件,其中T打印为1,F打印为0。
以下是代码:
#include<stdio.h>
#include<string.h>
int num_of_digits;
void bitcode(int num){
int current_digit_num=num_of_digits;
while(current_digit_num!=0){
if(num%2==1)
printf("T ");
else
printf("F ");
num=num/2;
current_digit_num--;
}
}
main()
{
int current_num,value;
scanf("%d", &num_of_digits);
value=pow(2,num_of_digits);
for(current_num=0;current_num<value;current_num++){
bitcode(current_num);
printf("\n");
}
return 0;
}
注意:此方法有效,因为从0(000 ..)到最大数字(111 ..),我们将完成所有可能的组合,以填充0或1的大量数字。