Il y a un code ↓ dans le code des autres qui regardent actuellement.
tgt
unless hash.has_key?("1") || hash.has_key?("2") || hash.has_key?("3") || arr1.size == 0 || arr2.size == 0
....
end
En fait, il est mêlé de déni. Au milieu d'une énorme quantité de code pour exécuter un test. En outre, il y a pas mal d'instructions ʻà moins` avec plusieurs conditions ... Je ne peux pas imaginer le comportement avec mon miso fou de cerveau. Je suis désolé.
Même si vous essayez Gugu, l'explication de de Morgan s'explique au mieux sous deux conditions.
Il n'y a aucune aide pour cela, alors créez un modèle de script pour confirmation.
Premièrement, sous deux conditions. Appelez la valeur 0, 1 au lieu de l'expression conditionnelle.
2.pl
my @d = ( [0,0],[1,0],[0,1],[1,1] ) ;
for my $r ( @d ){
print join "", @{$r} unless $r->[0] || $r->[1] ;
}
$ perl -l 2.pl
00
unless A || B
Quant à la condition qui tient, la première expression conditionnelle est fausse(0), La deuxième expression conditionnelle est également fausse(0)Je le sais. En d'autres termesif ! A and ! B
Alors qu'en est-il de tgt?
Puisqu'il y a au plus 5 pièces, le cordon est poussé
python
$ ruby -e 'p [0,1].product([0,1],[0,1],[0,1],[0,1])'
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 1], [0, 0, 1, 0, 0], [0, 0, 1, 0, 1], [0, 1, 0, 0, 0], [0, 1, 0, 0, 1],
[0, 1, 1, 0, 0], [0, 1, 1, 0, 1], [1, 0, 0, 0, 0], [1, 0, 0, 0, 1], [1, 0, 1, 0, 0], [1, 0, 1, 0, 1],
[1, 1, 0, 0, 0], [1, 1, 0, 0, 1], [1, 1, 1, 0, 0], [1, 1, 1, 0, 1]]
Intégrez ceci dans le code source
5.pl
#!/usr/bin/env perl
my @d = (
[0, 0, 0, 0, 0], [0, 0, 0, 0, 1],
[0, 0, 0, 1, 0], [0, 0, 0, 1, 1],
[0, 0, 1, 0, 0], [0, 0, 1, 0, 1],
[0, 0, 1, 1, 0], [0, 0, 1, 1, 1],
[0, 1, 0, 0, 0], [0, 1, 0, 0, 1],
[0, 1, 0, 1, 0], [0, 1, 0, 1, 1],
[0, 1, 1, 0, 0], [0, 1, 1, 0, 1],
[0, 1, 1, 1, 0], [0, 1, 1, 1, 1],
[1, 0, 0, 0, 0], [1, 0, 0, 0, 1],
[1, 0, 0, 1, 0], [1, 0, 0, 1, 1],
[1, 0, 1, 0, 0], [1, 0, 1, 0, 1],
[1, 0, 1, 1, 0], [1, 0, 1, 1, 1],
[1, 1, 0, 0, 0], [1, 1, 0, 0, 1],
[1, 1, 0, 1, 0], [1, 1, 0, 1, 1],
[1, 1, 1, 0, 0], [1, 1, 1, 0, 1],
[1, 1, 1, 1, 0], [1, 1, 1, 1, 1]
) ;
for my $r ( @d ){
print join "", @{$r} unless $r->[0] || $r->[1] || $r->[2] || $r->[3] || $r->[4] ;
}
Exécuter.
python
$ perl -l 5.pl
00000
De plus, la génération «@ d» est décrite par «perl» afin que le nombre puisse être modifié [^ 1].
[^ 1]: Je souhaite que «perl» ait aussi «produit». «CPAN»? Rejeté en raison de l'odeur gênante.
perl:5.2.pl
#!/usr/bin/env perl
sub comb{
my $in = shift ;
#Combinaison de nombres binaires de 0-Après avoir converti un nombre décimal jusqu'à 1 en un nombre binaire rempli de 0x fois,
#Divisez un caractère à la fois. Utilisez comme référence de tableau. Et la valeur de retour est Array of Arrays
map{ [ unpack '(A)*', sprintf "%0${in}b", $_ ] } 0 .. 2 ** $in - 1 ;
}
my @d = comb $ARGV[0] ;
for my $r ( @d ){
# $ARGV[0] -Même une fois||C'est un problème à écrire, alors
# ||La chaîne de caractères concaténée avec est eval et elle est utilisée comme argument de sauf.
#En fait, passez au code qui correspond à la cible de vérification
print join "", @{$r} unless eval join '||', map{ $r->[$_] } 0 .. $ARGV[0] - 1 ;
}
$ perl -l 5.2.pl 12
000000000000
plus tard,||
À&&
Ou!
Ou, répondez sur place en fonction de l'instruction conditionnelle que vous souhaitez tester.
Oh, c'est moins stressant et vous pouvez changer «sauf» en «si».
Lorsque vous n'utilisez pas de nombres binaires.
python
sub comb {
my $in = shift ;
# ([0,0,0..])Faire un tableau
my @d = ( [(0)x$in] ) ;
#Hash pour le cache
my %seen ;
# @Je lèche d,@Parce que d est poussé dans la boucle et augmente en nombre
#Conditions séparées pour sortir
for my $r ( @d ){
# $r = [ x,x,x,x,x ... ]Changer les éléments de en 1 dans l'ordre,
#Si c'est une combinaison inconnue@Ajouter à d
push @d, grep{ ! $seen{ join "", @{$_} } ++ }
map { my @k = @{$r} ; $k[$_] = 1 ; [@k] }
0 .. $in - 1 ;
# [Tout 1]Est la dernière combinaison
last if +(join '', @{$d[-1]}) eq '1' x $in ;
}
return @d ;
}
C'est un code tabou [^ 2]. Dans ce cas, il est difficile de le faire à deux chiffres.
[^ 2]: J'ai écrit ceci au début, puis j'ai eu l'idée que je devrais l'écrire en binaire. Ça fait longtemps, alors je vais laisser ça.