C# – Something about 90 KB, but actually, ~90×n for any n
See https://gist.github.com/mormegil-cz/8581459 for the full source code. A short preview version to taste:
var c1 = Console.Read();
if (c1 > 0 && c1 != 13)
{
var c2 = Console.Read();
if (c2 > 0 && c2 != 13)
{
var c3 = Console.Read();
if (c3 > 0 && c3 != 13)
{
// ...
Console.Write((char)c3);
}
Console.Write((char)c2);
}
Console.Write((char)c1);
}
Console.WriteLine();
And because writing the source code seems a bit repetitive, let’s use a simple tool:
void Main()
{
const int MAX_DEPTH = 1000;
Console.WriteLine("using System;");
Console.WriteLine("using System.Text;");
Console.WriteLine();
Console.WriteLine("class C");
Console.WriteLine("{");
Console.WriteLine("\tstatic void Main()");
Console.WriteLine("\t{");
for (int i = 0; i < MAX_DEPTH; ++i)
{
var indent = new string('\t', i + 2);
Console.WriteLine("{0}var c{1} = Console.Read();", indent, i);
Console.WriteLine("{0}if (c{1} > 0 && c{1} != 13)", indent, i);
Console.WriteLine("{0}{{", indent);
}
var restIndent = new string('\t', MAX_DEPTH + 2);
Console.WriteLine("{0}var rest = new StringBuilder();", restIndent);
Console.WriteLine("{0}for (var c = Console.Read(); c > 0 && c != 13; c = Console.Read())", restIndent);
Console.WriteLine("{0}{{", restIndent);
Console.WriteLine("{0}\trest.Append((char)c);", restIndent);
Console.WriteLine("{0}}}", restIndent);
Console.WriteLine("{0}var restArray = rest.ToString().ToCharArray();", restIndent);
Console.WriteLine("{0}Array.Reverse(restArray);", restIndent);
Console.WriteLine("{0}Console.Write(new string(restArray));", restIndent);
for (int i = MAX_DEPTH - 1; i >= 0; --i)
{
var indent = new string('\t', i + 2);
Console.WriteLine("{0}\tConsole.Write((char)c{1});", indent, i);
Console.WriteLine("{0}}}", indent);
}
Console.WriteLine("\t\tConsole.WriteLine();");
Console.WriteLine("\t}");
Console.WriteLine("}");
}
Change MAX_DEPTH
to get a larger score (or possibly an internal C# compiler error?).