47
5
Write a single line program two or more characters long that contains no line terminators and takes no input. For example, your program might be:
MyProgram
When your program is arranged into the shapes a clock's hands make at 12, 3, 6, and 9 o'clock, it needs to output the corresponding hour number. No other times need be supported.
Specifically:
When your program is arranged like clock hands at 12 o'clock ()
m a r g o r P y M
running it should output
12
.When your program is arranged like clock hands at 3 o'clock ()
m a r g o r P y MyProgram
running it should output
3
.When your program is arranged like clock hands at 6 o'clock ()
m a r g o r P y M y P r o g r a m
running it should output
6
.When your program is arranged like clock hands at 9 o'clock ()
........m ........a ........r ........g ........o ........r ........P ........y margorPyM
running it should output
9
.
Notes
The first character in your program is always placed at the center of the clock. (Note how there is only one
M
in the 6 o'clock example.)Any one non-newline character may be used to indent the program for the 9 o'clock arrangement. In the examples
.
is used, but space or/
or#
would be just as valid.For the 3 o'clock arrangement, no characters should be in the empty upper right region. (i.e. keep it empty, don't fill it with spaces.)
The initial program arrangement (
MyProgram
as is) does not need to do anything. Only the 12, 3, 6, and 9 o'clock arrangements need to have correct, well-defined output.Code that only works as a function or REPL command is not allowed. Each of the four arrangements should be ready to run as full programs as is.
The shortest program in bytes wins. e.g. MyProgram
has a length of 9 bytes.
27I have no idea how to even begin doing this – Fund Monica's Lawsuit – 2016-04-26T03:16:40.473
You can see what programs you need to account for using this:
function all(e,n){n=n||" ";var i=e.split("").reverse().join("\n"),l=i+e.slice(1),r=i+e.split("").join("\n").slice(1),s=i.replace(/^./gm,n.repeat(e.length-1)+"$&").replace(/\n.+$/,"\n"+e.split("").reverse().join(""));return[i,l,r,s].join("\n\n")}
(javascript);e
is the program, andn
is the filler character – Conor O'Brien – 2016-04-26T03:17:56.580So, in Python, for instance, no
lambda
, no functions, and no REPL commands? This is going to take some miracle to get done on my part... – R. Kap – 2016-04-26T03:45:15.4871Is it OK if a character is printed and then erased with backspace? – feersum – 2016-04-26T03:48:51.673
And here comes the magic, thanks to @feersum – R. Kap – 2016-04-26T03:49:52.987
@R.Kap Not exactly. What I mean is each arrangement should be a valid full program - if it also works as a function or REPL command (as it might indeed in Python) that's fine. – Calvin's Hobbies – 2016-04-26T03:51:15.523
@feersum Yes, that sounds ok – Calvin's Hobbies – 2016-04-26T03:51:55.400
Oh, okay, that makes it a bit easier. – R. Kap – 2016-04-26T03:53:24.277
5
Here's a CJam script to generate all four codes from a single line and a padding character: http://cjam.tryitonline.net/#code=bDpMVyVOKk1MVyVOKkwxPitNTFclTDE-K04qTUwxPlclOnNMLGxjOlg7ZntYZVt9TFclYStOKl1OKg&input=TXlQcm9ncmFtCi4 Feel free to include it in the post.
– Martin Ender – 2016-04-26T07:45:41.433@MartinBüttner That's the definition of meta-metagolf right there. There should be a challenge just for that. – cat – 2016-04-26T14:42:29.053
4I was gonna attempt this in Brainfuck, but it turns out the challenge fucked my brain before BF could. – cat – 2016-04-26T14:43:33.133
2@cat I believe that's impossible because programs
3
and6
would be indistinguishable to Brainfuck as they only differ in whitespace. – Martin Ender – 2016-04-26T14:45:17.357@MartinBüttner Yeah, I think so too. – cat – 2016-04-26T14:54:13.963
Also out of curiosity, does "any character" for indentation include backspaces or NULs? What about Unicode combining characters? – user253751 – 2016-04-27T02:56:25.827
@immibis Yes. Any character means any character. – Calvin's Hobbies – 2016-04-27T03:07:46.107