Pascal's Triangle Modulo 1
Steven J Miller February 2014
sjm1@williams.edu

Generates row by row,doesn't use any efficiency from symmetry of Pascal modulo 2.

pascalmodtwolessmemory[max_] := Module[{},
scale = 1/ Sqrt[3];
betterpascal = {{0,0},{1,-(1/2)*scale},{1,(1/2)*scale}, {2,-scale},{2,scale}};
numofpoints = {3,5};
previous = {1,0,1};
count = 0;
For[m = 3, m ≤ max, m++,
{
shift = (m/2);
scale = 1/ Sqrt[3];
If[Mod[m,max/10] == 0, Print["We are at ", m, " of ", max, " or ", 100.0 *m/max, "%."]];
next = {1};
betterpascal = AppendTo[betterpascal,{m,(0-shift)scale}];
betterpascal = AppendTo[betterpascal, {m,(m-shift)scale}];
count = count+2;
For[y = 1, y ≤ m-1, y++,
{
value = Mod[previous[[y]] + previous[[y+1]],2];
next = AppendTo[next,value];
count = count + value;
If[value  ==  1, AppendTo[betterpascal, {m,(y-shift)scale}]];
}];
next = AppendTo[next,1];
previous = next;
numofpoints = AppendTo[numofpoints, count];
(*Print[ListPlot[pascallist[m]]];*)
}];
(*Print[Manipulate[ListPlot[pascallist[Floor[m]]], {m,1,max}]];*)
];

Only run these lines if you need to generate the files. If you want, you can pull these in from the saved list.

bigM = 1000;
triangularnum[n_] := n(n+1)/2;
pascalmodtwolessmemory[bigM]
Length[betterpascal]
numofpoints[[bigM]]
Manipulate[ListPlot[betterpascal[[Range[numofpoints[[Floor[m]]]]]], AspectRatio->1], {m,1,bigM-1}]

Do not run the following line unless you are trying to save the result of a run.

SetDirectory["c:\\0000math\MathematicalPrograms\CamKayla"]
Put[{betterpascal, numofpoints}, "pascaltrianglemod2to4000ver2.dat"];

Saved results up to 4000 in a file. It is a list of two lists. First is the points for plotting, second is how many need for a given level. You can read in the data file and plot the first 4000 levels without having to compute anything.

You need to set the directory to where your file is stored.

SetDirectory["c:\\0000math\MathematicalPrograms\CamKayla"]

Directory[]

Do not run the following line unless you are trying to save the result of a run.

(*Put[{betterpascal, numofpoints}, "pascaltrianglemod2to4000ver2.dat"];*)

Run the lines below to read in the data and do a plot. 
You probably want to slow down the speed of the movie.

Clear[readdata]
readdata = Get["pascaltrianglemod2to4000ver2.dat"];
betterpascal = {};
betterpascal = readdata[[1]];
numofpoints = {};
numofpoints = readdata[[2]];
bigM = 4000;
Manipulate[ListPlot[betterpascal[[Range[numofpoints[[Floor[m]]]]]],AspectRatio->1], {m,1,bigM-1}]