/* Configuration */
var QUESTION_ID = 61940; // Obtain this from the url
// It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 43444; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
return "http://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "http://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
answers.forEach(function(a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
else console.log(body);
});
valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;
var answer = jQuery("#answer-template").html();
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#answers").append(answer);
var lang = a.language;
lang = jQuery('<a>'+lang+'</a>').text();
languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, user: a.user, size: a.size, link: a.link};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.lang_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1;
if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) return -1;
return 0;
});
for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
.replace("{{LINK}}", lang.link);
language = jQuery(language);
jQuery("#languages").append(language);
}
}
body { text-align: left !important}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 290px;
float: left;
}
table thead {
font-weight: bold;
}
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="language-list">
<h2>Shortest Solution 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>
<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>
<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>
Hello, World!
?Antworten:
Pyth, 19 Bytes
Probieren Sie es online aus: Demo oder Test Suite
Erläuterung
quelle
Python 2.7,
1009896 Bytesquelle
TeaScript , 24 Bytes
2628TeaScript ist JavaScript zum Golfen
Ziemlich kurz
Probieren Sie es online aus
Erläuterung
quelle
Ruby,
1378782766755 BytesUngolfed, aber Sie können das Muster sehen.
Bearbeiten: Golf auf nur eine Regex.
Edit 2: hatte viele zusätzliche Leerzeichen.
Edit 3: Dank an Manatwork für das Golfen von 12 Bytes!
quelle
$><<gets.gsub(/[a-z0-9]/i){[*" 0Aa"[$&.ord/32]..$&]*""}
Python 2,
145140133103102 BytesEine nicht ganz so schlanke anonyme Funktion mit Listenverständnis. Ich denke, die Logik sollte viel kürzer sein, ich werde versuchen, etwas herauszufinden.
Sollte ein Name gegeben werden, der verwendet werden soll, dh
f=...
quelle
Haskell,
95918660 BytesAnwendungsbeispiel:
f "pi=3.14159"
->"abcdefghijklmnopabcdefghi=0123.0101234010123450123456789"
So funktioniert es: Kopieren Sie jedes Zeichen c in die Eingabezeichenfolge, es sei denn, c befindet sich zwischen
A
/Z
,a
/z
oder0
/,9
und nehmen Sie in diesem Fall die Liste von[<first char in pair> ... <c>]
.Edit: @Zgarb hat viele, viele Bytes gespeichert. Vielen Dank!
quelle
c#_=[c]
und überspringent
.s
ist das ja auch überflüssig. Vielen Dank!JavaScript (ES6),
143138 BytesVerwendet Zeichenfolgenvergleiche, um zu testen, welche Zeichen verwendet werden sollen.
Online-Demo. Getestet in Firefox und Chrome.
Edit: Saved 5 Bytes durch den Austausch
a='0123456789abcdefghijklmnopqrstuvwxyz'
mitquelle
PHP, 146 Bytes
Golf gespielt
Revision 1: Ordnungsbereiche direkt in foreach stellen. inkrementierte ord Range Maxes und geändert
$d<=$m
zu$d<$m
. Verwenden Siefor
zum Iterieren von Zeichen anstelle vonforeach
undstr_split
. Alles{}
wurde entfernt, indem Code in verschoben wurdefor
Ungolfed
Erläuterung: Zeichenfolge in Array aufteilen. Wenn der ASCII-Wert in einen Bereich fällt (für az, AZ, 0-9), erhöhen Sie einen Zähler von der Minute des Bereichs bis zum ASCII-Wert des Zeichens, und fügen Sie jeden Wert hinzu, bis Sie den ASCII-Wert des Zeichens erreichen.
Ich habe übergeben,
&$var
damit die Ausgabe als Referenz und nicht alsreturn
quelle
foreach
.range()
? pastebin.com/k2tqFEgD$z
und einige andere Änderungen vorgenommen.range()
wäre wahrscheinlich besser. Ich könnte später etwas mit Reichweite versuchen.range
bekam ichfunction f($n,&$l){$o=['a'=>'z','A'=>'Z','0'=>'9'];foreach(str_split($n) as $c){$b=0;foreach($o as $m=>$x)!($c>$m&&$c<=$x)?:$b=$l.=implode(range($m,$c));$b?:$l.=$c;}}
, das war 166.range()
weniger vorteilhaft. Aber das 166 ist trotzdem zu lang: Das $ o für das Array-Literal ist zurück, es gibt zusätzliche Leerzeichen umas
Schlüsselwörter,join()
ist ein Alias fürimplode()
. (?. Auf den Pastebin Code , den ich früher verknüpft zeigt eine andere Möglichkeit , die Reichweite Endpunkte zu speichern) In Bezug auf Ihre 146 Zeichen - Lösung können Sie die Zuordnung zu $ c innerhalb des bewegenord()
Anruf:$d=ord($c=$n[$r])
.Python, 143 Bytes
Probieren Sie es online aus
quelle
Perl 6, 101 Bytes
Hier ist ein erster Durchgang:
119
Mit
.trans
on$_
entfernenis copy
.106
Handeln Sie
@*ARGS
direkt, anstatt einMAIN
Sub zu definieren.(ansonsten identisch mit vorherigem Beispiel)
101
quelle
Scala,
11191 Bytesquelle
pi=3.14159
. Könnte die Lösungval f=(_:String).flatMap(x:String=>if(x.isDigit)('0'to x)else if(x.isUpper)('A'to x)else if(x.isLower)('a'to x)else x.toString)
für satte 128 Zeichen sein?Julia,
102989084 BytesDadurch wird eine unbenannte Funktion erstellt, die eine Zeichenfolge akzeptiert und eine Zeichenfolge zurückgibt.
Ungolfed:
quelle
PowerShell, 155 Bytes
Technisch gesehen ein Einzeiler, und PowerShell dreht sich alles um diese ;-)
Teilt die Eingabe, leitet sie in eine
ForEach-Object
Schleife um, schaltet den ganzzahligen Wert des Umsetzungszeichens ein und generiert dann einen neuenchar[]
der entsprechenden Bereiche. Beachten Sie, dass wir zum Festlegen einer temporären Variablen Bytes benötigen,$b
da das Umsetzen der Eingabe$_
in der switch-Anweisung bedeutet, dass wir nicht einfach weiterverwenden können, sondern$_
eine funky Ausgabe erhalten.BEARBEITEN - Ich möchte darauf hinweisen, dass dies Fehler auslöst, da das erste Objekt, in das eingespeist
%{...}
wird, ein Nullobjekt ist. Da STDERR standardmäßig ignoriert wird , sollte dies kein Problem sein. Wenn es ein Problem ist, ändern Sie das erste Bit($args-split''-ne''|...
, um das Nullobjekt zu entfernen.quelle
JavaScript (ES6),
340258273271 Bytequelle
("")
undf=i=""
in der for-Schleife eine Vorlagenzeichenfolge `` für split verwenden . Möglicherweise können Sie einige weitere Bytes speichern.C (269 Bytes)
(Zeilenumbruch zur Verdeutlichung hinzugefügt)
Ungolfed
quelle
Perl 5 ,
6661(51 Bytes + 1) 52Das Kombinieren von regulären Ausdrücken mit bedingten Operatoren hat in diesem Fall gut funktioniert.
Mit einem JoinMit map kombinieren Sie die Bereiche zu einem Array.Prüfung
Erläuterung
quelle
JavaScript (ES7), 125 Byte
Es gab bereits zwei JS-Antworten, die sich auf das Codieren der Zeichenfolgen konzentrierten. Daher entschied ich mich für einen algorithmischeren Ansatz
String.fromCharCode()
:Ein Vorteil dieser Methode besteht darin, dass eine beliebige Anzahl von Zeichencodes
join
erforderlich ist , sodass die Liste nicht erforderlich ist. Dies fiel kürzer aus als jede andere Technik, daher bin ich mit dem Ergebnis zufrieden.quelle
MUMPS, 131 Bytes
Dank des dynamischen Scoping von MUMPS konnte ich hier einige Bytes einsparen . Hier ist eine grob äquivalente ungolfed-Version, die ich gerne syntaktisch hervorheben würde, wenn nur das MUMPS Prettify-Modul unterstützt würde .
quelle
Perl 6,
7877 Bytesquelle
'a'..'z'
und verkürzt'A'..'Z'
werden konnte, ich hätte es härter versuchen sollen.<!-- language-all: lang-perl6 -->
kurz danach,## Perl 6
damit es richtig hervorgehoben wird. (Änderung steht für diese Antwort bereits aus){[~](0..$/)}
auf{[~] 0..$/}
welches Byte ein Byte gespeichert werden soll.Mathematica, 102 Bytes
Naja...
quelle
CJam,
3231 BytesProbieren Sie es online im CJam-Interpreter aus .
Wie es funktioniert
quelle
Python 2,
135 -117 Bytesquelle
PHP - 291 Bytes
Übergeben Sie die Zeichenfolge an
GET["s"]
.quelle
C #,
251201184157154 BytesBearbeiten: Streik! Kürzer als PowerShell;)
quelle
string[]i
?