Referring to the printable ASCII character codes in decimal, we know that from 32 to 126 we have the printable characters with 32 being (space). Your challenge is to write a program using only characters from 32 to 125 (excluding 126) which when executed, prints its own source code except that each character in the source code has its ASCII code increased by one.

For example, if the source code was

main(){printf("Hello World");}

its output would be

nbjo)*|qsjoug)#Ifmmp!Xpsme#*<~

The following are forbidden:

Reading/writing/using any external files or storage (including the internet)

Reading/echoing your own source code

Source codes with fewer than 2 characters (they are no fun). Must be greater than or equal to 2.

Making it a popularity contest where after waiting for at least two weeks, the answer, in any language, with the highest upvotes wins with the smaller character count being the tie-breaker.

Why not allow 126, but it has to go to 32? (I don't know why/how anyone would do this.)
–
JustinJan 5 '14 at 4:02

These kinds of questions should also forbid error messages to be considered as "output" (sorry @GariBN). "Output" is stuff deliberately printed on standard output by your code, not arbitrary side effects determined by the language executable.
–
l0b0Jan 5 '14 at 17:44

2

The inability to use ~ really sucks for GolfScript. Bet you did that on purpose. :-)
–
Ilmari KaronenJan 5 '14 at 17:51

define "reading your own source code". Are we allowed to stringify a function, or we have to eval a string instead?
–
Jan DvorakFeb 24 '14 at 5:52

GolfScript, 15 chars

A fairly straightforward solution based on the technique I used for my entry to the "rotating quine" challenge. The one tricky detail is that the character ~ (ASCII 126) is disallowed by the challenge rules, so I can't use it to execute my code block. Fortunately, 1* can be used as a synonym of it.

Explanation:

The code block {`{)}%"/2+"} is duplicated by the ., and the second copy executed by 1* (technically, a one-iteration loop), leaving the other copy on the stack. Inside the code block, ` stringifies the code block, and {)}% loops over (the ASCII codes of) its characters, incrementing each by one. Finally, "/2+" pushes the literal string /2+ (which is .1* shifted by one) onto the stack. At the end of the program, the GolfScript interpreter then automatically prints everything on the stack.

Ps. Yes, I know this is a popularity-contest rather than strict code-golf, but what else am I going to do with GolfScript — ASCII art? ;-)

Java - 1331 bytes, 618 bytes and 504 bytes

Here it is in java. The cool thing is that it is pretty legible and flexible. You may experiment to change the SHIFT variable to 0 and it will be a quine. You may change it to whatever value you want, including negative values and it will shift the code accordingly.

However, the only drawback in the previous class are the line breaks, which are not permited in the question spec (are outside the range 32 to 125). So I give here a golfed version that is free of line breaks (and free of the quirks to handle them). You may edit the value of the S variable to change the shift. This has 618 bytes: