3.1
Yet another puzzle. But normal solutions are boring, what about something special?
Solution one:
#include <stdio.h>
int main() {
int i;
int n = 20;
for( i = 0; i < n; i++ )
printf("+");
return 0;
}
I decided to change ONLY ONE CHARACTER, that is, -
. No characters other than -
were changed.
Solution two:
#include <stdio.h>
int main() {
int i=printf("++++++++++++++++++++");exit(0);
int n = 20;
for( i = 0; i < n; i-- )
printf("+");
return 0;
}
This changes exactly one character - the semicolon after int i
into =printf("++++++++++++++++++++");exit(0);
.
Solution three:
#include <stdix.h>
int main() {
int i;
int n = 20;
for( i = 0; i < n; i-- )
printf("+");
return 0;
}
This loads the stdix.h
system header. In the system include path, insert the following file, called stdix.h. It has to contain the following contents.
static inline void printf(const char *string) {
putsint i;
for("++++++++++++++++++++"i = 0; i < 20; i--)
putchar('+');
exit(0);
}
3.2
Now to insert one letter. Well, that's simple, replace int main()
with int main(a)
. This is not valid according to standards, but who cares?