/* Configuration */
var QUESTION_ID = 63675; // 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>
ಠ
ea
? É 1 (contandoಠ
como 1 caractere) ou 2 (porqueಠ
na verdade são 2 bytes)?Respostas:
Japt ,
886866766725688669As tarefas 5 e 6 são matadoras. Talvez haja maneiras mais curtas de fazê-las. Eu acho que as distâncias de Levenshtein ainda poderiam ser reduzidas também.
!(U%#ۊ
7 bytes (caracteres árabes atrapalham o alinhamento)
U!=Uk'q
7 bytes, dist 11Us36 u
6 bytes, dist 14UmX=>Xc
7 bytes, dist 14"PPCG"
6 bytes, dist 18Ur"[Oo]",'ಠ
13 bytes, dist 27X=Uq f;XoU*X+1,X
16 bytes, distância 522oU fX=>2oX eY=>X%Y &&!(U%X)r(X,Y =>X+Y
39 bytes, dist 172UmX=>128o mY=>Yd)a k'A i#Z,'A k'a i#z,'a gXc
44 bytes, dist 216Aqui está um trecho que mostra a você (uma) as maneiras mais eficientes de organizar seus programas:
Mostrar snippet de código
Com o versão mais recente do Japt (não concorrente neste desafio), a maioria das tarefas fica mais curta:
s36 u
5 bytesmc
2 bytesv#ۊ
4 bytes
oq
2 bytes;B±B+C²UrF,@Bg1+BbX
19 bytesk â x
5 bytes"PPCG
5 bytesB=U¬f)oU*B+1B
13 bytesro'ಠ'i
6 bytesA ordem ideal agora é 2,4,3,1,6,7,9,8,5, chegando a uma pontuação gritante de 217 , menos de um terço do original!
Sugestões são bem-vindas!
fonte
Pyth, pontuação 489
Conversão base: 15
Cifra de César: 13 + 11 ^ 1,5
Divisível por 1738: 7 + 11 ^ 1,5
Primeiros N números inteiros positivos: 8 + 8 ^ 1,5
Soma dos fatores primos: 4 + 6 ^ 1,5
Aparência de q na sequência: 4 + 4 ^ 1,5
Junte-se a todos os códigos ASCII: 5 + 4 ^ 1,5
Imprimir "PPCG": 5 + 5 ^ 1,5
Substitua por
ಠ
: 9 + 7 ^ 1,5fonte
Ruby, 1488
Provavelmente há muito espaço para melhorias aqui. Passava a maior parte do tempo calculando a pontuação ...
Soma dos fatores primos : 64 Base 36 : 30 + 47 1,5 = 352 Divisível por 1738 : 22 + 15 1,5 = 80 PPCG de impressão : 9 + 18 1,5 = 85 A string contémq
? : 10 + 8 1,5 = 32 Substituao
: 23 + 16 1,5 = 87 Cifra de Ceasar : 32 + 21 1,5 = 128 Códigos ASCII : 37 + 26 1,5 = 169 Números inteiros divisíveis por raiz quadrada : 72 + 56 1,5 = 491fonte
Java, pontuação 8331
As distâncias levenshtein estão matando minha pontuação aqui.
(Esses programas recebem entrada como argumentos de linha de comando)
Programa 1 (119):
Programa 2 (120 + 56 1,5 = 539):
Programa 3 (101 + 49 1,5 = 444):
Programa 4 (108 + 20 1,5 = 197):
Programa 5 (186 + 107 1,5 = 1293):
Programa 6 (327 + 228 1,5 = 3747):
Programa 7 (336 + 10 1,5 = 368)
Programa 8 (351 + 34 1,5 = 549):
Programa 9 (305 + 84 1,5 = 1075):
fonte
Pyth, pontuação 817
número 1: 24
número 2: (9 + 16 1,5 = 73)
número 3: (5 + 8 1,5 = 27)
número 4: (5 + 14 1,5 = 57)
número 5: (39 + 37 1,5 = 264)
número 6: (4 + 39 1,5 = 247)
número 7: (5 + 4 1,5 = 13)
número 8: (12 + 12 1,5 = 53)
número 9 (13 + 13 1,5 = 59)
Não é o melhor, eu apenas comecei a aprender pitay hoje e pensei em tentar, o número 5 realmente matou minha pontuação, acho que posso diminuir alguns deles, mas isso só vai me machucar mais nas distâncias. Todas as dicas de usuários mais experientes de pyth são apreciadas.
fonte
You must use one language to write programs that perform the following nine tasks, in any order.
Boa sorte!5 + 14^1.5
não é 19Python 3 (atualmente inválido), 621 bytes
Não é realmente esse código bom, mas funciona um pouco: D. A soma dos fatores primos não está funcionando. Eu sempre recebo um resultado diferente do seu exemplo, então o removi. O Python também não suporta o char
ಠ
, substituindo oso
por0
sIO INFO:
1ª entrada: int na base 10 | Saída: esse número na base 36
2ª entrada: uma string | Saída: números ASCII da string
Terceira entrada: inteiro | Saída: Verdadeiro ou Falso, dependendo do número ser divisível em 1738
4ª entrada: string | Saída: T ou F, dependendo da sequência de caracteres "q"
5ª entrada: string | Saída: Cifra Caser +1 da sequência
6: apenas imprime "PPCG" literalmente
7ª entrada: int n | Saída: primeiras n polegadas divisíveis por piso (sqrt (n))
8ª entrada: string | Saída: todos
o
s substituídos por 0 (não por ಠ porque python não suporta esse caractere, não fique muito bravo :))fonte