This seems unlikely to be a "new" idea, but I stumbled into it by accident and thought it was cool. Java source code below:<p><pre><code> // This class is in the public domain.
public class Numbers
{
public static void main(String[] args)
{
int numRows = 256;
int numColumns = 128;
for (int row = 0; row < numRows; row++)
{
StringBuilder rowOutput = new StringBuilder();
for (int column = 0; column < numColumns; column++)
{
if ((row & column) != 0)
rowOutput.append("1");
else
rowOutput.append("0");
}
System.out.println(
String.format("row/col %s:\t%s", row, rowOutput.toString()));
}
}
}</code></pre>
This was on HN a couple of days ago:<p><pre><code> http://www.oftenpaper.net/sierpinski.htm
</code></pre>
It points out that you can interpret the table as the relation "is disjoint" between the bitsets encoded in the row and col indices (CTRL+F for "binary logic"). Following links from there will take you to a rabbit hole of combinatorics that I will not claim to fully understand.<p>The whole page is a delight, though, and given your enjoyment for your discovery, you'll certainly love browsing it.
Reminds me of Sierpinski triangles:<p><a href="http://en.wikipedia.org/wiki/Sierpinski_triangle" rel="nofollow">http://en.wikipedia.org/wiki/Sierpinski_triangle</a><p>I'm sure someone with a greater intuition for mathematics than I have will be able to explain why.
Here's a C version in less than 80 characters:<p><pre><code> main(c,r){for(r=32;r;)printf(++c>31?c=!r--,"\n":c<r?" ":~c&r?" `":" #");}
</code></pre>
I first learned of this phenomenon in my discrete math class, and we had a competition to see who would write the shortest program to draw a Sierpinski triangle. This version would certainly have won if I'd been clever enough to write it at the time, though even shorter versions are possible in other languages.
<a href="http://faculty.msmary.edu/heinold/bitwise_and.pdf" rel="nofollow">http://faculty.msmary.edu/heinold/bitwise_and.pdf</a><p>seems to be a paper on this phenomenon, with<p><a href="http://faculty.msmary.edu/heinold/maa_pres2009-11-14.pdf" rel="nofollow">http://faculty.msmary.edu/heinold/maa_pres2009-11-14.pdf</a><p>being a similar work in presentation form.<p>I've never seen it before; I like it!
For any lazy C# folks:<p><pre><code> internal class Program
{
public static void Main()
{
int numRows = 256;
int numColumns = 128;
for (int row = 0; row < numRows; row++)
{
StringBuilder rowOutput = new StringBuilder();
for (int column = 0; column < numColumns; column++)
{
if ((row & column) != 0) rowOutput.Append("1");
else rowOutput.Append("0");
}
Console.WriteLine("row/col {0}:\t{1}", row, rowOutput);
}
Console.Read();
}
}
</code></pre>
Cool stuff, very interesting to see that triangle structure emerge.
Interesting, I've not seen this before. Here is a screenshot of some of the output: <a href="http://i.imgur.com/Ro2AA6u.jpg" rel="nofollow">http://i.imgur.com/Ro2AA6u.jpg</a>
That's cool. You can expand the pattern, presumably arbitrarily, by setting the number of columns to 256 or 512 (or greater?), but on my little 1440px screen I had to redirect to a file and scroll it sideways in an editor to see the whole thing.
You will probably like searches for rule NNN on wolfram alpha, like <a href="http://www.wolframalpha.com/input/?i=rule+101" rel="nofollow">http://www.wolframalpha.com/input/?i=rule+101</a>
Back when they taught me the number line and the Cartesian plane, it all seemed smooth and straightforward.<p>In the years since, I've seen primes, rationals, irrationals, Mandelbrot, and all manner of weird structures popping up out of what seemed like nothing.<p>How did this happen? And who put all that stuff in there?