As holiday season is near, I came across one of the old source codes, which was written originally in C for a small competition. The goal was to display the following tree with a source code of minimal length:
0 000 00000 0000000 000000000 00000000000 0000000000000 000000000000000 00000000000000000 0
The solution ported to MATLAB is 46 characters long:
for w=[0:8 0]fprintf('%*.*d0\n',8+w,w*2,0),end
A zero character – which follows the d character – is wired into the string, so the remaining number of the zeros in a line is 0, 2, 4... The \n stands for the line break.
The trick is to use the capabilities of string formatting:
- The first parameter – belongs to the first asterisk – stands for the width of the displayed number. It should start from eight and increased by one in each step.
- The second parameter – belongs to the second asterisk – is for giving the precision: since we are displaying an integer value, the print function treats this as leading zeros. This parameter shall be increased by two in each step.
- The third parameter – belongs to the %d identifier – tells, that we want to print a zero value with the given parameters.
This way we can have leading spaces and leading zeros in the same function call. The last value of vector w is zero: it generates us the trunk of the Cristmas tree.