/* 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!
?Respostas:
Pitão, 19 bytes
Experimente on-line: Demonstration or Test Suite
Explicação
fonte
Python 2.7,
1009896 bytesfonte
TeaScript , 24 bytes
2628TeaScript é JavaScript para jogar golfe
Bem curto
Experimente online
Explicação
fonte
Ruby,
1378782766755 bytesUngolfed, mas você pode ver o padrão.
Edit: reduziu para apenas um regex.
Edit 2: tinha muitos espaços extras.
Edit 3: Graças ao manatwork para jogar golfe com 12 bytes!
fonte
$><<gets.gsub(/[a-z0-9]/i){[*" 0Aa"[$&.ord/32]..$&]*""}
Python 2,
145140133103102 BytesUma função anônima não tão elegante usando compreensão de lista. Eu sinto que a lógica deve ser muito menor, vou tentar descobrir alguma coisa.
Deve ser dado um nome a ser usado, ou seja,
f=...
fonte
Haskell,
95918660 bytesExemplo de uso:
f "pi=3.14159"
->"abcdefghijklmnopabcdefghi=0123.0101234010123450123456789"
Como funciona: copie todos os caracteres c na string de entrada, a menos que c esteja entre
A
/Z
,a
/z
ou0
/9
e, se for o caso, faça a lista de[<first char in pair> ... <c>]
.Edit: @Zgarb salvou muitos bytes. Obrigado!
fonte
c#_=[c]
e pulart
completamente.s
também é supérfluo. Muito obrigado!JavaScript (ES6),
143138 bytesUsa comparações de strings para testar quais caracteres usar.
Demonstração online. Testado no Firefox e Chrome.
Editar: salvou 5 bytes substituindo
a='0123456789abcdefghijklmnopqrstuvwxyz'
porfonte
PHP, 146 bytes
Golfe
Revisão 1: coloque os intervalos ord diretamente no foreach. o intervalo ord ord incrementado e alterado
$d<=$m
para$d<$m
. usandofor
para iterar caracteres em vez deforeach
estr_split
. Removido tudo{}
movendo o código parafor
Ungolfed
Explicação: divida a sequência em matriz. Se o valor ascii cair em um intervalo (para az, AZ, 0-9), aumente um contador do mínimo do intervalo para o valor ascii do caractere, acrescentando cada valor até você atingir o valor ascii do caractere.
Como passei,
&$var
a saída é feita por referência e não por umreturn
fonte
foreach
.range()
? pastebin.com/k2tqFEgD$z
e fiz algumas outras alterações.range()
provavelmente seria melhor. Eu poderia tentar algo com alcance mais tarde.range
, eu conseguifunction 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;}}
, que era 166.range()
é menos benéfico. Mas esse 166 é muito longo, mesmo assim: o $ o para o literal da matriz está de volta, há espaços extras em torno dasas
palavras - chave ejoin()
é o pseudônimo deimplode()
. (?. Verificado o código pastebin I ligada anteriormente Shows outra possibilidade para armazenar os parâmetros de intervalo) Quanto à sua solução de 146 caracteres, você pode mover a atribuição para $ c dentro daord()
chamada:$d=ord($c=$n[$r])
.Python, 143 bytes
Experimente online
fonte
Perl 6, 101 bytes
Aqui está uma primeira passagem:
119
Usando
.trans
a$_
removeris copy
.106
Atue
@*ARGS
diretamente em vez de definir umMAIN
sub.(caso contrário, idêntico ao exemplo anterior)
101
fonte
Scala,
11191 bytesfonte
pi=3.14159
. A solução poderia terval 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)
128 caracteres impressionantes?Julia,
102989084 bytesIsso cria uma função sem nome que aceita uma string e retorna uma string.
Ungolfed:
fonte
PowerShell, 155 bytes
Tecnicamente uma linha e o PowerShell é tudo sobre isso ;-)
Divide a entrada, canaliza isso em um
ForEach-Object
loop, ativa o valor inteiro do caractere convertido e gera novoschar[]
intervalos apropriados. Observe que precisamos gastar bytes para definir uma variável temp,$b
porque o ato de converter a entrada$_
na instrução switch significa que não podemos continuar usando$_
ou obteremos uma saída descolada.EDIT - Devo salientar que isso gerará erros, pois o primeiro objeto sendo alimentado
%{...}
é um objeto nulo. Como STDERR é ignorado por padrão , isso não deve ser um problema. Se houver algum problema, altere o primeiro bit($args-split''-ne''|...
para eliminar o objeto nulo.fonte
JavaScript (ES6),
340258273271 bytesfonte
("")
ef=i=""
no loop for. Você poderá salvar mais alguns bytes.C (269 bytes)
(quebra de linha adicionada para maior clareza)
Ungolfed
fonte
Perl 5 ,
6661(51 bytes + 1) 52A combinação de expressões regulares com operadores condicionais funcionou bem nesse caso.
Com uma junçãoUsando o mapa para combinar os intervalos em uma matriz.Teste
Explicação
fonte
JavaScript (ES7), 125 bytes
Já havia duas respostas JS com foco na codificação das strings, então decidi adotar uma abordagem mais algorítmica usando
String.fromCharCode()
:Um bônus ao usar esse método é que ele requer qualquer quantidade de códigos de caracteres, portanto,
join
a lista não é necessária. Acabou sendo mais curto do que qualquer outra técnica, então estou feliz com o resultado.fonte
MUMPS, 131 bytes
Consegui salvar alguns bytes aqui graças ao escopo dinâmico do MUMPS . Aqui está uma versão praticamente não equivalente, que eu gostaria muito de destacar a sintaxe, se apenas o suporte ao módulo MUMPS Prettify estivesse disponível .
fonte
Perl 6,
78bytesfonte
'a'..'z'
e'A'..'Z'
, eu deveria ter tentado mais.<!-- language-all: lang-perl6 -->
logo após,## Perl 6
para que fique destacado corretamente. (Mudança já está pendente sobre esta resposta){[~](0..$/)}
para o{[~] 0..$/}
que salvará um byte.Mathematica, 102 bytes
Ah bem...
fonte
CJam,
3231 bytesExperimente on-line no intérprete CJam .
Como funciona
fonte
Python 2,
135117 bytesfonte
PHP - 291 bytes
Passe a string para
GET["s"]
.fonte
C #,
251201184157154 154 byteseditar: Greve! Mais curto que o PowerShell;)
fonte
string[]i
?