/* Configuration */
var QUESTION_ID = 59464; // 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>
Réponses:
Script Vim,
2221 octetsExplication:
La première commande correspond
Q
à:vEU
rendre le mot en majusculeW
aller au mot suivantvEu
faire le mot en minusculeW
aller au mot suivantQ
répéter le mappage récursifet
|norm Q
exécute le mappageUtilisation du programme
Voici comment faire lire Vim depuis stdin:
Cela ouvrira Vim affichant ceci:
la source
GNU sed, 28
Le score inclut +2 pour
-rz
passé à GNU sed.Sortie test
la source
Perl, 26 octets
Code de 25 octets + ligne de commande de 1 octet
Merci à ThisSuitIsBlackNot pour avoir corrigé quelques bugs!
Usage:
la source
Pyth, 23
Essayez-le en ligne ou exécutez la suite de tests
Alterne entre pyth
lower
etupper
fonctions, qui sontr...0
our...1
. Cela affectera probablement les caractères unicode, en attendant la clarification de l'OP pour changer.J'ai l'impression que quelque chose doit être jouable au golf. En particulier le XOR pour changer le commutateur sur lequel
upper
/ quilower
doit être utilisé.la source
A\nB
doit s'imprimerA\nb
.A new word is formed when there is a nonzero amount of whitespace after a non-whitespace character.
La sortie pourA\nB
estA\NB
. Mais il semble que votre réponse CJAM soit exacte.Perl, 87 octets
Après avoir baisé avec les expressions régulières et
map
pendant un certain temps, je n'ai pas pu trouver de solution élégante, voici donc le résultat:la source
lc(<>)
, pourrait l'êtrelc<>
et l'utilisation d'un modificateur de déclaration pour votrewhile
permet également d'ignorer les parenthèses, par exemple.print$i++while$i<10
par rapport àwhile($i<10){print$i++}
. Il y a une page utile qui m'a beaucoup aidé. Astuce pour jouer au golf à PerlRubis, 56 octets
la source
JavaScript ES6,
7471 octets.toUpperCase()
et.toLowerCase()
abattre absolument le nombre d'octets (ajoute 32 octets 0.o). La plupart des solutions de contournement se retrouvent cependant avec plus d'octetsla source
Groovy,
108125120Pas aussi propre que je l'espérais, ce qui semble être un thème avec mes réponses Groovy.
la source
Lua, 96 octets
la source
Python 3,
10395 octetsla source
[b.upper(),b.lower()][a%2]
pour économiser 4 octets (en supposant que je compte correctement sur mobile).STATA, 252 octets
Attend l'entrée en tant que fichier csv (une colonne) appelé ab
Explication:
Lire les données (le nom de variable par défaut est v1, raccourcissable en v). Faites une nouvelle variable b égale au premier mot (jeton séparé par un espace) de v pour chaque ligne. Pour chaque ligne, alors que le mot suivant n'est pas vide (ne se produit que s'il n'y a plus de caractères sur cette ligne), remplacez le mot en v par la version en majuscule ou en minuscule de ce mot dans la ligne actuelle, selon le nombre (mod 2 ) des mots ont déjà été trouvés. Obtenez ensuite le mot suivant et répétez. Imprimez la ligne entière lorsque vous avez terminé.
la source
Delphi, 290 octets
Pas vraiment une bonne langue pour jouer au golf avec ...
la source
Lua, 88 octets
la source
CJam, 28 octets
J'envisage actuellement les 33 premiers caractères ASCII / Unicode (et seulement ceux-ci). J'attends des éclaircissements pour savoir si c'est valide ou non.
Essayez-le en ligne dans l' interpréteur CJam .
la source
Pyth,
1722 octetsEssayez-le ici
la source
C #,
10410099 octetsC'est 79 octets avec
la source