Java 1.8, 96 91 bytes
I managed to flatten everything into one for-loop with a single print statement. Nothing Java 1.8 specific - just happens to be the version I compiled the code with.
void f(){for(int i=-1,j=0,k=i;++i<702;k=(i+1)%27)System.out.write(k>25?++j-j+10:65+(k>j?k:j));}
Surprisingly, removing variable k
and introducing Math.max()
skimmed off 5 bytes:
void f(){for(int i=-1,j=0;++i<702;)System.out.write(i%27>25?++j-j+10:65+Math.max(i%27,j));}
Or ungolf'ed:
interface C {
static void main(String[] a) {
f();
}
static void f() {
for (int i = -1, j = 0; ++i < 702;) {
System.out.write(i%27 > 25 ? ++j - j + 10 : 65 + Math.max(i%27,j));
}
}
}
Approach is based on my Tabula Recta answer. This leverages the fact that the System.out
stream is line-buffered, causing an auto-flush whenever a line feed character (10
) is written.
I have a feeling this can be golf'ed down further, mainly because of the way the values of certain variable are juggled with (i.e. j
). Note to self: I was right!.