加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 给定输入的真值表生成

发布时间:2020-12-16 06:12:15 所属栏目:大数据 来源:网络整理
导读:我想为给定的input生成一个真值表.如果我给输入2输出将是假设的 10 01 11 00 如果输入为3,则输出为 111 000 110 101 011 100 001 010 我有一个代码片段 #!/usr/bin/perl#print "a|b|cn";for $a (1,0){ for $b (1,0){ for $c (1,0) { for $d ( 1,0) { print
我想为给定的input生成一个真值表.如果我给输入2输出将是假设的

10 01 11 00 

如果输入为3,则输出为

111 000 110 101 011 100 001 010

我有一个代码片段

#!/usr/bin/perl

#print "a|b|cn";

for $a (1,0){
    for $b (1,0){
      for  $c (1,0) {
        for $d ( 1,0) 
        {        
          print "$a $b $c $d";
          #print $x = ($a & $b & $c);
          print "n";
        }
     }
   }
}

print "n";

上面的代码是4.

如果不编写多个for循环,我不知道如何做到这一点.这里的值为2我需要写两个for循环,依此类推.

任何机构都可以告诉我如何为几个输入值调整此代码.

任何帮助将非常感谢

解决方法

递归

这是一个使用递归的简单解决方案:

#!/usr/bin/perl -w                                                              
my $variables=$ARGV[0]||0;
show_combinations($variables);                                                           

sub show_combinations { my($n,@prefix)=@_;                                      
  if($n > 0) {                                                                  
    show_combinations( $n-1,@prefix,0);                                       
    show_combinations( $n-1,1);                                       
  } else {                                                                      
    print "@prefixn";                                                          
  }                                                                             
}

以下是一些示例案例:

> script.pl 1
0
1
> script.pl 2
0 0
0 1
1 0
1 1
> script.pl 3
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读