What is the smallest number of non-space characters that can be added in order to change the following code into a complete C program that prints LoopyLoopyLoopyLoopy
?
#include
main(){
<-- ^
| @ |
v --> printf("Loopy");}
Starts as: 5 lines with no leading spaces, totaling 52 non-space characters and 5 within-line spaces.
Possible edits (additions that don't move the original characters):
• Single non-space characters may replace any of the 5 original spaces.
• Spaces and non-space characters may be added to the ends of lines.
No-nos and pedantry:
• No commenting.
• No additional "
quotation marks.
• No new lines. (Intended, but not made explicit, in the original puzzle statement.)
• All syntax should abide by The C Programming Language, 2nd Edition, Kernighan & Ritchie.
• If any variables are used before they are initialized, the program should be successful with any initial values for those variables.
Notes about the original puzzle statement: The word visible was used instead of instead of non-space. Adding lines was unintentionally allowed as a newline would count as a character added to the end of an existing line. The line #include
could have been left out for a more streamlined version of essentially the same puzzle, as mentioned by Arkku.
Answer
In accordance with the updated rules:
#include
main(){int v=4;for('\
<-- ^\
| @ |';v;)
v --> printf("Loopy");}
The original rules (in effect at the time of posting this) unintentionally permitted adding a newline character to the end of a line, which enabled:
#include
v;
main(){for(;-8
<--v^0;'\
| @ |')
v --> printf("Loopy");}
(16 if adding a newline character to end of line counts as space, 17 if it counts as a non-space.)
Note: The type of the global
v
defaults toint
and is implicitly initialized to zero in ANSI C (the standard at the time of K&R 2nd edition) due to static duration.
If it were permitted to insert a single non-space character between two non-space characters:
#include
main(v){for(;-8
<--v^0;'\
| @ |')
v --> printf("Loopy");}
This with the caveat:
The program must be run without arguments in an environment that passes
1
as the initial argument ofmain
in that case. (As discussed in comments, this is permitted.)
No comments:
Post a Comment