[Question]
  [
In this challenge, you will be "reversing" the alphabet or swapping `a-z` with `z-a`. This is commonly known as the [Atbash](https://en.wikipedia.org/wiki/Atbash) cypher.
Because this transformation makes the output look like some foreign language, your code will need to be as short as possible.
---
## Examples
```
abcdefghijklmnopqrstuvwxyz
zyxwvutsrqponmlkjihgfedcba
Programming Puzzles & Code Golf
Kiltiznnrmt Kfaaovh & Xlwv Tlou
Hello, World!
Svool, Dliow!
```
## Specification
* The input may contain multiple lines, and will be ASCII-only
* **No** *additional* whitespace should be added to the output
* Case *must* be preserved
## Leaderboard
```
var QUESTION_ID=68504,OVERRIDE_USER=40695;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
```
```
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
```
```
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
```
---
This is [code-golf](/questions/tagged/code-golf "show questions tagged 'code-golf'") so shortest code in bytes wins
  
[Answer]
# C, 59 bytes
Sorry for bringing up C again, but I was a bit disappointed to see only C *functions* here. I was under the impression OP was looking for a usable product.
```
main(c){while(~(c=getchar()))putchar(isalpha(c)?c+4^31:c);}
```
Compiled on Ubuntu 14.04 with a simple:
```
cc swalpha.c
```
The resulting executable reads any number of lines from stdin, and writes the result to stdout.
Thanks to so many of the other posters for the XOR trick.
[Answer]
## Pyth, 8 bytes
```
XXzG)rG1
```
@xnor suggested this simpler approach on @FryAmTheEggman's Pyth answer, then I translated it to Pyth.
This uses the handy behavior of `X` (translate) when given only two arguments: it translates from the second argument to the reversed second argument. We do this first with the lowercase alphabet (`G`), and then with uppercased `G`.
[Answer]
## CJam, 17 bytes
I wanted to help GamrCorps golf his CJam solution, but the result ended up so different that I decided to make a separate answer.
```
q'[,_el^_W%32f^er
```
[Try it online.](http://cjam.aditsu.net/#code=q'%5B%2C_el%5E_W%2532f%5Eer&input=Hello%20World!)
### Explanation
```
q     e# Read all input.
'[,   e# Get a character range from the null byte up to and including "Z".
_el   e# Duplicate and convert to lowercase.
^     e# Symmetric set difference. Due to the lowercase operation only letters will not
      e# appear in both sets, and so we get a string with all uppercase letters followed
      e# by all lowercase letters, i.e "ABC...XYZabc...xyz".
_W%   e# Duplicate and reverse. Gives: "zyx...cbaZYX...CBA".
32f^  e# Take each character XOR 32 which swaps the case, so now we have:
      e#                               "ZYX...CBAzyx...cba"
er    e# Transliterate: substitute each character in the first string with the correspoding
      e# character in the second string.
```
[Answer]
# JavaScript (ES6), ~~69~~ 67 bytes
```
x=>x.replace(/[A-Z]/gi,c=>String.fromCharCode(c.charCodeAt()+4^31))
```
Uses the same strategy as my [Japt answer](https://codegolf.stackexchange.com/a/68509/42545):
```
x=>x.replace(/[A-Z]/gi,C=>   // Replace each letter C with
 String.fromCharCode(        //  the character with char code
  C.charCodeAt()+4^31))      //   the char code of C, plus 4, with the last 5 bits flipped.
```
Curse your incredibly long property names, JS...
[Answer]
# [Retina](https://github.com/mbuettner/retina), ~~17~~ ~~14~~ 13 bytes
Code:
```
\T`w`_dZ-Az-a
```
Explanation:
```
\             # This suppresses the trailing linefeed
 T            # Switches to transliterate mode
  `w          # w is short for _0-9A-Za-z
    `_d       # d is short for 0-9
       Z-Az-a # Z-Az-a
```
This does some magic stuff and completes the task.
Try it [here](http://retina.tryitonline.net/#code=XFRgd2BfZFotQXotYQ&input=UHJvZ3JhbW1pbmcgUHV6emxlcyAmIENvZGUgR29sZg).
[Answer]
## Pyth, ~~10~~ 9
```
uXGr;H)2z
```
Thanks to Jakube for saving a byte with the new feature of `;`!
[Test Suite](https://pyth.herokuapp.com/?code=uXGr%3BH%292z&input=Hello&test_suite=1&test_suite_input=abcdefghijklmnopqrstuvwxyz%0AProgramming+Puzzles+%26+Code+Golf%0AHello%2C+World%21&debug=0)
A quick explanation: reduce starting with the input over the numbers 0 and 1. The operation to be performed is translate the lower case alphabet with either `r...0` or `r...1` which are the lower and upper functions from python, respectively, applied to it, and then reversed.
[Answer]
# Julia, ~~74~~ ~~61~~ 47 bytes
```
s->replace(s,r"[a-z]"i,t->Char(31$Int(t[1])-4))
```
This is a lambda function that accepts a string and returns a string. To call it, assign it to a variable.
We match each letter using a regular expression and replace each letter with the ASCII character corresponding to 31 XOR the ASCII code for the letter, minus 4.
[Answer]
## C, ~~150~~ 129 Bytes
```
void rev(char*s){int i,t;for(i=0;i<strlen(s);i++){t=s[i]+25;t=t<116?180-t:244-t;isalpha(s[i])?printf("%c",t):printf("%c",s[i]);}}
```
This function just converts char to int and adds the appropriate offset to the int before printing. I know it's not the shortest but I didn't see a C implementation.
Example usage
```
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void rev(char*s){int i,temp;for(i=0;i<strlen(s);i++){temp=s[i]+25;temp=temp<116?180-temp:244-temp;isalpha(s[i])?printf("%c",temp):printf("%c",s[i]);}}
int main(){
   char *s = "hello, there";
   rev(s);
   return 0;
}
```
UPDATE: shortened a variable name.
[Answer]
## Python, 61 bytes
```
lambda x:''.join([c,chr(ord(c)+4^31)][c.isalpha()]for c in x)
```
An anonymous function. On letters, does the reversing operation on the bit representation by adding 4, then flipping the last five bits, similar to [ETHproductions' Javascript answer](https://codegolf.stackexchange.com/a/68509/20260).
[Answer]
# Japt, ~~23~~ 22 bytes
```
Ur"[A-Za-z]"_c +4^31 d
```
[Try it online!](http://ethproductions.github.io/japt?v=master&code=VXIiW0EtWmEtel0iX2MgKzReMzEgZA==&input=IlByb2dyYW1taW5nIFB1enpsZXMgJiBDb2RlIEdvbGYi)
### How it works
```
Ur"[A-Za-z]"_  // Take the input and replace each letter with:
 c +4          //  Take its char code and add 4. This results in
               //  the string      "ABC...XYZabc...xyz"
               //  becoming        "EFG...\]^efg...|}~".
 ^31           //  XOR the result by 31. This flips its last five 5 bits.
               //  We now have     "ZYX...CBAzyx...cba".
 d             //  Convert back from a char code.
               // Implicit: output last expression
```
[Answer]
# C, 64
A void function that modify the string in place.
```
t(char*p){for(int c;c=*p;)*p++=c>64&c<91|c>96&c<123?(c^31)-4:c;}
```
Test: [ideone](http://ideone.com/l1omcP)
[Answer]
# R, ~~69~~ 61 bytes
Thanks to [@Giuseppe](https://codegolf.stackexchange.com/users/67312) for shaving off some extra bytes:
```
function(s)cat(chartr("a-zA-Z",intToUtf8(c(122:97,90:65)),s))
```
**Previous version:**
```
function(s)cat(chartr("a-zA-Z",rawToChar(as.raw(c(122:97,90:65))),s))
```
This is an anonymous function. Usage:
```
> f=function(s)cat(chartr("a-zA-Z",rawToChar(as.raw(c(122:97,90:65))),s))
> f("Hello, World!")
Svool, Dliow!
> f("Programming Puzzles & Code Golf")
Kiltiznnrmt Kfaaovh & Xlwv Tlou
> f("This is
+ a multiline
+ example.")
Gsrh rh
z nfogrormv
vcznkov.
```
[Answer]
# Ruby, 40 bytes
New solution: Stole that bit flipping magic from some of the other posts here:
```
->s{s.gsub(/[a-z]/i){($&.ord+4^31).chr}}
```
---
# Ruby, ~~55~~ 46 bytes
```
->s{s.tr'a-zA-Z',[*?A..?Z,*?a..?z].reverse*''}
```
9 bytes off thanks to @manatwork
---
test run:
```
->s{s.gsub(/[a-z]/i){($&.ord+4^31).chr}}["Kiltiznnrmt Kfaaovh & Xlwv Tlou"]
=> "Programming Puzzles & Code Golf"
```
[Answer]
# Jolf, 15 bytes
```
~Ai+plpu+_pl_pu
~A              I don't know what to call this, besides "dictionary replace"
  i              the input
   +plpu         previous dictionary: lower + upper alphabet
        +_p1_pu  new dictionary: reversed lower + reversed upper
```
[Test suite](http://conorobrien-foxx.github.io/Jolf/#code=fkFpK3BscHUrX3BsX3B1&input=YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoKCnp5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhCgpQcm9ncmFtbWluZyBQdXp6bGVzICYgQ29kZSBHb2xmCgpLaWx0aXpubnJtdCBLZmFhb3ZoICYgWGx3diBUbG91CgpIZWxsbywgV29ybGQhCgpTdm9vbCwgRGxpb3ch), or [try it with your own input](http://conorobrien-foxx.github.io/Jolf/#code=fkFpK3BscHUrX3BsX3B1)
[Answer]
# ùîºùïäùïÑùïöùïü 2, 12 chars / 26 bytes (non-competitive)
```
√Øƒ™(·∂ê+·∂õ,·∂ê·¥ô+·∂õ·¥ô
```
`[Try it here (Firefox only).](http://molarmanful.github.io/ESMin/interpreter2.html?eval=false&input=Programming%20Puzzles%20%26%20Code%20Golf&code=%C3%AF%C4%AA%28%E1%B6%90%2B%E1%B6%9B%2C%E1%B6%90%E1%B4%99%2B%E1%B6%9B%E1%B4%99)`
Added transliterate function after the challenge was posted.
# Explanation
```
√Øƒ™(·∂ê+·∂õ,·∂ê·¥ô+·∂õ·¥ô // implicit: √Ø=input
√Øƒ™(           // transliterate √Ø...
   ·∂ê+·∂õ,       // from uppercase+lowercase alphabet...
       ·∂ê·¥ô+·∂õ·¥ô  // ... to reversed uppercase+reversed lowercase alphabet
              // implicit output
```
[Answer]
## CJam, 21 bytes
```
q'[,65>__el_@+W%@@+er
```
Not an optimal solution... yet... [Try it online](http://cjam.aditsu.net/#code=q%27%5B%2C65%3E__el_%40%2BW%25%40%40%2Ber&input=Hello%2C%20World!)
Its hard to explain without grouping things, so here is a general explanation: gets input, pushes uppercase alphabet twice and lowercase twice, rotates things around, combines uppercase and lowercase strings, reverses one, and uses transliteration (similar to the Retina answer).
[Answer]
# C (function), 50
```
f(char*s){for(;*s;s++)*s=isalpha(*s)?*s+4^31:*s;}
```
This builds on [all](https://codegolf.stackexchange.com/a/68587/11259) [three](https://codegolf.stackexchange.com/a/68550/11259) [previous](https://codegolf.stackexchange.com/a/68560/11259) C answers, so credit to @Ruud, @Danwakeem and @edc65.
This function modifies a char array in place.
My understanding is [function entries are allowed](http://meta.codegolf.stackexchange.com/a/2422/11259) unless explicitly banned in the question.
[Try it online.](https://ideone.com/L5v8YF)
[Answer]
# PostgreSQL, 118 125 bytes
```
SELECT s,TRANSLATE(s,t||UPPER(t),REVERSE(t)||REVERSE(UPPER(t)))
FROM(SELECT text'Programming Puzzles & Code Golf's,text'abcdefghijklmnopqrstuvwxyz't)r
```
`**[`SqlFiddleDemo`](http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/8276/0)**`
Output:
```
‚ïî‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ï¶‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïó
‚ïë                s                 ‚ïë            translate            ‚ïë
‚ï†‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ï¨‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ï£
‚ïë Programming Puzzles & Code Golf  ‚ïë Kiltiznnrmt Kfaaovh & Xlwv Tlou ‚ïë
‚ïö‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ï©‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïù
```
Input: `SELECT text'...'s`
---
**EDIT:**
Input as table:
```
SELECT s,TRANSLATE(s,t||UPPER(t),REVERSE(t)||REVERSE(UPPER(t)))
FROM i,(SELECT text'abcdefghijklmnopqrstuvwxyz't)r
GROUP BY s,t
```
`**[`SqlFiddleDemo`](http://sqlfiddle.com/#!15/15762/2/0)**`
Output:
```
‚ïî‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ï¶‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïó
‚ïë                s                 ‚ïë            translate            ‚ïë
‚ï†‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ï¨‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ï£
‚ïë Hello, World!                    ‚ïë Svool, Dliow!                   ‚ïë
‚ïë Programming Puzzles & Code Golf  ‚ïë Kiltiznnrmt Kfaaovh & Xlwv Tlou ‚ïë
‚ïë abcdefghijklmnopqrstuvwxyz       ‚ïë zyxwvutsrqponmlkjihgfedcba      ‚ïë
‚ïö‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ï©‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïê‚ïù
```
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E), 5 bytes
```
≈æn≈æo‚Ä°
```
Uses **CP-1252** character set.
[Try it online!](http://05ab1e.tryitonline.net/#code=xb5uxb5v4oCh&input=YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo)
Explanation:
```
≈æn    - Push [A-Za-z]
  ≈æo  - Push [Z-Az-a]
    ‚Ä° - Transliterate.
```
[Answer]
## Seriously, 31 bytes
```
√∫√∫√ª+‚ïó√∫R√∫√ªR+‚ïù,`;‚ïú√≠uWD‚ïõE(X0WX`MŒµj
```
Hex Dump:
```
a3a3962bbba352a396522bbc2c603bbda1755744be452858305758604dee6a
```
[Try It Online](http://seriouslylang.herokuapp.com/link/code=a3a3962bbba352a396522bbc2c603bbda1755744be452858305758604dee6a&input=Programming%20Puzzles)
Expl:
```
√∫√∫√ª+‚ïó                             Put UPPERCASElowercase in reg0
     √∫R√∫√ªR+‚ïù                      Put ESACREPPUesacrewol in reg1
            ,                     Fetch input.
             `             `MŒµj   Map over the characters in string as list, joining result
              ;‚ïú√≠u                Find 1-index of character in UPPERCASElowercase
                  W     0WX       If it is positive (present): 
                   D              Convert back to 0-index
                    ‚ïõE            Look it up in ESACREPPUesacrewol
                      (X          Delete the original character.
                                  (Else just leave the original character unchanged.)
```
I just realized the spec say no additional whitespace, but there is no way to suppress trailing newlines in Seriously output, so there is no Seriously solution.
[Answer]
# Python 3, ~~195~~ ~~169~~ ~~168~~ 166 bytes
Thanks to [@TrangOul](https://codegolf.stackexchange.com/users/30296/trang-oul) for -2 bytes!
How didn't I see that I could have golfed that down before?
```
x=__import__('string').ascii_letters;y,z=x[26:],x[:26];a,b=y[::-1],z[::-1];print(''.join(b[z.index(i)]if i in b else a[y.index(i)]if i in a else i for i in input()))
```
(sorta) ungolfed:
```
x = __import__('string').ascii_letters;
y, z = x[26: ], x[: 26];
a, b = y[::-1], z[::-1];
print(''.join(b[z.index(i)]
    if i in b
    else a[y.index(i)]
    if i in a
    else i
    for i in input()
))
```
[Try it on Ideone!](http://ideone.com/psNATq)
[Answer]
# Haskell, ~~119~~ 104 bytes
Saved 15 bytes thanks to @nimi. 
```
c=fromEnum;s=toEnum;f[]="";f(x:y)|64<c x&&c x<91=s(155-c x):f y|96<c x&&c x<123=s(219-c x):f y|0<1=x:f y
```
**Usage:**
```
f "abcdefghijklmnopqrstuvwxyz"
"zyxwvutsrqponmlkjihgfedcba"
f "Programming Puzzles & Code Golf"
"Kiltiznnrmt Kfaaovh & Xlwv Tlou"
f "Hello, World!"
"Svool, Dliow!"
```
**Explanation** 
```
let c=fromEnum;s=toEnum;--wrap names for later use, fromEnum gets ascii code from char, toEnum gets char from ascii code
f[]=[];                 --feed empty list (of chars in this case), get empty list
f(x:y)                  --feed a list, separate the first element and...
|64<c x&&c x<91=        --if its an uppercase char (using ascii code range)...
s(c x*(-1)+155)         --  inverse its ascii code value, move it to the range of uppercase and get the new char
                        --  (like rotating half turn a ruler by the side and then sliding it to the space it previously occupied)
:f y                    --  feed the rest of the list and stick the new char in front of the result
|96<c x&&c x<123=       --if its a lowercase char (using ascii code range)...
s(c x*(-1)+219)         --  inverse its ascii code value, move it to the range of lowercase and get the new char
:f y                    --  feed the rest of the list and stick the new char in front of the result
|True=x:f y             --otherwise feed the rest of the list and stick the char in front of the result
```
I'm new to Haskell... to functional programming... and to the site, and i know there are (a lot of) better answers to this question, but bear with me.
[Answer]
# [Perl 6](http://perl6.org), 28 bytes
```
{S:g/\w/{chr $/.ord+4+^31}/}
```
### Usage:
```
# give it a lexical name
my &swap = { ‚Ä¶ }
say swap 'Programming Puzzles & Code Golf';
# Kiltiznnrmt Kfaaovh & Xlwv Tlou
say swap ('a'..'z').join
# zyxwvutsrqponmlkjihgfedcba
```
[Answer]
## Java, 136 bytes
```
void x(String i){for(char c:i.toCharArray()){if(Character.isLetter(c))c=c<91?(char)(90-(c-65)):(char)(122-(c-97));System.out.print(c);}}
```
Example usage:
```
class Test {
  static void x(String i){for(char c:i.toCharArray()){if(Character.isLetter(c))c=c<91?(char)(90-(c-65)):(char)(122-(c-97));System.out.print(c);}}
  public static void main(String[] args) {
    x("Programming Puzzles & Code Golf");
    // produces "Kiltiznnrmt Kfaaovh & Xlwv Tlou"
  }
}
```
Probably the worst commonly-used language in terms of byte size.
[Answer]
## Unix shell + tr + printf, 35 bytes
```
tr A-Za-z `printf %s {Z..A} {z..a}`
```
Here you are, a canonical answer in tr. I thought how could a question to transliterate the alphabet go without a canonical answer to **tr**ansliterate the alphabet?
tr by itself does not even do a "Hello, World!" and as such isn't a programming language, so ~~I marked the answer as noncompeting~~[1].
[1]: Edit: Actually, *Unix shell* is the language and tr is the *standard library*. Thanks to Downgoat and Digital Trauma for helping me spot this out.
[Answer]
## Python 3, ~~164~~ 159 bytes
```
def f(t,a="abcdefghijklmnopqrstuvwxyz",b=""):
 for c in t:u=64<ord(c)<91;c=c.lower();c=a[::-1][a.index(c)] if c in a else c;b+=c.upper() if u else c
 return b
```
[Answer]
# PHP, 73 bytes
```
<?=strtr($argv[1],($b=strtolower($a=join(range(A,Z)))).$a,strrev($a.$b));
```
do this need any comments?
[Answer]
# [PowerShell](https://github.com/TryItOnline/TioSetup/wiki/Powershell), 65 bytes
```
-join($args|% t*y|%{[char]($_,(($_-bxor31)-4))[$_-match'[a-z]']})
```
[Try it online!](https://tio.run/##RZBPS8NAEMXv@RTTsG2zkhxET4IgKCj0UlBQKKVsk02y7SST7m7@NG0/e1xrq3MYmB/vPZhXUSu1ySXiwFJ4hMMQbUiVARM6M8cx2Jv9cXxYxLnQy4CtwsCtaN2Rvrvl0T3nC3cWwsb5dCGifjldnvhw8rynwAM3YeCLdZzINMvVZotFSdVOG1s3bbfv/fBH4vf7rm1qa/SuorLA7UblWSqTeC18fg2Za8q0KApVZjCv@x6lgQk8UyLhlTC9JM0UWtWXpS4szFIhqMmd6gvbBj6Q6v@4N/cuhfBJGpPRxfzeEGEIL6ioHTkphyOM4XC2MBMCk10lYysTVxJb/WItTY3WgYnrjpkz9Flw4VEsd38u/nCV@95p@AY "PowerShell ‚Äì Try It Online")
[Answer]
# [Husk](https://github.com/barbuz/Husk), 22 bytes
```
œÉ‚Ä¶'A'Z‚Ä¶'Z'AœÉ‚Ä¶'a'z‚Ä¶'z'a
```
[Try it online!](https://tio.run/##yygtzv7//3zzo4Zl6o7qUSAqSt0Rwk9UrwJRVeqJ////T0xKTklNS8/IzMrOyc3LLygsKi4pLSuvqKwCAA "Husk ‚Äì Try It Online")
[Answer]
# C, ~~112~~ 98 bytes
```
i;main(){char x[99];gets(x);for(;x[i];i++)if(isalpha(x[i]))x[i]=(x[i]>90?219:155)-x[i];puts(x);}
```
I know that `gets()` is deprecated and unsafe, but `scanf()` doesn't accept whitespace and I need to include `stdio.h` if I want to `fgets` (since `stdin` is defined in `stdio.h`). I assume this program wouldn't work if the user tried to enter a string more than `99` characters.
EDIT: Changing `printf("%s",x)` to `puts(x)` saves `7` bytes and changing `i<strlen(x)` to `x[i]` saves another `7` bytes.
]