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>
Odpowiedzi:
05AB1E / MATL ,
109 znakówW 05AB1E to palindromalizuje . W MATL depalindromalizuje .
Objaśnienie w 05AB1E
Ta część kodu nic nie robi (globalnie):
Jest to część, która działa:
Objaśnienie w MATL
Jest to część, która działa:
Jest to ignorowane:
źródło
05AB1E / Galaretka , 6 znaków
Palindromizes w 05AB1E.
Depalindromizes w galarecie.
Wypróbuj w 05AB1E
05AB1E Objaśnienie
Wypróbuj w galarecie
Wyjaśnienie galaretki
źródło
Python 3 / JavaScript, 83 znaki
Zaoszczędzono 2 bajty dzięki @LevitatingLion
Python palindromizes , JavaScript depalindromizes .
Próbowałem utrzymać stały kod między nimi, ale nie mogłem wymyślić dobrego sposobu na wkradnięcie się
.slice
do Pythona. Oto alternatywna metoda:źródło
x[::-1][1:]
zex[-2::-1]
aby zapisać dwa znaki.Scala / JavaScript, 106 bajtów
Palindromizes w scala i depalindromizes w javascript.
Wypróbuj na ideone (scala) - Ostrzeżenie: nieprawidłowe podświetlanie składni
Wypróbuj na jsfiddle (javascript).
Wyjaśnienie:
Scala, podobnie jak java, przetwarza kody ucieczki Unicode przed wszystkim innym, więc scalac widzi kod w ten sposób:
JavaScript zostanie sparsowany w następujący sposób:
źródło
CJam / MATL , 18 znaków
W CJam to palindromalizuje . W MATL depalindromalizuje .
Objaśnienie w CJam
Część robocza:
Część manekina:
Objaśnienie w MATL
Część manekina:
Część robocza:
Kolejna część manekina:
źródło
𝔼𝕊𝕄𝕚𝕟 / JavaScript ES6, 55 znaków
Try it here (ES6 browsers only).
Palindromizes w 𝔼𝕊𝕄𝕚𝕟, depalindromizes w JavaScript ES6.
Myślałem, że będzie to łatwe, ponieważ 𝔼𝕊𝕄𝕚𝕟 kompiluje się do ES6 i większość ES6 można uruchomić w 𝔼𝕊𝕄𝕚𝕟. Najwyraźniej całkowicie się mylę.
Wyjaśnienie
this._
sprawdza, czy zmienna_
istnieje w zasięgu globalnym; 𝔼𝕊𝕄𝕚𝕟 korzysta z Lodash i dlatego ma_
zapisane, ale czysty ES6 nie.Segment 𝔼𝕊𝕄𝕚𝕟 -
Σ(`ï+ï.Ħ⬮.Đ1`)
- ocenia na podstawie kodu, który palindromalizuje dane wejściowe. Normalnie kod byłbyï+ïĦ⬮Đ1
, ale wstawiam kropki, aby kompilator był szczęśliwy .Segment JavaScript -
(x=prompt()).slice(0,-x.length/2)
- depalindromalizuje ciąg z monitu.Zamierzałem użyć funkcji (więc nie musiałem sobie z tym radzić
prompt
), ale funkcja oceny didn't nie podobała się, więc użyłemprompt
i żadnej funkcji, aby uszczęśliwić kompilator .źródło
JavaScript ES6 / JavaScript ES3, 143 bajty
Palindromizes w JavaScript ES6, depalindromizes w JavaScript ES3. Nie konkuruje , to tylko próba stworzenia poliglota dla dwóch wersji tego samego języka.
W ES3 funkcje są dozwolone w blokach, ale ponieważ bloki nie definiują zakresów, nowa funkcja zastępuje tylko pierwszą funkcję. W trybie ścisłym ES5 kończy się niepowodzeniem, ponieważ nie pozwala na definiowanie funkcji w blokach. W ES6 jest to dozwolone, a ponieważ bloki definiują teraz zakresy, pierwsza funkcja nie jest zastępowana.
Testowane w Internet Explorerze 5 (emulowanym) dla ES3 i Node.JS oraz Firefox dla ES6.
źródło
Galaretka / CJam,
1514 znaków-1 znak dzięki 42545 (ETHprodukcje)
Wypróbuj online! (Galaretka) (Palindromizacja)
Tłumacz CJam (Depalindromization)
Objaśnienie galaretki:
W Galaretce
¶
jest taki sam jak\n
, więc oto, co widzi Jelly:Wyjaśnienie CJam:
W CJam wszystko po
e#
wierszu jest komentarzem. Oto, co widzi CJam:źródło
Perl / JavaScript, 73 bajty
Perl zwraca palindrom, a JavaScript „usuwa palindromizację” ciągu wejściowego.
JavaScript
Zakłada, że ciąg jest już prawidłowym palindromem.
Cała praca odbywa się w pierwszej części:
Przechowuje dane wejściowe
s
, a następnie zwraca pierwszą połowę (zaokrągloną w górę) ciągu. Reszta skryptu to bezcelowe przypisania zmiennych:Wypróbuj tutaj:
Perl
Musi być uruchamiany z
-pl
np .:Kod jest w zasadzie dwoma podstawieniami (
s///
), ale używa=
jako separatora zamiast/
:Pierwszy, zastępujący
prompt();console.log(s.slice(0,-s.length\/2));eg
(który wprawdzie zepsuje Twój ciąg znaków, jeśli zawiera coś takiego jak"prompt;console.logs.slice0,-s.length/2;eg"
...),1;t
którymeval
ed jest , zwracająct
, drugi zastępuje koniec ciągu ($
),reverse$_
którym jest wtedy równieżeval
edytowany i dołącza oryginalne źródło ciąg odwrócony.Wypróbuj online!
źródło
Python 2 / Nim ,
7674 bajtówPalindromizes w Pythonie, depalindromizes w Nim. Nadużywa składni komentarzy.
Używają zarówno Python, jak i Nim
#
komentarzy. Python w ogóle nie obsługuje komentarzy blokowych (z wyjątkiem ciągów wielowierszowych z"""
), ale Nim tak#[ comment ]#
.Nadużywamy tego, aby komentować Python (na początku) dla Nima, a następnie użyć końcowego
]
końca w Pythonie, aby uruchomić kod Nim, wyglądając jak komentarz dla Pythona.Kod w Pythonie wymaga wprowadzania danych otoczonych cudzysłowami. Kod Nim nie ma tego ograniczenia.
Testowane na Pythonie 2.7.8 i Nim 0.14.2.
Ideone to! - Python 2, palindromizing
Ideone to! - Nim, depalindromizacjaNajwyraźniej wersja Nim Ideone (0.11.2) nie obsługuje komentarzy wielowierszowych. Działa na Nim 0.14.2.źródło
Galaretka / Pyth,
1514 znakówKredyt, na który przypada kredyt.
Wypróbuj online! (Galaretka) (Palindromizes)
pyth.herokuapp.com (Pyth) (Depalindromizes) (trailing newline)
źródło
05AB1E / V , 14 bajtów
Wypróbuj online!
Palindromizes w 05AB1E
Wypróbuj online!
Depalindromizes w V, używając tej odpowiedzi z DrMcMoylex.
źródło
Japt / JavaScript, 63 znaki
Lekcja dnia: poligloty Japt / JavaScript są zawsze złym pomysłem ...
JavaScript
Pierwszy wiersz ustawia zmienną
$Oq
na 1, a następnie wykonuje operację no-op przy pomocy$Oq &&0
.Drugi wiersz monituje użytkownika o ciąg wejściowy, przypisując go do zmiennej
$U
, a następnie wycina go z indeksu0*$U
(zawsze 0) do indeksu-$U.length/2
. Wykonuje to niezbędną depalindromizację; wynik jest następniealert
edytowany. Program kończy się na referencyjnym błędzie, ponieważ zmienna$Uê
nie jest zdefiniowana.Japt
W Japt wszystko między znakami dolara jest wstawiane bezpośrednio do transpilowanego kodu źródłowego. Poza tym każda mała litera transponuje się na np.
.q(
, Chyba że poprzedni znak był inną małą literą, w którym to przypadku staje się"q"
. Spacja jest transpilowana do)
, a wszystkie brakujące pareny są automatycznie dodawane. Powyższy program w przybliżeniu transponuje się do:Jest to następnie wykonywane jako JavaScript.
Oq=1;
ustawia zmiennąOq
na 1. Nie jest to nigdy więcej używane, więc nie można tego zrobić.O.q()
jest funkcją, która kasuje STDOUT i zwracaundefined
; to jest fałsz, więc cała&&0 .a("l".e(...
część nie jest wykonywana.Jedyne, co naprawdę się liczy, to
U.ê()
. Dane niejawne wprowadzają ciąg wejściowyU
,.ê()
zamieniają go w palindrom, a dane niejawne wysyłają wynik do STDOUT.Jeśli dozwolone są wpisy funkcji, następujące funkcje będą działać dla 34 znaków:
Pierwsza część definiuje funkcję ES6, ale nadal jest to pełny program w Japt. Przetestuj online!
źródło
Java / Brainfuck, 71 bajtów
Palindromizes w BF, depalindromizes w Java.
Dla jasności to, co ma znaczenie dla tłumacza BF:
gdzie ostatnia pętla zawierająca znaki z lambda Java jest pomijana, ponieważ wskaźnik wskazuje w tym miejscu znak zerowy.
źródło
05AB1E / Java 8, 102 znaki
Palindromize w 05AB1E.
Depalindromize w Javie 8.
Objaśnienie 05AB1E:
Objaśnienie Java 8:
źródło