Jeff Chan wrote:
(35 + 35 + 21 + 7 + 1 = 99, is that correct ?)
It is, 128 -1 -7 -( 6+5+4+3+2+1 ) = 99. Where -1 is "not no bit", -7 is "not only one bit", and the rest "not two bits".
Actually it may be necessary to create some new lists, partly depending on whether the application can combine individual lists by itself.
Yes, bit 0 could replace only one "new list", not several.
But as long as you can express the condition for the "new list" by a single boolean expression of the 7 multi bits, one bit is good enough. Excl. the special case "no bits", because that would result in 127.0.0.1.
And I just realized a major flaw in my suggestion to try 127.0.0.84 as a single list
84 = 64+16+4 (you said JP+OB+WS, I don't check it). Let's say that you want any combo where these 3 bits are set.
Then you have 3 fixed bits, and 4 free bits (at the moment only 3 free bits, but you may want to add the 7th bit later). 2 ** 4 = 16, you need 16 result codes to identify all combos with JP+OB+WS:
84,86, 92,94, 116,118, 124,126, (= 8 without the 7th bit, for the remaining 8 combos just add 128, from 212 to 254)
it will NOT have any JP + OB + WS + SC
That's 86 = 84 + 2.
That kind of combination needs to be done by creating a new list on the data side, or special processing in the application.
Or by adding bit 0 on your side for THE one "optimal rule": 85,87, 93,95, 117,119, 125,127 (= same 8, now bit 0 is set)
I will create some temporary test lists in the second or third octet of multi to test on corpora instead.
Yes, post a real complex boolean expression, it's fun stuff, SURBL would set a new standard (impressing ISIPP and OPM ;-)
But don't touch the zeros in 127.0.0.? without warning, it would break my poor http://purl.net/xyzzy/src/rxwhois.cmd :
| if SockGetHostByName( arg(1) || arg(2), 'P.' ) then do | if abbrev( P.ADDR, '127.0.0.' ) | abbrev( P.ADDR, '127.1.0.' ) | then say arg(3) '(' || substr( P.ADDR, 9 ) || '):' arg(2) | else say 'erroneous result' P.ADDR 'for' arg(1) || arg(2) | return 1 | end /* 127.1.0.1 .. 127.1.0.7 for .opm.blitzed.org(1+2+4) */ | return 0 Bye, Frank