Your task is to create a program that outputs the string:
Hello, Toroidal Earth!
with an optional trailing newline.
Additionally if I remove the first line1 of your program and add it as a line after the end of your program the new program should be a valid solution to this challenge in the same programming language.
So if my program were:
use module System.IO, Types.String
begin IO with (input as stdin, output as stdout)
new "Hello, Toroidal Earth" >> toBytestream >> output
end IO closing streams
then, its shift:
begin IO with (input as stdin, output as stdout)
new "Hello, Toroidal Earth" >> toBytestream >> output
end IO closing streams
use module System.IO, Types.String
would also have to be a valid solution, meaning that the next shift:
new "Hello, Toroidal Earth" >> toBytestream >> output
end IO closing streams
use module System.IO, Types.String
begin IO with (input as stdin, output as stdout)
would also have to be a valid program. And so on ad infinitum.
Likewise if I remove the final column of the program and insert it before the first column the result must be a valid solution to this challenge in the same programming language. When removing a column if a row doesn't have a character in that column (i.e. it is too short) then you should treat that place as a space character. So for example if my program were:
use module System.IO, Types.String
begin IO with (input as stdin, output as stdout)
new "Hello, Toroidal Earth" >> toBytestream >> output
end IO closing streams
Then the program:
use module System.IO, Types.String
begin IO with (input as stdin, output as stdout)
tnew "Hello, Toroidal Earth" >> toBytestream >> outpu
end IO closing streams
should also be a valid solution, and of course any further shifting of it either vertical or horizontal should be as well.
All in all these shifts represent rotations on a torus.
Answers will be scored in bytes with fewer bytes being better.
1: You may choose to have your lines delimited by '\n' or by '\r\n'. Probably the former.