/* 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!
?Réponses:
Pyth, 19 octets
Essayez-le en ligne: démonstration ou suite de tests
Explication
la source
Python 2.7,
1009896 octetsla source
TeaScript , 24 octets
2628TeaScript est JavaScript pour le golf
Plutôt court
Essayez-le en ligne
Explication
la source
Rubis,
1378782766755 octetsNon golfé, mais vous pouvez voir le motif.
Edit: golfé jusqu'à un seul regex.
Edit 2: avait beaucoup d'espaces supplémentaires.
Edit 3: Merci à manatwork pour jouer au golf 12 octets!
la source
$><<gets.gsub(/[a-z0-9]/i){[*" 0Aa"[$&.ord/32]..$&]*""}
Python 2,
145140133103102 OctetsUne fonction anonyme pas si élégante utilisant la compréhension de liste. J'ai l'impression que la logique devrait être beaucoup plus courte, je vais essayer de comprendre quelque chose.
Doit être donné un nom à utiliser, c'est-à-dire
f=...
la source
Haskell,
95918660 octetsExemple d'utilisation:
f "pi=3.14159"
->"abcdefghijklmnopabcdefghi=0123.0101234010123450123456789"
Comment cela fonctionne: copiez chaque caractère c dans la chaîne d'entrée à moins que c ne soit entre
A
/Z
,a
/z
ou0
/9
et si c'est le cas, prenez la liste des[<first char in pair> ... <c>]
.Edit: @Zgarb a enregistré de nombreux octets. Merci!
la source
c#_=[c]
et ignorert
complètement.s
c'est aussi superflu. Merci beaucoup!JavaScript (ES6),
143138 octetsUtilise des comparaisons de chaînes pour tester les caractères à utiliser.
Démo en ligne. Testé dans Firefox et Chrome.
Edit: enregistré 5 octets en remplaçant
a='0123456789abcdefghijklmnopqrstuvwxyz'
parla source
PHP, 146 octets
Golfé
Révision 1: mettez les plages ord directement dans foreach. incrémenté plage max ord et changé
$d<=$m
en$d<$m
. utiliserfor
pour itérer les caractères au lieu deforeach
etstr_split
. Tout supprimé{}
en déplaçant le code dansfor
Non golfé
Explication: fractionner la chaîne en tableau. Si la valeur ascii tombe dans une plage (pour az, AZ, 0-9), incrémentez un compteur du min de la plage à la valeur ascii du caractère, en ajoutant chaque valeur jusqu'à ce que vous atteigniez la valeur ascii du caractère.
Je suis passé
&$var
donc la sortie se fait par référence plutôt que parreturn
la source
foreach
.range()
? pastebin.com/k2tqFEgD$z
et apporté d'autres modifications.range()
serait probablement mieux. Je pourrais essayer quelque chose avec la gamme plus tard.range
, j'ai eufunction 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;}}
, qui était 166.range()
est moins avantageuse. Mais cela 166 est trop long quand même: le $ o pour le littéral du tableau est de retour, il y a des espaces supplémentaires autour desas
mots-clés,join()
est un alias pourimplode()
. (?. Vérifié le code pastebin je montre une autre plus tôt lié possibilité de stocker les points d' extrémité de gamme) En ce qui concerne votre solution 146 caractères, vous pouvez déplacer l'affectation à $ c à l' intérieur de l'ord()
appel:$d=ord($c=$n[$r])
.Python, 143 octets
Essayez-le en ligne
la source
Perl 6, 101 octets
Voici un premier passage:
119
Utiliser
.trans
sur$_
pour supprimeris copy
.106
Agissez
@*ARGS
directement au lieu de définir unMAIN
sous - marin.(sinon identique à l'exemple précédent)
101
la source
Scala,
11191 octetsla source
pi=3.14159
. La solution pourrait-elle êtreval 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)
pour un énorme 128 caractères?Julia,
102989084 octetsCela crée une fonction sans nom qui accepte une chaîne et renvoie une chaîne.
Non golfé:
la source
PowerShell, 155 octets
Techniquement, une ligne, et PowerShell est tout à propos de ceux-ci ;-)
Fractionne l'entrée, redirige cela en
ForEach-Object
boucle, active la valeur entière du caractère cast, puis génère une nouvellechar[]
plage appropriée. Notez que nous devons dépenser des octets pour définir une variable temporaire$b
car l'acte de transtyper l'entrée$_
dans l'instruction switch signifie que nous ne pouvons pas simplement continuer à utiliser$_
ou nous obtiendrons une sortie géniale.EDIT - Je dois souligner que cela entraînera des erreurs puisque le premier objet introduit
%{...}
est un objet nul. Étant donné que STDERR est ignoré par défaut , cela ne devrait pas être un problème. Si c'est un problème, changez le premier bit($args-split''-ne''|...
pour éliminer l'objet nul.la source
JavaScript (ES6),
340258273271 octetsla source
("")
etf=i=""
dans la boucle for. Vous pourrez peut-être enregistrer quelques octets supplémentaires.C (269 octets)
(saut de ligne ajouté pour plus de clarté)
Non golfé
la source
Perl 5 ,
6661(51 octets + 1) 52La combinaison des expressions rationnelles avec des opérateurs conditionnels a bien fonctionné dans ce cas.
Avec une jointureUtilisation de la carte pour combiner les plages dans un tableau.Tester
Explication
la source
JavaScript (ES7), 125 octets
Il y avait déjà deux réponses JS se concentrant sur l'encodage des chaînes, j'ai donc décidé d'opter pour une approche plus algorithmique en utilisant
String.fromCharCode()
:Un avantage de l'utilisation de cette méthode est qu'elle prend n'importe quelle quantité de codes de caractères, donc
join
la liste n'est pas nécessaire. Cela s'est avéré plus court que toute autre technique, donc je suis satisfait du résultat.la source
MUMPS, 131 octets
J'ai réussi à enregistrer quelques bons octets ici grâce à la portée dynamique de MUMPS . Voici une version non équivalente à peu près équivalente, que j'aimerais sûrement souligner la syntaxe, si seulement le support du module MUMPS Prettify était disponible .
la source
Perl 6,
7877 octetsla source
'a'..'z'
et'A'..'Z'
, j'aurais dû essayer plus fort.<!-- language-all: lang-perl6 -->
juste après## Perl 6
pour qu'il soit correctement mis en évidence. (Le changement est déjà en attente sur cette réponse){[~](0..$/)}
vers celui{[~] 0..$/}
qui permettra d'économiser un octet.Mathematica, 102 octets
Tant pis...
la source
CJam,
3231 octetsEssayez-le en ligne dans l' interpréteur CJam .
Comment ça marche
la source
Python 2,
135117 octetsla source
PHP - 291 octets
Passez la chaîne à
GET["s"]
.la source
C #,
251201184157154 octetsmodifier: Strike! Plus court que PowerShell;)
la source
string[]i
?