/* 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>
Respostas:
05AB1E , 16 bytes
Usa CP-1252 codificação .
Experimente online!
Explicação
fonte
[0 ... 23]
ou em[0, 24)
vez de[0 ... 24]
ou[0, 24]
?Ruby, 56 bytes
Programa completo. Eu não acho que uma resposta de função / lambda seja mais curta que essa para esse idioma.
Dangit, sigma
ς
. É por isso que não podemos ter coisas boas. E você também (caractere irrecuperável que serve como espaço reservado para "maiúsculas"ς
)fonte
JavaScript (ES6),
898381 bytesSe uma matriz de caracteres for aceitável, para
828078 bytes:Editar: salvou um monte de bytes graças a @ETHproductions.
fonte
String.fromCharCode(...array)
é novamente mais curto:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i+(i>16)+913+32*!!a.length))
String.fromCharCode
pisos, você pode salvar outros dois bytes assim:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*!!a.length))
String.fromCharCode(...)
mas gosto dessei*1.06
truque! Infelizmente, as compreensões são um byte mais longo desta vez, pelo que sei.(...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])
(82).!!
, pois haverá apenas zero ou um argumento.Haskell,
114108 bytesObrigado a @xnor por salvar 6 bytes
Isso pode ganhar na categoria de importações mais longas, se nada mais…
fonte
q[a,b]=[a..b]
uso 4 vezes.getArgs>>=putStr.f
é mais curto.CJam , 16 bytes
Experimente online!
fonte
Pyke,
552120 bytesExperimente aqui!
fonte
Na verdade , 62 bytes
Experimente online!
Como parte do alfabeto grego maiúsculo não está presente no CP437, essa solução é codificada em UTF-8 e pontuada de acordo. Aqui está um hexdump (reversível com
xxd -r
):Explicação:
fonte
Python 3,
807776 bytesVersão antiga:
Versão antiga:
fonte
[a,a.lower()][len(sys.argv)-1]
porque os comentários afirmam que apenas haverá um argumento.[a.lower(),a][-len(sys.argv)]
.R,
1049992 bytesJogando golfe na segunda versão que eu tinha anteriormente. Funciona da mesma maneira que a versão anterior.
Graças a @JDL por cortar 7 bytes!
Versões antigas em 104 bytes:
Eu tenho duas soluções diferentes com a mesma contagem de bytes:
Ou:
Explicações:
Uso:
Por algumas razões, ele não funciona no R-Fiddle (muda
"
para o'
padrão, o que faz com que o código gere um erro), mas você pode testá-lo no Ideone .fonte
+'if'(missing(x),0,32)
por+32*!missing(x)
?Japonês ,
2119 bytesTeste (sem entrada)
Teste (entrada de sequência vazia)
Explicação
fonte
Scala, 82 bytes
Ungolfed:
Infelizmente,
(('Α'to'Ρ')++('Σ'to'Ω'))
é aVector[Char]
, que seria impresso comoVector('Α', 'Β', ...
, portanto, deve ser convertido em uma sequência commkString
. O argumento paramap
é chamado&
para salvar espaços entre&else
,else&
e& toLower
.fonte
Gelatina , 21 bytes
Um programa completo
TryItOnline! - note que, uma vez executado com um argumento, será necessária uma atualização para executar sem argumento.
Como?
fonte
PowerShell v2 +, 68 bytes
Somente ASCII, mas gera em UTF-16. Constrói uma
char
matriz dos caracteres apropriados,-join
agrupa-os em uma sequência e os armazena$a
. Em seguida, usa!$args.count
como um índice na tupla, para gerar saída$a
se nenhum argumento estiver presente ou$a.ToLower()
se houver pelo menos um argumento.fonte
PHP, 84 bytes
Versão Online
PHP, 87 bytes
fonte
$argc>1
é 8 bytes menor queisset($argv[1])
e não precisa de um espaço em branco.APL (Dyalog Extended) , 26 bytes
A maneira normal de passar vários argumentos para programas de APL é através de uma lista. Portanto, este programa solicita essa lista, que pode ter 0 ou 1 argumentos.
Experimente online!
⎕
prompt para lista de argumentos≢
calcula o número de argumentos (0 ou 1)~
negar que (1 ou 0)'Ω'×
"multiplique" o Omega por isso (1 mantém maiúsculas, 0 dobras para minúsculas)⍳
Todos os caracteres deΑ
-Ω
ouα
-ω
respectivamente'ς'~⍨
remova sigmas finais minúsculos e "maiúsculos"fonte
Python 2, 108 bytes
Terrivelmente golfe, talvez :(
E não, eu não posso usar
A.lower()
.Obrigado a 13285 (alexwlchan) por -11 bytes.
fonte
A,a
e usando essas cadeias diretamente noprint
.Mathematica, 91 bytes
Roteiro. Apenas leva o intervalo de caracteres a partir
Α
deΩ
, remove U + 03A2 /ς
, sejam convertidos para minúsculas ou não, e impressões.fonte
Perl, 39 + 3 (
-C2
sinalizador) =4442 bytesfonte
JavaScript, 95 bytes
95 bytes, mas apenas 71 caracteres. Contador de bytes . Usando a maneira de @Neil para determinar se os argumentos são passados.
fonte
Java 7, 176 bytes
Java 8, 173 bytes
fonte
Python 3, 80 bytes
fonte
C #, 174 bytes
Implementação preguiçosa, provavelmente pode jogar muito
fonte
PHP, 79 bytes
gera entidades html unicode e as decodifica. Corra com
-r
.fonte
Pip ,
2120 bytesEste é um dia memorável. Pip
amarrouJelly batido! 11 E perdeu para dois outros golflangs, mas tanto faz.
Experimente online!
Explicação
fonte
tcl, 73
demonstração
fonte
Retina , 55 bytes
Experimente online
fonte
Braingolf , 24 bytes
Experimente online!
Explicação:
fonte
PowerShell , 81 bytes
Experimente online!
fonte
Script Groovy,
5451 bytesEditar
Comutado de
913..937
eit==930?:
para(913..937)-930
fonte
Perl no Windows - o console não oferece suporte a Unicode - (42 bytes, incluindo espaços)
Esta não é a minha solução, estou apenas adaptando a solução Perl de Denis Ibaev acima, ao console do Windows Perl.
O código da página do console deve ser grego, é claro:
NOTA: Apenas uma pequena ideia. Nesta página, vejo que algumas das respostas usam CHARACTERS que parecem ter Unicode acima de 255. Portanto, esses caracteres levam pelo menos 2 bytes para codificar (talvez 4 se alguém estiver usando um console usando caracteres Unicode de 32 bits?). Não seria melhor se a medida do concurso fosse a unidade CHARACTER (sendo Unicode ou ASCII ou EBCDIC ou qualquer outra coisa) em vez de apenas BYTES? Não seria mais simples e mais unificador (pergunto se esse adjetivo existe em inglês, "unificateur" em francês)?
Código anterior com erro: Não imprime ômega minúsculo.
Código corrigido (70 caracteres):
Sei que não devemos imprimir a forma sigma 'final da palavra' ('ς'), mas como é um erro de ortografia incorreta no grego antigo usar sigma regular ('σ') no final de uma palavra em minúscula, Eu escolhi imprimi-lo, pois o título deste quebra-cabeça é "Imprima o alfabeto grego" e esse personagem faz parte dele ...
fonte