BeginPackage["UVW`Zeroone`",{"Graphics`Animation`"}]
(* Version 2.0, 08/15/97 *)
RSZeroOne::usage= "
RSZeroOne[p,n] returns a random sample of n zeros and ones. One is chosen
with probability p."
PlotZeroOne::usage= "
PlotZeroOne[listofzeroones] represents graphically a list of zeros and
ones as black and white squares on a grey background."
AnimateShift::usage= "
AnimateShift[listofzeroones] forms a list of zeros and ones three times
as long as the initial list, by adding first a list of same length of
random digits, then copying the initial list at the end. Then the successive
shifts are animated as arrays of black and white squares."
Binary::usage= "
Binary[functionf,listofzeroones] computes the real in [0,1] the binary
decomposition of which is that of the list. Then the image by functionf
(from [0,1] into R) is computed. The decimal part of it is returned under
binary form as a new list of zeroones."
ActualLength::usage= "
ActualLength[listofzeroones] returns the length of the list obtained when
all zeros before the first one are droppped in listofzeroones."
Weight::usage= "
Weight[listofzeroones] returns the number of ones in the list."
WeightedAlphabeticalOrder::usage= "
WeightedAlphabeticalOrder[listofzeroones] computes the rank of the given
list of zeros and ones among lists of same actual length, when they are
ranked according to increasing weights and alphabetical order for lists
of same weight. That rank is returned in base 2 as another list of zeros
and ones."
BinaryNumbers::usage= "
BinaryNumbers[n] returns a list of all the 2^n lists of binary digits with
length n."
Entropy::usage= "
Entropy[t] returns -tLog[2,t]-(1-t)Log[2,1-t]"
Begin["`Private`"]
RSZeroOne[p_,n_]:= Table[If[Random[]0.9,
Background->GrayLevel[0.5]]
]
AnimateShift[listofzeroones_List]:=
Block[{dim,dim2,complete,nbshift,walt,disney,i},
dim = Length[listofzeroones];
dim2 = Ceiling[Sqrt[N[Length[listofzeroones]]]];
complete = Join[listofzeroones,RSZeroOne[0.5,dim],listofzeroones];
nbshift = 2*dim+1;
walt = Table[Partition[
Take[complete,{i,i+dim-1}],dim2],{i,1,nbshift}];
disney = Table[Graphics[Raster[walt[[i]]]],{i,1,nbshift}];
ShowAnimation[disney]
]
Binary[f_,listofzeroones_List]:=
Block[{x,y},
x = listofzeroones.Table[0.5^i, {i,1,Length[listofzeroones]}];
y = f[x];
y = Mod[y,1.];
Return[ Drop[ Flatten[ RealDigits[y,2] ] ,-1] ];
]
ActualLength[listofzeroones_List]:=
Block[{j=1},
While[listofzeroones[[j]]==0,
j=j+1];
Return[Length[listofzeroones]-j+1];
];
Weight[listofzeroones_List]:=Apply[Plus,listofzeroones];
WeightedAlphabeticalOrder[listofzeroones_List]:=
Block[{r,p,u,l,i},
p = Weight[listofzeroones];
l = Length[listofzeroones];
r = 0;
u=0;
i=0;
While[u