Chilinski's assertion that the technique involves "no arrays" is not strictly true, because you still (sort of) have an array of bits. But his idea his sound. In this case, controlling 16 LEDs requires only two bytes of storage, vs. 16 for the "true array" technique I mentioned above. The trade off is that the code is slightly more complicated and opaque, so I wouldn't recommend it for an application like this unless you are really at the edge of memory.
But if you want to try anyway, instead of
byte pindata[16] = {LOW, HIGH, HIGH, LOW, ..., HIGH};
for (int i=0; i<16; ++i)
digitalWrite(i, pindata[i]);
you could write
const unsigned int pindata = 0b0110001011101001; // binary equivalent of above array
for (int i=0; i<16; ++i)
digitalWrite(i, (pindata & (0b1000000000000000 >> i)) ? HIGH : LOW);
The & operator is used here to identify whether a particular bit is on or off.
Mikal