Bionomial  Goes  Binary
 by Don Lancaster

Copyright c 1996 by Don Lancaster and Synergetics, Box 809, Thatcher, AZ, 85552
(520) 428-4073 http://www.tinaja.com email: synergetics@tinaja.com

All commercial rights and all electronic media rights are **FULLY** reserved.
Reposting is expressly forbidden.

Consulting services available on concepts shown.


v1.4 October 1996

% PostScript utility to generate all binary words of length "n"
% having "k" ones in them. Send to a PostScript device with recordable
% two-way com. Output is presented as a text string, LSB last.

% Copyright c 1996 by Don Lancaster's Synergetics, Box 809, Thatcher,
% AZ, 85552. synergetica@tinaja.com

% All commercial and all electronic media rights *fully* reserved.


/bitsinword 10 def % set the number of bits in the word

/ws0 bitsinword string def % generate a workstring
/kproc0 {ws0 == flush} def % define a proc that uses the string.

/0k0{kproc0} def
/1k0{false exch 1 ws0 length 1 sub{dup 3 -1 roll{1 sub ws0 exch 48 put}
{pop ws0 dup length 1 sub 48 put}ifelse ws0 exch 49 put kproc0 true}
for pop} bind def
/2k0{false exch 1 ws0 length 2 sub{dup dup 4 -1 roll{1 sub ws0 exch 48 put}
{pop ws0 dup length 2 sub 48 put}ifelse ws0 exch 49 put 1 add 1k0 true}
for pop} bind def
/3k0{false exch 1 ws0 length 3 sub{dup dup 4 -1 roll{1 sub ws0 exch 48 put}
{pop ws0 dup length 3 sub 48 put}ifelse ws0 exch 49 put 1 add 2k0 true}
for pop} bind def
/4k0{false exch 1 ws0 length 4 sub{dup dup 4 -1 roll{1 sub ws0 exch 48 put}
{pop ws0 dup length 4 sub 48 put}ifelse ws0 exch 49 put 1 add 3k0 true}
for pop} bind def
/5k0{false exch 1 ws0 length 5 sub{dup dup 4 -1 roll{1 sub ws0 exch 48 put}
{pop ws0 dup length 5 sub 48 put}ifelse ws0 exch 49 put 1 add 4k0 true}
for pop} bind def
/6k0{false exch 1 ws0 length 6 sub{dup dup 4 -1 roll{1 sub ws0 exch 48 put}
{pop ws0 dup length 6 sub 48 put}ifelse ws0 exch 49 put 1 add 5k0 true}
for pop} bind def
/7k0{false exch 1 ws0 length 7 sub{dup dup 4 -1 roll{1 sub ws0 exch 48 put}
{pop ws0 dup length 7 sub 48 put}ifelse ws0 exch 49 put 1 add 6k0 true}
for pop} bind def
/8k0{false exch 1 ws0 length 8 sub{dup dup 4 -1 roll{1 sub ws0 exch 48 put}
{pop ws0 dup length 8 sub 48 put}ifelse ws0 exch 49 put 1 add 7k0 true}
for pop} bind def

% (( procs for higher numbers of ones can be added here if needed. ))
% (( procs for additional strings can be defined as 5k1, 5k2 etc.. ))


% //// demo - remove or alter before reuse. ////

% to generate all TEN bit words having FIVE ones in them...

0 5k0 % call five ones entry point, preceeded by zero

quit

% Demo program should return 252 strings in the following sequence...

% (1111100000)
% (1111011111)
%     ...
% (1100001011)
%     ...
% (0000101111)
% (0000011111)


Additional details on magic sinewaves appear on www.tinaja.com
Additional details on bionomial coefficients in MUSE102.PDF

Copyright c 1996 by Don Lancaster and Synergetics, Box 809, Thatcher, AZ, 85552
(520) 428-4073 http://www.tinaja.com email: synergetics@tinaja.com All commercial
rights and all electronic media rights are **FULLY** reserved.