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>
Ответы:
05AB1E / MATL ,
109 символовВ 05AB1E это палиндромизирует . В MATL это депалиндромизирует .
Пояснение в 05AB1E
Эта часть кода ничего не делает (глобально):
Это часть, которая делает работу:
Пояснение в MATL
Это часть, которая делает работу:
Это игнорируется:
источник
05AB1E / Желе , 6 символов
Палиндромизирует в 05AB1E.
Депалиндромизируется в желе.
Попробуйте в 05AB1E
05AB1E Объяснение
Попробуйте это в желе
Желе объяснение
источник
Python 3 / JavaScript, 83 символа
Сохранено 2 байта благодаря @LevitatingLion
Python палиндромизирует , JavaScript депалиндромизирует .
Я пытался держать больше кода постоянным между ними, но я не мог найти хороший способ проникнуть
.slice
в Python. Вот альтернативный метод:источник
x[::-1][1:]
с ,x[-2::-1]
чтобы сохранить двух символов.Scala / Javascript, 106 байт
Палиндромизирует в скале и депалиндромизирует в javascript.
Попробуйте это на ideone (scala) - Предупреждение: неправильная подсветка синтаксиса
Попробуйте это на jsfiddle (javascript).
Объяснение:
Scala, как и Java, обрабатывает экранирование Юникода раньше, чем все остальное, поэтому Scacac видит код следующим образом:
Javascript анализируется следующим образом:
источник
CJam / MATL , 18 знаков
В CJam это палиндромизирует . В MATL это депалиндромизирует .
Объяснение в CJam
Рабочая часть:
Пустышка:
Пояснение в MATL
Пустышка:
Рабочая часть:
Еще одна пустышка:
источник
𝔼𝕊𝕄𝕚𝕟 / Javascript ES6, 55 символов
Try it here (ES6 browsers only).
Палиндромизирует в 𝔼𝕊𝕄𝕚𝕟, депалиндромизирует в Javascript ES6.
Я думал, что это будет легко, так как 𝔼𝕊𝕄𝕚𝕟 компилируется в ES6 и большая часть ES6 может быть запущена в 𝔼𝕊𝕄𝕚𝕟. Видимо, я совершенно не прав.
объяснение
this._
проверяет,_
существует ли переменная в глобальной области видимости; 𝔼𝕊𝕄𝕚𝕟 использует Lodash и поэтому_
сохранил, а чистый ES6 нет.Сегмент -
Σ(`ï+ï.Ħ⬮.Đ1`)
- вычисляет из строки код, который палиндромизирует ввод. Обычно, код был быï+ïĦ⬮Đ1
, но я помещаю точки, чтобы сделать компилятор счастливым .Сегмент Javascript -
(x=prompt()).slice(0,-x.length/2)
- депалиндромизирует строку из приглашения.Я собирался использовать функцию (так что мне не пришлось иметь дело с ней
prompt
), но функция оценки didn't не понравилась, поэтому я использовалprompt
и не имел функции, чтобы сделать компилятор счастливым .источник
JavaScript ES6 / JavaScript ES3, 143 байта
Палиндромизирует в JavaScript ES6, депалиндромизирует в JavaScript ES3. Не конкурируя , это просто попытка сделать полиглот для двух версий одного и того же языка.
В ES3 функции разрешены в блоках, но поскольку блоки не определяют области действия, новая функция просто заменяет первую функцию. В строгом режиме ES5 происходит сбой, поскольку он не позволяет определять функции в блоках. В ES6 это разрешено, и поскольку блоки теперь определяют области действия, первая функция не заменяется.
Протестировано в Internet Explorer 5 (эмулировано) для ES3 и Node.JS, а также Firefox для ES6.
источник
Желе / CJam,
1514 символов-1 символ благодаря 42545 (ETHproductions)
Попробуйте онлайн! (Желе) (палиндромизация)
CJam переводчик (Депалиндромизация)
Объяснение желе:
В Желе, так
¶
же, как\n
, так это то, что желе видит:CJam объяснение:
В CJam все после
e#
строки является комментарием. Итак, вот что видит CJam:источник
Perl / JavaScript, 73 байта
Perl возвращает палиндром, а JavaScript «де-палиндромизирует» входную строку.
JavaScript
Предполагается, что строка уже является действительным палиндромом.
Вся работа происходит в первом разделе:
Сохраняет входные данные
s
, затем возвращает первую половину (округленную) строки. Остальная часть скрипта бессмысленно присваивает переменные:Попробуйте это здесь:
Perl
Должен быть запущен
-pl
, например, с:Код представляет собой две подстановки (
s///
), но=
вместо него используется разделитель/
:Первая, заменяющая
prompt();console.log(s.slice(0,-s.length\/2));eg
(которая, по общему признанию, испортит вашу строку, если она содержит что-то вроде"prompt;console.logs.slice0,-s.length/2;eg"
...), с1;t
которойeval
ed, возвращаяt
, вторая заменяет конец строки ($
) сreverse$_
которой затем такжеeval
ed и добавляет исходный источник строка перевернутая.Попробуйте онлайн!
источник
Python 2 / Nim ,
7674 байтаПалиндромизирует в Python, депалиндромизирует в Nim. Злоупотребляет синтаксисом комментариев.
Python и Nim оба используют
#
для комментариев. Python вообще не поддерживает блочные комментарии (за исключением многострочных строк с"""
), но Nim поддерживает с#[ comment ]#
.Мы злоупотребляем этим, чтобы закомментировать Python (в начале) для Nim, а затем используем завершающий
]
код в Python для запуска кода Nim, похожего на комментарий для Python.Код Python требует ввода, заключенного в кавычки. Код Nim не имеет этого ограничения.
Протестировано на Python 2.7.8 и Nim 0.14.2.
Идео это! - Python 2, палиндромизирующий
Идео это! - Nim, depalindromizing.Очевидно, что версия Nim Ideone (0.11.2) не поддерживает многострочные комментарии. Работает на Nim 0.14.2.источник
Желе / Pyth,
1514 символовКредит, где кредит должен.
Попробуйте онлайн! (Желе) (палиндромизирует)
pyth.herokuapp.com (Pyth) (Депалиндромизес) (завершающий перевод строки)
источник
05AB1E / V , 14 байтов
Попробуйте онлайн!
Палиндромизирует в 05AB1E
Попробуйте онлайн!
Депалиндромизируется в V, используя этот ответ от DrMcMoylex.
источник
Japt / JavaScript, 63 символа
Урок дня: полиглоты Japt / JavaScript всегда плохая идея ...
JavaScript
Первая строка устанавливает переменную
$Oq
в 1, затем выполняет no-op с$Oq &&0
.Вторая строка запрашивает у пользователя вводную строку, присваивая ее переменной
$U
, затем разделяет ее от индекса0*$U
(всегда 0) до индекса-$U.length/2
. Это выполняет необходимую депалиндромизацию; результат тогдаalert
ед. Программа заканчивается на ReferenceError, потому что переменная$Uê
не определена.Japt
В Japt все, что находится между знаками доллара, вставляется непосредственно в переданный исходный код. Кроме этого, каждая строчная буква переносится, например
.q(
, если только предыдущий символ не был другой строчной буквой, в этом случае он становится"q"
. Пространство передается)
, и все недостающие символы добавляются автоматически. Вышеуказанная программа переносится примерно на:Затем это выполняется как JavaScript.
Oq=1;
устанавливает переменнуюOq
в 1. Это никогда не используется снова, так что это неоперация.O.q()
это функция, которая очищает STDOUT и возвращаетundefined
; это ложь, поэтому весь&&0 .a("l".e(...
часть не выполнена.Единственная часть , которая действительно имеет значение
U.ê()
. Неявный ввод помещает входную строкуU
,.ê()
превращает ее в палиндром, а неявный вывод отправляет результат в STDOUT.Если разрешены записи функций, для 34 символов будет работать следующее:
Первая часть определяет функцию ES6, но это все еще полная программа на Japt. Проверьте это онлайн!
источник
Java / Brainfuck, 71 байт
Палиндромизирует в БФ, депалиндромизирует в Яве.
Для ясности, вот что имеет значение для переводчика BF:
где последний цикл, содержащий символы из лямбды Java, пропускается, потому что указатель указывает на нулевой символ в этой точке.
источник
05AB1E / Java 8, 102 символа
Палиндромиз в 05AB1E.
Депалиндромизировать в Java 8.
Пояснение 05AB1E:
Пояснение Java 8:
источник