[Vienna-pm] pseudo-bitmask to ints
Josef
e9427749 at stud4.tuwien.ac.at
Thu Oct 25 06:13:04 PDT 2007
Hi!
<aus neugierde frag>
Wofür brauchtest Du das denn?
</aus neugierde frag>
Interessant ist das niemand auf den einfachsten Ansatz
nämlich alles (brute force) durchzuprobieren kam?
Ist wohl in unseren Gehirnen als nicht gangbarer Weg
eingebrannt, oder so?
sub bruteforce_pseudobitmask2ints ($)
{ my ($bm)=@_; $bm=~s/^0+//;
my $xorm=$bm; for ($xorm) { s/1/?/g; s/0/1/g; s/\?/0/g }
(my $andm=$bm)=~s/\?/0/g;
$xorm=oct "0b$xorm"; $andm=$xorm|oct "0b$andm";
return grep { (($_^$xorm)&$andm)==$andm } 0..(1<<length $bm)-1
}
pfiateng,
Josef
---
sub pseudobitmask2ints ($) # auch ¬ länger als glob-Variante
{ my ($bm)=@_; # ein anderer Tabubruch
1 while $bm=~s/([01]*)\?([01?]*)/${1}0$2,${1}1$2/g;
return map oct("0b$_"), split /,/,$bm
}
More information about the Vienna-pm
mailing list