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>
Antworten:
Pyth, 8 Bytes
@xnor schlug diesen einfacheren Ansatz für @ FryAmTheEggmans Pyth-Antwort vor, dann übersetzte ich ihn in Pyth.
Hierbei wird das praktische Verhalten von
X
(translate) verwendet, wenn nur zwei Argumente angegeben werden: Es wird vom zweiten Argument in das umgekehrte zweite Argument übersetzt. Wir tun dies zuerst mit dem Kleinbuchstaben (G
) und dann mit GroßbuchstabenG
.quelle
C 59 Bytes
Es tut mir leid, dass ich C wieder aufrief, aber ich war etwas enttäuscht, dass hier nur C- Funktionen angezeigt wurden. Ich hatte den Eindruck, dass OP ein brauchbares Produkt suchte.
Kompiliert auf Ubuntu 14.04 mit einem einfachen:
Die resultierende ausführbare Datei liest eine beliebige Anzahl von Zeilen aus stdin und schreibt das Ergebnis in stdout.
Vielen Dank an so viele andere Poster für den XOR-Trick.
quelle
CJam, 17 Bytes
Ich wollte GamrCorps beim Golfspielen seiner CJam-Lösung unterstützen, aber das Ergebnis war so unterschiedlich, dass ich mich entschied, eine separate Antwort zu geben.
Probieren Sie es online aus.
Erläuterung
quelle
JavaScript (ES6),
69 bis67 ByteVerwendet die gleiche Strategie wie meine Japt-Antwort :
Verfluche deine unglaublich langen Eigentumsnamen, JS ...
quelle
document.getElementById
document.getElementsByClassName
oder, auf Firefox und Chrome,document.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
Retina ,
171413 BytesCode:
Erläuterung:
Dies erledigt einige magische Dinge und schließt die Aufgabe ab.
Probieren Sie es hier aus .
quelle
\
. Leider bin ich noch nicht dazu gekommen, Zeichenklassen für Buchstaben und umgekehrte Zeichenklassen hinzuzufügen.\T`lL`RlRL
.Pyth,
109Vielen Dank an Jakube für das Speichern eines Bytes mit dem neuen Feature von
;
!Test Suite
Eine kurze Erläuterung: Die Verringerung der Eingangs über die Zahlen 0 und 1. Der Betrieb beginnen durchzuführen ist , die Kleinbuchstaben übersetzen entweder mit
r...0
oderr...1
welche die unteren und oberen Funktionen aus Python bzw. aufgebracht, und dann umgekehrt.quelle
uXGr;H)2z
X
mit dem Alphabet und dann mit dem großgeschriebenen Alphabet verwenden?XXzG)rG1
? Das scheint zu funktionieren.Julia,
746147 BytesDies ist eine Lambda-Funktion, die eine Zeichenfolge akzeptiert und eine Zeichenfolge zurückgibt. Um es aufzurufen, weisen Sie es einer Variablen zu.
Wir vergleichen jeden Buchstaben mit einem regulären Ausdruck und ersetzen jeden Buchstaben durch das ASCII-Zeichen, das 31 XOR dem ASCII-Code für den Buchstaben minus 4 entspricht.
quelle
$
daher möchten Sie diese möglicherweise auf den neuesten Stand bringen⊻
. Ich wusste nicht, dass Sie eine Funktion in verwenden könnenreplace
.C
150129 BytesDiese Funktion konvertiert nur char in int und fügt dem int vor dem Drucken den entsprechenden Offset hinzu. Ich weiß, dass es nicht die kürzeste ist, aber ich habe keine C-Implementierung gesehen.
Anwendungsbeispiel
UPDATE: Ein Variablenname wurde gekürzt.
quelle
temp
) genau ein Zeichen lang gemacht werden.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 BytesProbieren Sie es online!
Wie es funktioniert
quelle
C 64
Eine Void-Funktion, mit der die Zeichenfolge geändert wird.
Test: ideone
quelle
c;t(char*p){for(;c=*p;)*p++=c>64&c<91|c>96&c<123?(c^31)-4:c;}
R
6961 BytesVielen Dank an @ Giuseppe für das Abschneiden einiger zusätzlicher Bytes:
Vorherige Version:
Dies ist eine anonyme Funktion. Verwendungszweck:
quelle
intToUtf8(c(122:97,90:65))
anstelle derraw
Konvertierungen, und Sie können die auch loswerdencat
. Ich mache es mir zur Gewohnheit, Golf zu spielen. Antworten von mehr als einem Jahr ...Im Ernst, 31 Bytes (nicht konkurrierend)
Hex Dump:
Probieren Sie es online
Expl .:
Ich habe gerade festgestellt, dass die Spezifikation kein zusätzliches Leerzeichen enthält, aber es gibt keine Möglichkeit, nachgestellte Zeilenumbrüche in der seriösen Ausgabe zu unterdrücken, sodass es keine seriöse Lösung gibt.
quelle
ESACREPPUesacrewol
das?Ruby, 40 Bytes
Neue Lösung: Stola das bisschen Flipping Magic von einigen der anderen Beiträge hier:
Ruby,
5546 BytesDank @manatwork 9 Bytes weniger
Testlauf:
quelle
Jolf, 15 Bytes
Testen Sie die Suite oder probieren Sie sie mit Ihren eigenen Eingaben aus
quelle
𝔼𝕊𝕄𝕚𝕟 2, 12 Zeichen / 26 Byte (nicht wettbewerbsfähig)
Try it here (Firefox only).
Transliterate-Funktion hinzugefügt, nachdem die Herausforderung veröffentlicht wurde.
Erläuterung
quelle
CJam, 21 Bytes
Noch keine optimale Lösung ... Probieren Sie es online aus
Es ist schwer zu erklären, ohne Dinge zu gruppieren, daher hier eine allgemeine Erklärung: Erhält Eingaben, drückt Großbuchstaben zweimal und Kleinbuchstaben zweimal, dreht Dinge, kombiniert Groß- und Kleinbuchstaben, kehrt eine um und verwendet Transliteration (ähnlich der Retina-Antwort).
quelle
C (Funktion), 50
Dies baut auf allen drei vorherigen C-Antworten auf. Wir danken @Ruud, @Danwakeem und @ edc65.
Diese Funktion ändert ein vorhandenes Zeichen-Array.
Ich verstehe, dass Funktionseinträge zulässig sind, sofern sie in der Frage nicht ausdrücklich verboten sind.
Probieren Sie es online aus.
quelle
PostgreSQL,
118125 BytesSqlFiddleDemo
Ausgabe:
Eingang:
SELECT text'...'s
BEARBEITEN:
Eingabe als Tabelle:
SqlFiddleDemo
Ausgabe:
quelle
Python 3,
195169168166 BytesDanke an @TrangOul für -2 Bytes!
Wie habe ich nicht gesehen, dass ich das schon mal hätte spielen können?
(sorta) ungolfed:
Probieren Sie es auf Ideone!
quelle
[]
ausjoin
.generator object <genexpr> at...
, aber ich werde es testenstr
Werten] kann anjoin()
function übergeben werden.Python, 61 Bytes
Eine anonyme Funktion. Bei Buchstaben erfolgt die Umkehrung der Bitdarstellung durch Addition von 4 und anschließendes Umdrehen der letzten fünf Bits, ähnlich wie bei der Javascript-Antwort von ETHproductions .
quelle
Haskell,
119104 BytesDank @nimi 15 Byte gespeichert.
Verwendungszweck:
Erläuterung
Ich bin neu in Haskell ... in der funktionalen Programmierung ... und in der Site, und ich weiß, dass es (viele) bessere Antworten auf diese Frage gibt, aber ich kann es nicht lassen.
quelle
let
. Beginnen Sie direkt mitc=fromEnum
. Verwenden Sie(155-c x)
und(219-c x)
. c)True
kann ersetzt werden durch1<2
. - Der Code kann für mich nicht mit dem Fehler "Ambigious Type Variable" für Funktionenc
unds
(ghci 7.10.2) geladen werden, aber dies kann einfach mitf[]=""
statt behoben werdenf[]=[]
.Perl 6 , 28 Bytes
Verwendungszweck:
quelle
Warning: Use of "ord" without parentheses is ambiguous at (eval 8)[/System/Library/Perl/5.18/perl5db.pl:732] line 2.
Ich weiß nichts über Perl, mache ich also etwas falsch? Wie würde ich das machen?m: my &swap = {S:g/\w/{chr $/.ord+4+^31}/}; say swap ('a'..'z').join
Java, 136 Bytes
Anwendungsbeispiel:
In Bezug auf die Bytegröße wahrscheinlich die am schlechtesten verwendete Sprache.
quelle
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 Bytes )90-(c-65)
in-c+65+90
und122-(c-97)
in setzen-c+97+122
, wodurch jeweils ein Byte gespeichert wird.Unix-Shell + tr + printf, 35 Bytes
Hier sind Sie, eine kanonische Antwort in tr. Ich dachte , wie könnte eine Frage ohne Antwort kanonischer das Alphabet gehen transkribieren zu tr ansliterate das Alphabet?
tr alleine macht noch nicht mal ein "Hallo Welt!" und als solche ist es keine Programmiersprache, deshalb habe
ich die Antwort als nicht konkurrierend markiert[1] .[1]: Bearbeiten: Tatsächlich ist die Unix-Shell die Sprache und tr die Standardbibliothek . Vielen Dank an Downgoat und Digital Trauma, die mir geholfen haben, dies herauszufinden.
quelle
tr
in Coreutils) als Standardbibliothek zu beanspruchen . Siehe unzählige meiner Antworten ;-)tr: range-endpoints of 'Z-A' are in reverse collating sequence order
. Ich denke, Sie müssen etwas tuntr A-Za-z $(printf %s {Z..A} {z..a})
(und durch$( )
Backticks ersetzen )printf
- immerhin sein durch Posix angegeben . Es ist auch eine eingebaute Bash, die heutzutage ziemlich allgegenwärtig ist. Unabhängig davon, dass auf jedem System etwas vorinstalliert ist, ist keine Voraussetzung für Code-Golf - nicht jeder hat CJam auf seinem System ;-)}
und{
wird benötigt - sonst wird die Erweiterung zu etwas ähnlichemZz Zy Zx ... Za Yz ... Aa
05AB1E , 5 Bytes [nicht konkurrierend]
Verwendet den CP-1252- Zeichensatz.
Probieren Sie es online!
Erläuterung:
quelle
MATL , 21
28BytesVerwendet Version 6.0.0 , die älter als diese Herausforderung ist. Der Code läuft in Octave.
Beispiel
Erläuterung
Alter Ansatz, 28 Bytes
quelle
MATLAB, 61 Bytes
Ich habe versucht
f=@ismember
, den Bereicha=65:90
variabel zu machen und32+a
im zweitenismember
Aufruf zu tun. All dies verkürzte den Code, würde aber zu einem Programm führen und somit sowohldisp
und erforderninput
.Das gibt:
quelle
Brachylog , 66 Bytes
Der Mangel an eingebauten Funktionen tut hier wirklich weh, daher müssen wir auf gute alte ASCII-Coderechnungen zurückgreifen.
Das Prädikat
brachylog_main
erwartet eine Zeichenkette als Eingabe und keine Ausgabe, zbrachylog_main(`Hello, World!`,_).
Erläuterung
quelle
Perl 6,
4039 BytesDa alle anderen anonymen Funktionen ausführen:
(Danke @ b2gills für den Tipp)
Verwendet dasselbe Bit, das Voodoo umdreht wie einige der anderen Posts. Ich war mir nicht sicher, ob ich die Variablen- / Funktionsdeklaration in die Byteanzahl aufnehmen sollte, also tat ich es nur für den Fall. Ohne es ist diese Lösung nur 34 Bytes.
Verwendungszweck:
quelle
*.trans(…)
, um es kürzer zu machen.Python 3,
164159 Bytesquelle