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>
Odpowiedzi:
Pyth, 8 bajtów
@xnor zasugerował to prostsze podejście w odpowiedzi na Pyth @ FryAmTheEggman, a następnie przetłumaczyłem go na Pyth.
Wykorzystuje to przydatne zachowanie
X
(translate), gdy podano tylko dwa argumenty: tłumaczy z drugiego argumentu na odwrócony drugi argument. Robimy to najpierw za pomocą małych liter (G
), a następnie za pomocą wielkich literG
.źródło
C, 59 bajtów
Żal znowu wychowywanie C, ale byłem trochę rozczarowany, aby wyświetlić tylko C funkcje tutaj. Miałem wrażenie, że OP szukał użytecznego produktu.
Kompilowany na Ubuntu 14.04 za pomocą prostego:
Wynikowy plik wykonywalny odczytuje dowolną liczbę wierszy ze standardowego wejścia i zapisuje wynik na standardowe wyjście.
Dzięki tak wielu innym plakatom na temat sztuczki XOR.
źródło
CJam, 17 bajtów
Chciałem pomóc GamrCorpsowi zagrać w jego rozwiązanie CJam, ale wynik był tak inny, że postanowiłem udzielić osobnej odpowiedzi.
Wypróbuj online.
Wyjaśnienie
źródło
JavaScript (ES6),
6967 bajtówUżywa tej samej strategii, co moja odpowiedź Japt :
Przeklinaj swoje niewiarygodnie długie nazwy nieruchomości, JS ...
źródło
document.getElementById
document.getElementsByClassName
lub, w przeglądarce Firefox i Chrome,document.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
Siatkówka ,
171413 bajtówKod:
Wyjaśnienie:
To robi magiczne rzeczy i wykonuje zadanie.
Wypróbuj tutaj .
źródło
\
. Pech, że nie udało mi się jeszcze dodać klas znaków dla liter i klas znaków odwróconych.\T`lL`RlRL
.Pyth,
109Dzięki Jakube za uratowanie bajtu dzięki nowej funkcji
;
!Pakiet testowy
Szybkie wyjaśnienie: zmniejsz rozpoczynanie od wprowadzenia danych powyżej liczb 0 i 1. Operacja, którą należy wykonać, polega na przetłumaczeniu małych liter alfabetu za pomocą jednego
r...0
lub dwóch,r...1
które są odpowiednio dolną i górną funkcją z python, a następnie odwróconą.źródło
uXGr;H)2z
X
alfabetu, a następnie wielkich liter?XXzG)rG1
? To wydaje się działać.Julia,
746147 bajtówJest to funkcja lambda, która przyjmuje ciąg i zwraca ciąg. Aby go wywołać, przypisz go do zmiennej.
Dopasowujemy każdą literę za pomocą wyrażenia regularnego i zastępujemy każdą literę znakiem ASCII odpowiadającym 31 XOR kodowi ASCII dla litery, minus 4.
źródło
$
więc możesz chcieć to zaktualizować⊻
. Nie wiedziałem, że możesz użyć funkcji wreplace
.C,
150129 bajtówTa funkcja konwertuje char na int i dodaje odpowiednie przesunięcie do int przed drukowaniem. Wiem, że nie jest najkrótszy, ale nie widziałem implementacji C.
Przykładowe użycie
AKTUALIZACJA: skrócona nazwa zmiennej.
źródło
temp
) dokładnie na jedną postać.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 bajtówWypróbuj online!
Jak to działa
źródło
C, 64
Funkcja void, która modyfikuje ciąg w miejscu.
Test: ideone
źródło
c;t(char*p){for(;c=*p;)*p++=c>64&c<91|c>96&c<123?(c^31)-4:c;}
R
69 69bajtówDzięki @Giuseppe za golenie dodatkowych bajtów:
Poprzednia wersja:
To anonimowa funkcja. Stosowanie:
źródło
intToUtf8(c(122:97,90:65))
zamiastraw
konwersji i możesz się ich również pozbyćcat
. Przyzwyczajam się do gry w golfa w wieku 1+ lat ...Poważnie, 31 bajtów (niekonkurujących)
Hex Dump:
Wypróbuj online
Expl:
Właśnie zdałem sobie sprawę, że specyfikacja mówi, że nie ma dodatkowych białych znaków, ale nie ma sposobu, aby powstrzymać końcowe znaki nowej linii w wynikach Poważnie, więc nie ma poważnego rozwiązania.
źródło
ESACREPPUesacrewol
znaczyRubinowy, 40 bajtów
Nowe rozwiązanie: ukradł bit, który nieco rzucił magię z innych postów tutaj:
Rubinowy,
5546 bajtów9 bajtów off dzięki @manatwork
testowe uruchomienie:
źródło
Jolf, 15 bajtów
Zestaw testowy lub wypróbuj go z własnymi danymi wejściowymi
źródło
𝔼𝕊𝕄𝕚𝕟 2, 12 znaków / 26 bajtów (niekonkurencyjny)
Try it here (Firefox only).
Dodano funkcję transliteracji po opublikowaniu wyzwania.
Wyjaśnienie
źródło
CJam, 21 bajtów
Nie jest to optymalne rozwiązanie ... jeszcze ... Wypróbuj online
Trudno to wyjaśnić bez grupowania rzeczy, więc oto ogólne wyjaśnienie: pobiera dane wejściowe, przesuwa dwa razy wielkie litery i dwa razy małe litery, obraca rzeczy, łączy ciągi wielkich i małych liter, odwraca jeden i używa transliteracji (podobnie do odpowiedzi Retina).
źródło
C (funkcja), 50
Opiera się to na wszystkich trzech poprzednich odpowiedziach w języku C, więc podziękowania dla @Ruud, @Danwakeem i @ edc65.
Ta funkcja modyfikuje tablicę znaków na miejscu.
Rozumiem, że wpisy funkcji są dozwolone, chyba że wyraźnie zakazano w pytaniu.
Wypróbuj online.
źródło
PostgreSQL,
118125 bajtówSqlFiddleDemo
Wynik:
Wejście:
SELECT text'...'s
EDYTOWAĆ:
Wprowadź jako tabelę:
SqlFiddleDemo
Wynik:
źródło
Python 3,
195169168166 bajtówDzięki @TrangOul za -2 bajty!
Jak nie widziałem, że mogłem wcześniej grać w golfa?
(sorta) nie golfił:
Wypróbuj na Ideone!
źródło
[]
odjoin
.generator object <genexpr> at...
, ale przetestuję jąstr
wartości] może zostać przekazana dojoin()
funkcji.Python, 61 bajtów
Anonimowa funkcja. Na literach wykonuje operację odwracania reprezentacji bitów przez dodanie 4, a następnie przerzucenie ostatnich pięciu bitów, podobnie do odpowiedzi Javascript ETHproductions .
źródło
Haskell,
119104 bajtówZaoszczędzono 15 bajtów dzięki @nimi.
Stosowanie:
Wyjaśnienie
Jestem nowy w Haskell ... w programowaniu funkcjonalnym ... i na stronie, i wiem, że istnieje (dużo) lepszych odpowiedzi na to pytanie, ale proszę o wyrozumiałość.
źródło
let
. Zacznij bezpośrednio odc=fromEnum
. Użyj(155-c x)
i(219-c x)
. c)True
można zastąpić1<2
. - Kod nie można załadować do mnie z „typ zmiennej niejednoznaczną” błędu dla funkcjic
is
(ghci 7.10.2), ale to może być łatwo ustalony zef[]=""
zamiastf[]=[]
.Perl 6 , 28 bajtów
Stosowanie:
źródło
Warning: Use of "ord" without parentheses is ambiguous at (eval 8)[/System/Library/Perl/5.18/perl5db.pl:732] line 2.
Nie wiem nic o perlu, więc robię coś złego? Jak miałbym to uruchomić?m: my &swap = {S:g/\w/{chr $/.ord+4+^31}/}; say swap ('a'..'z').join
Java, 136 bajtów
Przykładowe użycie:
Prawdopodobnie najgorszy powszechnie używany język pod względem wielkości bajtów.
źródło
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);}
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 bajtów )90-(c-65)
do-c+65+90
i122-(c-97)
do-c+97+122
, co pozwala zaoszczędzić bajt.Powłoka Unix + tr + printf, 35 bajtów
Oto kanoniczna odpowiedź w tr. Pomyślałem, jak pytanie transliteracji alfabetu może przebiegać bez kanonicznej odpowiedzi na tr transliterację alfabetu?
tr sam w sobie nawet nie robi „Witaj, świecie!” i jako taki nie jest językiem programowania, dlatego
zaznaczyłem odpowiedź jako niekonkurencyjną[1] .[1]: Edycja: W rzeczywistości powłoka uniksowa jest językiem, a tr jest standardową biblioteką . Dzięki Downgoat i Digital Trauma za pomoc w wykryciu tego.
źródło
tr
w coreutils) jako biblioteki standardowej. Zobacz niezliczone moje odpowiedzi ;-)tr: range-endpoints of 'Z-A' are in reverse collating sequence order
. Myślę, że musisz zrobić coś takiegotr A-Za-z $(printf %s {Z..A} {z..a})
(i zastąpić$( )
backticks)printf
- w końcu jest określony przez Posix . Również jest wbudowany w bash, który jest dość wszechobecny w dzisiejszych czasach. Niezależnie od tego, posiadanie czegoś wstępnie zainstalowanego na każdym systemie nie jest warunkiem wstępnym do gry w golfa - nie każdy ma też CJam w swoim systemie ;-)}
i{
jest wymagana - w przeciwnym razie rozszerzenie stanie się czymś podobnymZz Zy Zx ... Za Yz ... Aa
05AB1E , 5 bajtów [niekonkurencyjny]
Używa zestawu znaków CP-1252 .
Wypróbuj online!
Wyjaśnienie:
źródło
MATL , 21
28bajtówUżywa wersji 6.0.0 , która jest wcześniejsza niż to wyzwanie. Kod działa w Octave.
Przykład
Wyjaśnienie
Stare podejście, 28 bajtów
źródło
MATLAB, 61 bajtów
Próbowałem
f=@ismember
i zmieniłem zakresa=65:90
i robię to32+a
w drugimismember
wywołaniu. Wszystko to skróciło kod, ale spowodowałoby program, a zatem wymagałoby zarównodisp
iinput
.To daje:
źródło
Brachylog , 66 bajtów
Brak wbudowanych naprawdę boli tutaj, więc musimy uciekać się do starych dobrych obliczeń kodów ASCII.
Predykat
brachylog_main
oczekuje ciągu znaków kodowych jako danych wejściowych i bez danych wyjściowych, npbrachylog_main(`Hello, World!`,_).
Wyjaśnienie
źródło
Perl 6,
4039 bajtówPonieważ wszyscy inni wykonują anonimowe funkcje:
(Dzięki @ b2gills za wskazówkę)
Używa tego samego trzepotania voodoo, co niektóre inne posty. Nie byłem pewien, czy uwzględnić deklarację zmiennej / funkcji w liczbie bajtów, więc zrobiłem to na wszelki wypadek. Bez tego rozwiązanie ma tylko 34 bajty.
Stosowanie:
źródło
*.trans(…)
go skrócić.Python 3,
164159 bajtówźródło