Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 生成所有可能的16位数字,需要更少的存储位置_Algorithm_Perl - Fatal编程技术网

Algorithm 生成所有可能的16位数字,需要更少的存储位置

Algorithm 生成所有可能的16位数字,需要更少的存储位置,algorithm,perl,Algorithm,Perl,我正在尝试生成所有可能的16位十进制数 我知道这需要大量的存储空间,所以我尝试通过删除所有第6位不等于第3位的数字-1来减少数字。我还确保没有四个连续数字相等 当我试图删除所有生成的包含八个以上零的数字时,问题就出现了。例如,我不想打印以下000015000001010或0001000200343 下面是我的Perl代码。我声明了一个全局变量$a,该变量在16位中的任何一位为零时递增,然后在$a大于8时不打印数字。但它不起作用,请帮忙 #!/usr/bin/perl $A=0; for($a=0

我正在尝试生成所有可能的16位十进制数

我知道这需要大量的存储空间,所以我尝试通过删除所有第6位不等于第3位的数字-1来减少数字。我还确保没有四个连续数字相等

当我试图删除所有生成的包含八个以上零的数字时,问题就出现了。例如,我不想打印以下
000015000001010
0001000200343

下面是我的Perl代码。我声明了一个全局变量
$a
,该变量在16位中的任何一位为零时递增,然后在
$a
大于8时不打印数字。但它不起作用,请帮忙

#!/usr/bin/perl
$A=0;
for($a=0){
if($a==0){$A++;if($A>16){$A=0;}}
for($b=0;$b<6;$b++){
if($b==0){$A++;if($A>16){$A=0;}}
for($c=0;$c<6;$c++){
if($c==0){$A++;if($A>16){$A=0;}}
for($d=0;$d<6;$d++){
if($d==0){$A++;if($A>16){$A=0;}}
for($e=0;$e<6;$e++){
if($e==0){$A++;if($A>16){$A=0;}}
for($f=0;$f<6;$f++){
#check if all Numbers a-i are equal
#No 8 numbers can be the same in the same order
$Fc=$c-1;
if($Fc==-1){$Fc=5;}
#print "F==$Fc\n";
if($a==0&&$b==0&&$c==0&&$d==0&&$e==0&&$f==0||$a==0&&$b==0&&$c==0&&$d==0&&$e==0||$a==1&&$b==1&&$c==1&&$d==0&&$e==1&&f==1||$a==1&&$b==1&&$c==1&&$d==1&&$e==1||$a==2&&$b==2&&$c==2&&$d==2&&$e==2||$a==2&&$b==2&&$c==2&&$d==2&&$e==2
&&$f==2||$a==3&&$b==3&&$c==3&&$d==3&&$e==3||$a==3&&$b==3&&$c==3&&$d==3&&$e==3&&$f==3||$a==4&&$b==4&&$c==4&&$d==4&&$e==4||$a==4&&$b==4&&$c==4&&$d==4&&$e==4&&$f==4||$a==5&&$b==5&&$c==5&&$d==5&&$e==5||$a==5&&$b==5&&$c==5&&$d==5&&$e==5&&$f==5
){}
else{
if($f==0){$A++;if($A>16){$A=0;}}
#print "$a$b$c$d$e$Fc\n"
for($g=0;$g<6;$g++){
if($g==0){$A++;if($A>16){$A=0;}}
for($h=0;$h<6;$h++){
if($h==0){$A++;if($A>16){$A=0;}}
for($i=0;$i<6;$i++){
if($i==0){$A++;if($A>16){$A=0;}}
for($j=0;$j<6;$j++){
if($j==0){$A++;if($A>16){$A=0;}}
for($k=0;$k<6;$k++){
if($k==0){$A++;if($A>16){$A=0;}}
for($l=0;$l<6;$l++){
if($g==0&&$h==0&&$i==0&&$j==0&&$k==0&&$l==0||$g==0&&$h==0&&$i==0&&$j==0&&$k==0||$g==1&&$h==1&&$i==1&&$j==0&&$k==1&&$l==1||$g==1&&$h==1&&$i==1&&$j==1&&$k==1||$g==2&&$h==2&&$i==2&&$j==2&&$k==2
&&$l==2||$g==2&&$h==2&&$i==2&&$j==2&&$k==2||$g==3&&$h==3&&$i==3&&$j==3&&$k==3&&$l==3||$g==3&&$h==3&&$i==3&&$j==3&&$k==3||$g==4&&$h==4&&$i==4&&$j==4&&$k==4&&$l==4||$g==4&&$h==4&&$i==4&&$j==4&&$k==4||$g==5&&$h==5&&$i==5&&$j==5&&$k==5&&$l==5||$g==5&&$h==5&&$i==5&&$j==5&&$k==5
){}
else{
if($l==0){$A++;if($A>16){$A=0;}}
for($m=0;$m<6;$m++){
if($m==0){$A++;if($A>16){$A=0;}}
for($n=0;$n<6;$n++){
if($n==0){$A++;if($A>16){$A=0;}}
for($o=0;$o<6;$o++){
if($o==0){$A++;if($A>16){$A=0;}}
for($p=0;$p<6;$p++){
if($p==0){$A++;if($A>16){$A=0;}}
if($l==0&&$m==0&&$n==0&&$o==0&&$p==0||$l==0&&$m==0&&$n==0&&$o==0||$l==1&&$m==1&&$n==1&&$o==1&&$p==1||$l==1&&$m==1&&$n==1&&$o==1||$l==2&&$m==2&&$n==2&&$o==2&&$p==2||$l==2&&$m==2&&$n==2&&$o==2||$l==3&&$m==3&&$n==3&&$o==3&&$p==3||$l==3&&$m==3&&$n==3&&$o==3||$l==4&&$m==4&&$n==4&&$o==4&&$p==4||$l==4&&$m==4&&$n==4&&$o==4||$l==5&&$m==5&&$n==5&&$o==5&&$p==5||$l==5&&$m==5&&$n==5&&$o==5){}else{
#print "$A\n";
if($A>8){}
else{
print "$a$b$c$d$e$Fc$g$h$i$j$k$l$m$n$o$p\n"#Print The Generated  Numbers 
}

}}}}}}}}}}}}}}}}}}}
#/usr/bin/perl
$A=0;
对于($a=0){
如果($a==0){$a++;如果($a>16){$a=0;}
对于($b=0;$b16){$A=0;}
对于($c=0;$c16){$A=0;}
对于($d=0;$d16){$A=0;}
对于($e=0;$e16){$A=0;}
对于($f=0;$f16){$A=0;}
#打印“$a$b$c$d$e$Fc\n”
对于($g=0;$g16){$A=0;}
对于($h=0;$h16){$A=0;}
对于($i=0;$i16){$A=0;}
对于($j=0;$j16){$A=0;}
对于($k=0;$k16){$A=0;}
对于($l=0;$l16){$A=0;}
对于($m=0;$m16){$A=0;}
对于($n=0;$n16){$A=0;}
对于($o=0;$o16){$A=0;}
对于($p=0;$p16){$A=0;}
如果0 0 0 | 40((=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0$n==5&&$o==5&&$p==5||$l==5&&$m==5&&$n==5&&$o==5){}else{
#打印“$A\n”;
如果($A>8){}
否则{
打印“$a$b$c$d$e$Fc$g$h$i$j$k$l$m$n$o$p\n”#打印生成的数字
}
}}}}}}}}}}}}}}}}}}}

更新以显示程序结构
!/usr/bin/perl
$A=0;
对于($a=0){
如果($a==0){
$A++;
如果($A>16){
$A=0;
}
}
对于($b=0;$b<6;$b++){
如果($b==0){
$A++;
如果($A>16){
$A=0;
}
}
对于($c=0;$c<6;$c++){
如果($c==0){
$A++;
如果($A>16){
$A=0;
}
}
对于($d=0;$d<6;$d++){
如果($d==0){
$A++;
如果($A>16){
$A=0;
}
}
对于($e=0;$e<6;$e++){
如果($e==0){
$A++;
如果($A>16){
$A=0;
}
}
对于($f=0;$f<6;$f++){
#检查所有数字a-i是否相等
#没有8个数字可以在同一顺序中相同
$Fc=$c-1;
如果($Fc==-1){
$Fc=5;
}
#打印“F==$Fc\n”;
如果($a==0&&$b==0&&$c==0&&&$d==0&&$e==0&&$f==0
||$a==0&&$b==0&&$c==0&&$d==0&&$e==0
||$a==1&&$b==1&&$c==1&&$d==0&&$e==1&&f==1
||$a==1&&$b==1&&$c==1&&$d==1&&$e==1
||$a==2&&$b==2&&$c==2&&$d==2&&$e==2
||$a==2&&$b==2&&$c==2&&$d==2&&$e==2&&$f==2
||$a==3&&$b==3&&$c==3&&$d==3&&$e==3
||$a==3&&$b==3&&$c==3&&$d==3&&$e==3&&$f==3
||$a==4&&$b==4&&$c==4&&$d==4&&$e==4
||$a==4&&$b==4&&$c==4&&$d==4&&$e==4&&$f==4
||$a==5&&$b==5&&$c==5&&$d==5&&$e==5
||$a==5&&$b==5&&$c==5&&$d==5&&$e==5&&$f==5){
}
否则{
如果($f==0){
$A++;
如果($A>16){
$A=0;
}
}
#打印“$a$b$c$d$e$Fc\n”
对于($g=0;$g<6;$g++){
如果($g==0){
$A++;
如果($A>16){$A=0;}
}
对于($h=0;$h<6;$h++){
如果($h==0){
$A++;
如果($A>16){
$A=0;
}
}
对于($i=0;$i<6;$i++){
如果($i==0){
$A++;
如果($A>16){
$A=0;
}
}
对于($j=0;$j<6;$j++){
如果($j==0){
$A++;
如果($A>16){
$A=0;
}
#!/usr/bin/perl

$A = 0;

for ( $a = 0 ) {

    if ( $a == 0 ) {
        $A++;
        if ( $A > 16 ) {
            $A = 0;
        }
    }

    for ( $b = 0 ; $b < 6 ; $b++ ) {

        if ( $b == 0 ) {
            $A++;
            if ( $A > 16 ) {
                $A = 0;
            }
        }

        for ( $c = 0 ; $c < 6 ; $c++ ) {

            if ( $c == 0 ) {
                $A++;
                if ( $A > 16 ) {
                    $A = 0;
                }
            }

            for ( $d = 0 ; $d < 6 ; $d++ ) {

                if ( $d == 0 ) {
                    $A++;
                    if ( $A > 16 ) {
                        $A = 0;
                    }
                }

                for ( $e = 0 ; $e < 6 ; $e++ ) {

                    if ( $e == 0 ) {
                        $A++;
                        if ( $A > 16 ) {
                            $A = 0;
                        }
                    }

                    for ( $f = 0 ; $f < 6 ; $f++ ) {

                        #check if all Numbers a-i are equal
                        #No 8 numbers can be the same in the same order

                        $Fc = $c - 1;
                        if ( $Fc == -1 ) {
                            $Fc = 5;
                        }

                        #print "F==$Fc\n";

                        if ( $a == 0 && $b == 0 && $c == 0 && $d == 0 && $e == 0 && $f == 0
                                || $a == 0 && $b == 0 && $c == 0 && $d == 0 && $e == 0
                                || $a == 1 && $b == 1 && $c == 1 && $d == 0 && $e == 1 && f == 1
                                || $a == 1 && $b == 1 && $c == 1 && $d == 1 && $e == 1
                                || $a == 2 && $b == 2 && $c == 2 && $d == 2 && $e == 2
                                || $a == 2 && $b == 2 && $c == 2 && $d == 2 && $e == 2 && $f == 2
                                || $a == 3 && $b == 3 && $c == 3 && $d == 3 && $e == 3
                                || $a == 3 && $b == 3 && $c == 3 && $d == 3 && $e == 3 && $f == 3
                                || $a == 4 && $b == 4 && $c == 4 && $d == 4 && $e == 4
                                || $a == 4 && $b == 4 && $c == 4 && $d == 4 && $e == 4 && $f == 4
                                || $a == 5 && $b == 5 && $c == 5 && $d == 5 && $e == 5
                                || $a == 5 && $b == 5 && $c == 5 && $d == 5 && $e == 5 && $f == 5 ) {


                        }
                        else {

                            if ( $f == 0 ) {
                                $A++;
                                if ( $A > 16 ) {
                                    $A = 0;
                                }
                            }

                            #print "$a$b$c$d$e$Fc\n"

                            for ( $g = 0 ; $g < 6 ; $g++ ) {

                                if ( $g == 0 ) {
                                    $A++;
                                    if ( $A > 16 ) { $A = 0; }
                                }

                                for ( $h = 0 ; $h < 6 ; $h++ ) {

                                    if ( $h == 0 ) {
                                        $A++;
                                        if ( $A > 16 ) {
                                            $A = 0;
                                        }
                                    }

                                    for ( $i = 0 ; $i < 6 ; $i++ ) {

                                        if ( $i == 0 ) {
                                            $A++;
                                            if ( $A > 16 ) {
                                                $A = 0;
                                            }
                                        }

                                        for ( $j = 0 ; $j < 6 ; $j++ ) {

                                            if ( $j == 0 ) {
                                                $A++;
                                                if ( $A > 16 ) {
                                                    $A = 0;
                                                }
                                            }

                                            for ( $k = 0 ; $k < 6 ; $k++ ) {

                                                if ( $k == 0 ) {
                                                    $A++;
                                                    if ( $A > 16 ) {
                                                        $A = 0;
                                                    }
                                                }

                                                for ( $l = 0 ; $l < 6 ; $l++ ) {

                                                    if ( $g == 0 && $h == 0 && $i == 0 && $j == 0 && $k == 0 && $l == 0
                                                            || $g == 0 && $h == 0 && $i == 0 && $j == 0 && $k == 0
                                                            || $g == 1 && $h == 1 && $i == 1 && $j == 0 && $k == 1 && $l == 1
                                                            || $g == 1 && $h == 1 && $i == 1 && $j == 1 && $k == 1
                                                            || $g == 2 && $h == 2 && $i == 2 && $j == 2 && $k == 2 && $l == 2
                                                            || $g == 2 && $h == 2 && $i == 2 && $j == 2 && $k == 2
                                                            || $g == 3 && $h == 3 && $i == 3 && $j == 3 && $k == 3 && $l == 3
                                                            || $g == 3 && $h == 3 && $i == 3 && $j == 3 && $k == 3
                                                            || $g == 4 && $h == 4 && $i == 4 && $j == 4 && $k == 4 && $l == 4
                                                            || $g == 4 && $h == 4 && $i == 4 && $j == 4 && $k == 4
                                                            || $g == 5 && $h == 5 && $i == 5 && $j == 5 && $k == 5 && $l == 5
                                                            || $g == 5 && $h == 5 && $i == 5 && $j == 5 && $k == 5 ) {

                                                    }
                                                    else {

                                                        if ( $l == 0 ) {
                                                            $A++;
                                                            if ( $A > 16 ) {
                                                                $A = 0;
                                                            }
                                                        }

                                                        for ( $m = 0 ; $m < 6 ; $m++ ) {

                                                            if ( $m == 0 ) {
                                                                $A++;
                                                                if ( $A > 16 ) {
                                                                    $A = 0;
                                                                }
                                                            }

                                                            for ( $n = 0 ; $n < 6 ; $n++ ) {

                                                                if ( $n == 0 ) {
                                                                    $A++;
                                                                    if ( $A > 16 ) {
                                                                        $A = 0;
                                                                    }
                                                                }

                                                                for ( $o = 0 ; $o < 6 ; $o++ ) {

                                                                    if ( $o == 0 ) {
                                                                        $A++;
                                                                        if ( $A > 16 ) {
                                                                            $A = 0;
                                                                        }
                                                                    }

                                                                    for ( $p = 0 ; $p < 6 ; $p++ ) {

                                                                        if ( $p == 0 ) {
                                                                            $A++;
                                                                            if ( $A > 16 ) {
                                                                                $A = 0;
                                                                            }
                                                                        }

                                                                        if ( $l == 0 && $m == 0 && $n == 0 && $o == 0 && $p == 0
                                                                                || $l == 0 && $m == 0 && $n == 0 && $o == 0
                                                                                || $l == 1 && $m == 1 && $n == 1 && $o == 1 && $p == 1
                                                                                || $l == 1 && $m == 1 && $n == 1 && $o == 1
                                                                                || $l == 2 && $m == 2 && $n == 2 && $o == 2 && $p == 2
                                                                                || $l == 2 && $m == 2 && $n == 2 && $o == 2
                                                                                || $l == 3 && $m == 3 && $n == 3 && $o == 3 && $p == 3
                                                                                || $l == 3 && $m == 3 && $n == 3 && $o == 3
                                                                                || $l == 4 && $m == 4 && $n == 4 && $o == 4 && $p == 4
                                                                                || $l == 4 && $m == 4 && $n == 4 && $o == 4
                                                                                || $l == 5 && $m == 5 && $n == 5 && $o == 5 && $p == 5
                                                                                || $l == 5 && $m == 5 && $n == 5 && $o == 5 ) {

                                                                        }
                                                                        else {

                                                                            #print "$A\n";

                                                                            if ( $A > 8 ) {

                                                                            }
                                                                            else {
                                                                                print "$a$b$c$d$e$Fc$g$h$i$j$k$l$m$n$o$p\n"    #Print The Generated  Numbers
                                                                            }

                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
my $credit_card_number = "$a$b$c$d$e$Fc$g$h$i$j$k$l$m$n$o$p";
print $credit_card_number, "\n" unless $credit_card_number =~ tr/0// > 8;