/* Configuration */
var QUESTION_ID = 97049; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 53406; // 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 "https://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 "https://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,]*[^\s,]),.*?(\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,
});
});
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;
if (/<a/.test(lang)) lang = jQuery(lang).text();
languages[lang] = languages[lang] || {lang: a.language, 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 > b.lang) return 1;
if (a.lang < b.lang) 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="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>
Réponses:
05AB1E , 16 octets
Utilise l' encodage CP-1252 .
Essayez-le en ligne!
Explication
la source
[0 ... 23]
ou à la[0, 24)
place de[0 ... 24]
ou[0, 24]
?Rubis, 56 octets
Programme complet. Je ne pense pas qu'une fonction / réponse lambda sera plus courte que celle-ci pour cette langue.
Dangit, sigma
ς
. C'est pourquoi nous ne pouvons pas avoir de belles choses. Et vous aussi, (caractère irréprochable qui sert d'espace réservé pour "majuscule"ς
)la source
JavaScript (ES6),
898381 octetsSi un tableau de caractères est acceptable, alors pour
828078 octets:Edit: enregistré un tas d'octets grâce à @ETHproductions.
la source
String.fromCharCode(...array)
est à nouveau plus courte:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i+(i>16)+913+32*!!a.length))
String.fromCharCode
étages, vous pouvez économiser encore deux octets comme ceci:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*!!a.length))
String.fromCharCode(...)
mais j'aime cettei*1.06
astuce! Malheureusement, les compréhensions sont plus longues cette fois pour autant que je sache.(...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])
(82).!!
, car il n'y aura que zéro ou un argument.Haskell,
114108 octetsMerci à @xnor pour avoir économisé 6 octets
Cela pourrait gagner dans la catégorie des importations les plus longues si rien d'autre…
la source
q[a,b]=[a..b]
à utiliser 4 fois.getArgs>>=putStr.f
est plus court.CJam , 16 octets
Essayez-le en ligne!
la source
Pyke,
552120 octetsEssayez-le ici!
la source
En fait , 62 octets
Essayez-le en ligne!
Étant donné qu'une partie de l'alphabet grec majuscule n'est pas présent dans CP437, cette solution est codée en UTF-8 et notée en conséquence. Voici un hexdump (réversible avec
xxd -r
):Explication:
la source
Python 3,
807776 octetsAncienne version:
Ancienne version:
la source
[a,a.lower()][len(sys.argv)-1]
parce que les commentaires indiquent qu'il n'y aura jamais qu'un seul argument.[a.lower(),a][-len(sys.argv)]
.R,
1049992 octetsJouer sur la deuxième version que j'avais précédemment. Fonctionne de la même manière que la version précédente.
Merci à @JDL d'avoir rasé 7 octets!
Anciennes versions à 104 octets:
J'ai deux solutions différentes avec le même nombre d'octets:
Ou:
Explications:
Usage:
Pour certaines raisons, il ne fonctionne pas sur R-Fiddle (il change
"
de'
par défaut qui rend le code renvoie une erreur) mais vous pouvez l' essayer sur Ideone .la source
+'if'(missing(x),0,32)
par+32*!missing(x)
?Japt ,
2119 octetsTestez-le (pas d'entrée)
Testez-le (entrée de chaîne vide)
Explication
la source
Scala, 82 octets
Non golfé:
Malheureusement,
(('Α'to'Ρ')++('Σ'to'Ω'))
est unVector[Char]
, qui serait affiché sous la formeVector('Α', 'Β', ...
, il doit donc être converti en une chaîne avecmkString
. L'argument tomap
est appelé&
pour économiser les espaces entre&else
,else&
et& toLower
.la source
Gelée , 21 octets
Un programme complet
TryItOnline! - notez qu'une fois exécuté avec un argument, un rafraîchissement sera nécessaire pour fonctionner sans argument.
Comment?
la source
PowerShell v2 +, 68 octets
ASCII uniquement, mais sorties en UTF-16. Construit un
char
tableau de caractères appropriés, le-join
s ensemble dans une chaîne, le stocke dans$a
. Ensuite, utilise!$args.count
comme index dans le tuple, pour afficher soit$a
si aucun argument n'est présent, soit$a.ToLower()
s'il y a au moins un argument.la source
PHP, 84 octets
Version en ligne
PHP, 87 octets
la source
$argc>1
est 8 octets plus court queisset($argv[1])
et n'a pas besoin d'un blanc.APL (Dyalog Extended) , 26 octets
La manière normale de passer plusieurs arguments aux programmes APL consiste à utiliser des listes. Donc, ce programme invite à une telle liste, qui peut avoir 0 ou 1 arguments.
Essayez-le en ligne!
⎕
invite pour la liste des arguments≢
compter le nombre d'arguments (0 ou 1)~
nier cela (1 ou 0)'Ω'×
"multipliez" Omega par cela (1 conserve les majuscules, 0 fois les minuscules)⍳
Tous les caractères deΑ
-Ω
ouα
-ω
respectivement'ς'~⍨
supprimer les sigmas finaux minuscules et "majuscules"la source
Python 2, 108 octets
Terriblement golfé, peut-être :(
Et non, je ne peux pas utiliser
A.lower()
.Merci à 13285 (alexwlchan) pour -11 octets.
la source
A,a
et en utilisant simplement ces chaînes directement dans leprint
.Mathematica, 91 octets
Scénario. Prend simplement la plage de caractères de
Α
àΩ
, supprime U + 03A2 /ς
, convertit en minuscules ou non et imprime.la source
Perl, 39 + 3 (
-C2
indicateur) =4442 octetsla source
JavaScript, 95 octets
95 octets, mais seulement 71 caractères. Compteur d'octets . Utilisation de la manière de @Neil pour déterminer si des arguments sont passés.
la source
Java 7, 176 octets
Java 8, 173 octets
la source
Python 3, 80 octets
la source
C #, 174 octets
Mise en œuvre paresseuse, peut probablement jouer au golf beaucoup
la source
PHP, 79 octets
génère des entités html unicode et les décode. Courez avec
-r
.la source
Pip ,
2120 octetsC'est une journée mémorable. Pip a
attachéJelly battu! 11 Et perdu contre deux autres golflangs, mais peu importe.
Essayez-le en ligne!
Explication
la source
tcl, 73
démo
la source
Rétine , 55 octets
Essayez-le en ligne
la source
Braingolf , 24 octets
Essayez-le en ligne!
Explication:
la source
PowerShell , 81 octets
Essayez-le en ligne!
la source
Script Groovy,
5451 octetsÉditer
Switched from
913..937
andit==930?:
to(913..937)-930
la source
Perl under Windows -- console has no Unicode support -- (42 bytes, including spaces)
This is not my solution, I am just merely adapting the Perl solution of Denis Ibaev above, to Windows console Perl.
The console page code must be Greek of course:
NOTE: Just a small idea. On this page I can see that some of the answers use CHARACTERS that seem to been Unicode above 255. Therefore those characters take at least 2 bytes to code (perhaps 4 if one is using a console using 32bits Unicode chars?). Would not it be better if the contest measure was the CHARACTER unit (being Unicode or ASCII or EBCDIC ou whatever) rather than just BYTES? Would not it be simpler and more unifying (wonder if this adjectif exists in English, "unificateur" in French)?
Previous code in error: Does not print lowercase omega.
Corrected code (70 chars) :
I know we are not supposed to print the 'end-of-word' sigma form ('ς') but as it is a mispelling error in ancient Greek to use regular sigma ('σ') at the end of a lowercase word, I choose to print it, as the tittle of this puzzle is "Print the Greek alphabet" and that this character is part of it...
la source