var QUESTION_ID=98776,OVERRIDE_USER=12537;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:
05AB1E / MATL ,
109 karakterDi 05AB1E ini palindromizes . Dalam MATL ia melakukan depalindromizes .
Penjelasan dalam 05AB1E
Bagian kode ini tidak melakukan apa pun (secara global):
Ini adalah bagian yang berfungsi:
Penjelasan dalam MATL
Ini adalah bagian yang berfungsi:
Ini diabaikan:
sumber
05AB1E / Jelly , 6 karakter
Palindromize di 05AB1E.
Depalindromizes dalam Jelly.
Cobalah di 05AB1E
Penjelasan 05AB1E
Cobalah di Jelly
Penjelasan Jelly
sumber
Python 3 / JavaScript, 83 karakter
Disimpan 2 byte berkat @LevitatingLion
Python palindromizes , JavaScript depalindromizes .
Saya mencoba menjaga lebih banyak kode yang konstan di antara keduanya, tetapi saya tidak tahu cara yang baik untuk menyelinap
.slice
ke Python. Inilah metode alternatif:sumber
x[::-1][1:]
denganx[-2::-1]
untuk menyimpan dua karakter.Scala / Javascript, 106 byte
Palindromize dalam scala dan depalindromizes dalam javascript.
Cobalah di ideone (scala) - Peringatan: penyorotan sintaksis salah
Cobalah di jsfiddle (javascript).
Penjelasan:
Scala, seperti java, memproses unicode lolos sebelum yang lainnya, jadi scalac melihat kode seperti ini:
Javascript akan diuraikan seperti ini:
sumber
CJam / MATL , 18 karakter
Dalam CJam ini palindromizes . Dalam MATL ia melakukan depalindromizes .
Penjelasan dalam CJam
Bagian kerja:
Bagian dummy:
Penjelasan dalam MATL
Bagian dummy:
Bagian kerja:
Bagian boneka lain:
sumber
𝔼𝕊𝕄𝕚𝕟 / Javascript ES6, 55 karakter
Try it here (ES6 browsers only).
Palindromize di 𝔼𝕊𝕄𝕚𝕟, depalindromizes di Javascript ES6.
Saya pikir ini akan mudah, karena 𝔼𝕊𝕄𝕚𝕟 mengkompilasi ke ES6 dan sebagian besar ES6 dapat dijalankan di 𝔼𝕊𝕄𝕚𝕟. Rupanya, saya benar-benar salah.
Penjelasan
this._
memeriksa untuk melihat apakah_
ada variabel dalam lingkup global; 𝔼𝕊𝕄𝕚𝕟 menggunakan Lodash dan karenanya telah_
disimpan, tetapi ES6 murni tidak.Segmen 𝔼𝕊𝕄𝕚𝕟 -
Σ(`ï+ï.Ħ⬮.Đ1`)
- mengevaluasi dari string kode yang palindromizes input. Biasanya, kodenyaï+ïĦ⬮Đ1
, tapi saya meletakkan titik-titik untuk membuat kompiler senang .Segmen Javascript -
(x=prompt()).slice(0,-x.length/2)
- mendepromindorisasi string dari prompt.Saya akan menggunakan fungsi (jadi saya tidak harus berurusan dengan
prompt
), tetapi fungsi evaluasi 𝔼𝕊𝕄𝕚𝕟 tidak seperti itu, jadi saya menggunakanprompt
dan tidak ada fungsi untuk membuat kompiler bahagia .sumber
JavaScript ES6 / JavaScript ES3, 143 byte
Palindromizes dalam JavaScript ES6, depalindromizes dalam JavaScript ES3. Tidak bersaing , itu hanya mencoba membuat polyglot untuk dua versi dari bahasa yang sama.
Dalam fungsi ES3 diizinkan dalam blok, tetapi karena blok tidak mendefinisikan cakupan, fungsi baru hanya menggantikan fungsi pertama. Dalam mode ketat ES5 gagal karena tidak memungkinkan fungsi didefinisikan dalam blok. Di ES6 diizinkan dan, karena blok sekarang mendefinisikan cakupan, fungsi pertama tidak diganti.
Diuji di Internet Explorer 5 (ditiru) untuk ES3 dan Node.JS dan Firefox untuk ES6.
sumber
Jelly / CJam,
1514 karakter-1 char terima kasih untuk 42545 (ETHproductions)
Cobalah online! (Jelly) (Palindromisasi)
Penerjemah CJam (Depalindromization)
Penjelasan jelly:
Dalam Jelly,
¶
sama dengan\n
, jadi inilah yang Jelly lihat:Penjelasan CJam:
Di CJam, semua yang terjadi setelah
e#
satu baris adalah komentar. Jadi, inilah yang dilihat CJam:sumber
Perl / JavaScript, 73 byte
Perl mengembalikan palindrome dan JavaScript 'de-palindromizes' string input.
JavaScript
Mengasumsikan string sudah merupakan palindrome yang valid.
Semua pekerjaan terjadi di bagian pertama:
Menyimpan input
s
, lalu mengembalikan bagian pertama (dibulatkan) dari string. Sisa skrip adalah penugasan variabel tak berguna:Coba di sini:
Perl
Harus dijalankan dengan
-pl
, misalnya:Kode ini pada dasarnya adalah dua substitusi (
s///
), tetapi menggunakan=
sebagai pembatas alih-alih/
:Yang pertama, mengganti
prompt();console.log(s.slice(0,-s.length\/2));eg
(yang, diakui akan mengacaukan string Anda jika berisi sesuatu seperti"prompt;console.logs.slice0,-s.length/2;eg"
...)1;t
yang sudaheval
diedit, kembalit
, yang kedua menggantikan ujung string ($
)reverse$_
yang kemudian jugaeval
diedit dan menambahkan sumber asli string dibalik.Cobalah online!
sumber
Python 2 / Nim ,
7674 bytePalindromize dengan Python, depalindromizes dalam Nim. Sintaks komentar penyalahgunaan.
Python dan Nim keduanya digunakan
#
untuk komentar. Python tidak mendukung komentar blok sama sekali (kecuali untuk string multiline dengan"""
), tetapi Nim melakukannya dengan#[ comment ]#
.Kami menyalahgunakan ini untuk mengomentari Python (di awal) untuk Nim, kemudian menggunakan trailing
]
di Python untuk memulai kode Nim, tampak seperti komentar untuk Python.Kode Python membutuhkan inputnya dikelilingi dengan tanda kutip. Kode Nim tidak memiliki batasan ini.
Diuji pada Python 2.7.8 dan Nim 0.14.2.
Ide itu! - Python 2, palindromisasi
Ide itu! - Nim, depalindromizingRupanya versi Nim Ideone menggunakan (0.11.2) tidak mendukung komentar multiline. Bekerja pada Nim 0.14.2.sumber
Jelly / Pyth,
1514 karakterKredit di mana kredit jatuh tempo.
Cobalah online! (Jelly) (Palindromizes)
pyth.herokuapp.com (Pyth) (Depalindromizes) (mengikuti baris baru)
sumber
05AB1E / V , 14 byte
Cobalah online!
Palindromize di 05AB1E
Cobalah online!
Depalindromizes dalam V, menggunakan jawaban ini dari DrMcMoylex.
sumber
Japt / JavaScript, 63 karakter
Pelajaran hari ini: Poliglot Japt / JavaScript selalu merupakan ide yang buruk ...
JavaScript
Baris pertama mengatur variabel
$Oq
ke 1, kemudian melakukan no-op dengan$Oq &&0
.Baris kedua meminta pengguna untuk memasukkan string, menugaskannya ke variabel
$U
, lalu mengirisnya dari indeks0*$U
(selalu 0) untuk diindeks-$U.length/2
. Ini melakukan depalindromisasi yang diperlukan; hasilnya kemudianalert
diedit. Program berakhir pada ReferenceError karena variabel$Uê
tidak didefinisikan.Japt
Di Japt, apa pun di antara tanda dolar dimasukkan langsung ke kode sumber yang ditranskripsikan. Selain itu, setiap huruf kecil berubah menjadi misalnya
.q(
, kecuali karakter sebelumnya adalah huruf kecil lain, dalam hal ini menjadi"q"
. Ruang diubah menjadi)
, dan semua paren yang hilang ditambahkan secara otomatis. Program di atas mentransformasikan secara kasar ke:Ini kemudian dieksekusi sebagai JavaScript.
Oq=1;
set variabelOq
menjadi 1. Ini tidak pernah digunakan lagi, jadi ini adalah no-op.O.q()
adalah fungsi yang menghapus STDOUT dan mengembalikanundefined
; ini palsu, sehingga seluruh&&0 .a("l".e(...
bagian tidak dieksekusi.Satu-satunya bagian yang sangat penting adalah
U.ê()
. Input implisit menempatkan string input ke dalamU
,.ê()
mengubahnya menjadi palindrom, dan output implisit mengirimkan hasilnya ke STDOUT.Jika entri fungsi diizinkan, yang berikut ini akan berfungsi selama 34 karakter:
Bagian pertama mendefinisikan fungsi ES6, tetapi masih merupakan program lengkap di Japt. Uji secara online!
sumber
Java / Brainfuck, 71 byte
Palindromize dalam BF, depalindromizes di Jawa.
Demi kejelasan, inilah yang penting bagi juru bahasa BF:
di mana loop terakhir yang mengandung karakter dari Java lambda dilewati karena pointer menunjuk ke karakter nol pada titik itu.
sumber
05AB1E / Java 8, 102 karakter
Palindromize di 05AB1E.
Depalindromize di Java 8.
Penjelasan 05AB1E:
Penjelasan Java 8:
sumber