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>
Jawaban:
Pyth, 8 byte
@ xnor menyarankan pendekatan yang lebih sederhana ini pada @ FryAmTheEggman's jawaban Pyth, kemudian saya menerjemahkannya ke Pyth.
Ini menggunakan perilaku praktis
X
(terjemahkan) ketika hanya diberikan dua argumen: itu menerjemahkan dari argumen kedua ke argumen kedua terbalik. Kami melakukan ini terlebih dahulu dengan alfabet huruf kecil (G
), dan kemudian dengan huruf besarG
.sumber
C, 59 byte
Maaf karena menghidupkan kembali C, tapi saya agak kecewa melihat hanya fungsi C di sini. Saya mendapat kesan OP sedang mencari produk yang dapat digunakan.
Dikompilasi di Ubuntu 14.04 dengan sederhana:
Eksekusi yang dihasilkan membaca sejumlah baris dari stdin, dan menulis hasilnya ke stdout.
Terima kasih banyak poster lain untuk trik XOR.
sumber
CJam, 17 byte
Saya ingin membantu GamrCorps golf solusi CJam-nya, tetapi hasilnya berakhir sangat berbeda sehingga saya memutuskan untuk membuat jawaban terpisah.
Cobalah online.
Penjelasan
sumber
JavaScript (ES6),
6967 byteMenggunakan strategi yang sama dengan jawaban Japt saya :
Mengutuk nama properti Anda yang sangat panjang, JS ...
sumber
document.getElementById
document.getElementsByClassName
atau, di Firefox dan Chrome,document.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
Retina ,
171413 byteKode:
Penjelasan:
Ini melakukan beberapa hal ajaib dan menyelesaikan tugas.
Coba di sini .
sumber
\
. Sial sekali Anda bahwa saya belum sempat menambahkan kelas karakter untuk huruf dan kelas karakter terbalik.\T`lL`RlRL
.Pyth,
109Terima kasih kepada Jakube karena menyimpan byte dengan fitur baru
;
!Test Suite
Penjelasan cepat: kurangi mulai dengan input di atas angka 0 dan 1. Operasi yang akan dilakukan adalah menerjemahkan alfabet huruf kecil dengan salah satu
r...0
ataur...1
yang merupakan fungsi bawah dan atas dari python, masing-masing, diterapkan padanya, dan kemudian dibalik.sumber
uXGr;H)2z
X
alfabet dan alfabet kapital?XXzG)rG1
? Itu sepertinya berhasil.Julia,
746147 byteIni adalah fungsi lambda yang menerima string dan mengembalikan string. Untuk menyebutnya, tetapkan ke variabel.
Kami mencocokkan setiap huruf menggunakan ekspresi reguler dan mengganti setiap huruf dengan karakter ASCII yang sesuai dengan 31 XOR kode ASCII untuk huruf tersebut, minus 4.
sumber
$
jadi Anda mungkin ingin memperbarui itu⊻
. Tidak tahu bahwa Anda dapat menggunakan fungsi dalamreplace
.C,
150129 BytesFungsi ini hanya mengkonversi char ke int dan menambahkan offset yang sesuai ke int sebelum mencetak. Saya tahu ini bukan yang terpendek tapi saya tidak melihat implementasi C.
Contoh penggunaan
PEMBARUAN: disingkat nama variabel.
sumber
temp
) panjangnya tepat satu karakter.i,t;r(char*s){for(;i<strlen(s);i++){t=s[i]+25;t=t<116?180-t:244-t;isalpha(s[i])?putchar(t):putchar(s[i]);}}
Japt,
2322 byteCobalah online!
Bagaimana itu bekerja
sumber
C, 64
Fungsi batal yang memodifikasi string pada tempatnya.
Uji: ideone
sumber
c;t(char*p){for(;c=*p;)*p++=c>64&c<91|c>96&c<123?(c^31)-4:c;}
R,
6961 byteTerima kasih kepada @Giuseppe karena telah memangkas beberapa byte tambahan:
Versi sebelumnya:
Ini adalah fungsi anonim. Pemakaian:
sumber
intToUtf8(c(122:97,90:65))
alih-alihraw
konversi, dan Anda juga bisa menyingkirkannyacat
. Saya membuatnya sedikit kebiasaan untuk datang golf 1+ tahun jawaban Anda ...Serius, 31 byte (tidak bersaing)
Hex Dump:
Cobalah secara Online
Jelaskan:
Saya baru menyadari spesifikasi mengatakan tidak ada spasi tambahan, tetapi tidak ada cara untuk menekan jalur baru di Serius output, jadi tidak ada solusi Serius.
sumber
ESACREPPUesacrewol
artinyaRuby, 40 byte
Solusi baru: Mencuri bit yang membalik sihir dari beberapa posting lain di sini:
Ruby,
5546 byte9 byte off berkat @manatwork
uji coba:
sumber
Jolf, 15 byte
Tes suite , atau coba dengan masukan Anda sendiri
sumber
𝔼𝕊𝕄𝕚𝕟 2, 12 karakter / 26 byte (tidak kompetitif)
Try it here (Firefox only).
Menambahkan fungsi transliterate setelah tantangan diposting.
Penjelasan
sumber
CJam, 21 byte
Bukan solusi yang optimal ... namun ... Cobalah secara online
Sulit untuk menjelaskan tanpa mengelompokkan hal-hal, jadi di sini adalah penjelasan umum: mendapat input, mendorong alfabet huruf besar dua kali dan huruf kecil dua kali, memutar hal-hal di sekitar, menggabungkan string huruf besar dan kecil, membalik satu, dan menggunakan transliterasi (mirip dengan jawaban Retina).
sumber
C (fungsi), 50
Ini didasarkan pada semua tiga sebelumnya jawaban C, sehingga kredit kepada @Ruud, @Danwakeem dan @ edc65.
Fungsi ini memodifikasi array char di tempatnya.
Pemahaman saya adalah entri fungsi diizinkan kecuali dilarang secara eksplisit dalam pertanyaan.
Cobalah online.
sumber
PostgreSQL,
118125 byteSqlFiddleDemo
Keluaran:
Memasukkan:
SELECT text'...'s
SUNTING:
Masukan sebagai tabel:
SqlFiddleDemo
Keluaran:
sumber
Python 3,
195169168166 byteTerima kasih kepada @TrangOul untuk -2 byte!
Bagaimana saya tidak melihat bahwa saya bisa bermain golf itu sebelumnya?
(agak) tidak diserang:
Cobalah di Ideone!
sumber
[]
darijoin
.generator object <genexpr> at...
, tapi saya akan mengujinyastr
nilai] dapat diteruskan kejoin()
fungsi.Python, 61 byte
Fungsi anonim. Pada huruf, apakah operasi pembalikan pada representasi bit dengan menambahkan 4, kemudian membalik lima bit terakhir, mirip dengan jawaban Javascript ETHproductions .
sumber
Haskell,
119104 byteDisimpan 15 byte berkat @nimi.
Pemakaian:
Penjelasan
Saya baru mengenal Haskell ... untuk pemrograman fungsional ... dan ke situs ini, dan saya tahu ada (banyak) jawaban yang lebih baik untuk pertanyaan ini, tetapi ikutilah saya.
sumber
let
. Mulai langsung denganc=fromEnum
. Gunakan(155-c x)
dan(219-c x)
. c)True
dapat diganti dengan1<2
. - Kode gagal dimuat untuk saya dengan kesalahan "variabel tipe ambigius" untuk fungsic
dans
(ghci 7.10.2), tetapi ini dapat dengan mudah diperbaiki denganf[]=""
alih - alihf[]=[]
.Perl 6 , 28 byte
Pemakaian:
sumber
Warning: Use of "ord" without parentheses is ambiguous at (eval 8)[/System/Library/Perl/5.18/perl5db.pl:732] line 2.
Saya tidak tahu tentang perl jadi apakah saya melakukan sesuatu yang salah? Bagaimana saya menjalankan ini?m: my &swap = {S:g/\w/{chr $/.ord+4+^31}/}; say swap ('a'..'z').join
Java, 136 byte
Contoh penggunaan:
Mungkin bahasa yang paling umum digunakan terburuk dalam hal ukuran byte.
sumber
void x(String i){for(Character c:i.toCharArray())System.out.print(c.isLetter(c)?(char)(c<91?90-(c-65):122-(c-97)):c);}
( 118 bytes )void y(String i){for(int c:i.getBytes())System.out.print((char)(c>65&c<91|c>96&c<123?c<91?90-(c-65):122-(c-97):c));}
( 116 byte )90-(c-65)
menjadi-c+65+90
dan122-(c-97)
ke dalam-c+97+122
, yang menyimpan masing-masing satu byte.Unix shell + tr + printf, 35 byte
Inilah Anda, jawaban kanonik dalam tr. Aku berpikir bagaimana bisa pertanyaan untuk transliterasi abjad pergi tanpa jawaban kanonik untuk tr ansliterate alfabet?
tr dengan sendirinya bahkan tidak melakukan "Halo, Dunia!" dan karena itu bukan bahasa pemrograman, jadi
saya menandai jawabannya sebagai tidak bersaing[1] .[1]: Edit: Sebenarnya, Unix shell adalah bahasa dan tr adalah pustaka standar . Terima kasih kepada Downgoat dan Digital Trauma karena membantu saya mengetahui hal ini.
sumber
tr
ada di coreutils) sebagai pustaka standar. Lihat banyak jawaban saya ;-)tr: range-endpoints of 'Z-A' are in reverse collating sequence order
. Saya pikir Anda harus melakukan sesuatu sepertitr A-Za-z $(printf %s {Z..A} {z..a})
(dan ganti$( )
dengan backticks)printf
- setelah semua, yang ditentukan oleh Posix . Juga built-in di bash yang cukup di mana-mana hari ini. Bagaimanapun, memiliki sesuatu yang sudah diinstal pada sistem setiap orang bukanlah prasyarat untuk kode-golf - tidak semua orang memiliki CJam pada sistem mereka juga ;-)}
dan{
diperlukan - jika tidak, ekspansi akan menjadi sepertiZz Zy Zx ... Za Yz ... Aa
05AB1E , 5 byte [tidak bersaing]
Menggunakan set karakter CP-1252 .
Cobalah online!
Penjelasan:
sumber
MATL , 21
28byteMenggunakan versi 6.0.0 , yang lebih awal dari tantangan ini. Kode berjalan dalam oktaf.
Contoh
Penjelasan
Pendekatan lama, 28 byte
sumber
MATLAB, 61 byte
Saya mencoba
f=@ismember
, dan membuat rentanga=65:90
variabel dan lakukan32+a
diismember
-call kedua . Semua ini memperpendek kode, tetapi akan menghasilkan program dan karenanya membutuhkan keduanyadisp
daninput
.Ini memberi:
sumber
Brachylog , 66 byte
Kurangnya built-in sangat menyakitkan di sini, jadi kita harus menggunakan perhitungan kode ASCII yang lama.
Predikat
brachylog_main
mengharapkan string kode karakter sebagai input dan tidak ada output, misalnyabrachylog_main(`Hello, World!`,_).
Penjelasan
sumber
Perl 6,
4039 byteKarena semua orang melakukan fungsi anonim:
(Terima kasih @ b2gills untuk tipnya)
Menggunakan bit yang sama membalik voodoo seperti beberapa posting lainnya. Saya tidak yakin apakah akan memasukkan deklarasi variabel / fungsi dalam jumlah byte, jadi saya lakukan kalau-kalau. Tanpa itu solusi ini hanya 34 byte.
Pemakaian:
sumber
*.trans(…)
untuk membuatnya lebih pendek.Python 3,
164159 bytesumber