[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