Period 2 Reversed Quine
RProgN, 3 bytes
1
2
Thanks to @MartinEnder for reminding me about this answer.
Try it online!
How it works
This exploits a potential flaw in our definition of proper quine:
It must be possible to identify a section of the program which encodes a different part of the program. ("Different" meaning that the two parts appear in different positions.)
Furthermore, a quine must not access its own source, directly or indirectly.
That's obviously the case here, as the output is the reverse of the code and the code is not a palindrome.
RProgN – reverse programmer notation – uses a LIFO stack and prints the items on it in the order they are popped. The two tokens 1 and 2, separated by spaces and/or newlines, get popped in reverse order and are printed separated by a newline.
This prints the reversed program
2
1
which, in turn, prints the original one.
!enilno ti yrT
Befunge-98, 33 bytes
b3*>1#;-:0g,:#;_@_;#:,g0:-;#1>*b3
Try it online!
Fission 2, 10 bytes
"L;L'!+!'_
Try it online!
This prints:
_'!+!'L;L"
Try it online!
And vice versa.
Explanation
This is a modification of the reverse quine. It's working to our advantage here that !
is used for printing and is also only one code point away from the the quote "
. That makes it easier to make the quote printing section palindromic (the '!+!'
). Let's start with the first code:
"L;L'!+!'_
This program has two entry points at the L
s, which each creates a left-going atom. However, the right one immediately hits the ;
which destroys it. The left one enters string mode and wraps around to the end, so that it prints the entire code (except the "
) from back to front. That already gives us _'!+!'L;L
. All that's left is to print the "
. _
can be ignored, '!
sets the atom's mass to 33 (the code point of !
), +
increments it to "
, and !
prints it. That's all the output done. The 'L
sets the atoms mass to the code point of L
but that's irrelevant. ;
destroys this atom as well and since no atoms are left, the program terminates.
Now the other way round:
_'!+!'L;L"
Again, we have two entry points but one atom is immediately destroyed. This time we move through the !+!'
section first, so we start by printing a quote. The '_
is again irrelevant, but we need the _
(or some other useless character) here to avoid '
escaping the "
. The atom wraps to the end, traverses the source code once in string mode to print the rest of the program in reverse, the L
is then ignored and ;
destroys the atom and terminates the program.