Skip to main content
2 of 6
deleted 198 characters in body
Wheat Wizard
  • 98.8k
  • 21
  • 278
  • 652

Klein 000, 133 bytes

<<@"yldetaleB ZtrahC ,yadhtriB yppaH".....</
@"yldetaleB ZtrahC ,yadhtriB yppaH".......<
@"!gnihaagnirehnioc driac ,yadhtriB yppaH".<

Try it online!

The idea of this follows the classic klein / approach. We have 3 programs and we use the alignment to select which one we run. All of our swaps move one character to a different line breaking the alignment and putting it into a different program.

The breakdown

If the character is any character on the first line move it to the end of the third line (or really anywhere on the third line should work)

<<@"yldetale ZtrahC ,yadhtriB yppaH".....</
@"yldetaleB ZtrahC ,yadhtriB yppaH".......<
@"!gnihaagnirehnioc driac ,yadhtriB yppaH".<B

The one sort of odd example here is

<<@"yldetaleB ZtrahC ,yadhtriB yppaH".....<
@"yldetaleB ZtrahC ,yadhtriB yppaH".......<
@"!gnihaagnirehnioc driac ,yadhtriB yppaH".</

It works the same but follows a different path.

For characters on the second line, move them to the start of the third line.

<<@"yldetaleB ZtrahC ,yadhtriB yppaH".....</
"yldetaleB ZtrahC ,yadhtriB yppaH".......<
@@"!gnihaagnirehnioc driac ,yadhtriB yppaH".<

For characters on the third line move them after the first . of the program (second character overall)

<<i@"yldetaleB ZtrahC ,yadhtriB yppaH".....</
@"yldetaleB ZtrahC ,yadhtriB yppaH".......<
@"!gnihaagnrehnioc driac ,yadhtriB yppaH".<

For the two newlines you always put them right before the / (end of the first line)

<<@"yldetaleB ZtrahC ,yadhtriB yppaH".....<
/@"yldetaleB ZtrahC ,yadhtriB yppaH".......<
@"!gnihaagnirehnioc driac ,yadhtriB yppaH".<
<<@"yldetaleB ZtrahC ,yadhtriB yppaH".....<
/
@"yldetaleB ZtrahC ,yadhtriB yppaH".......<@"!gnihaagnirehnioc driac ,yadhtriB yppaH".<
Wheat Wizard
  • 98.8k
  • 21
  • 278
  • 652