/* 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>
Respuestas:
Guión Vim,
2221 bytesExplicación:
El primer comando se asigna
Q
a:vEU
hacer que la palabra en mayúsculaW
vaya a la siguiente palabravEu
hacer que la palabra en minúsculaW
vaya a la siguiente palabraQ
repetir mapeo recursivoy
|norm Q
ejecuta el mapeoUso del programa
Así es como haces que Vim lea de stdin:
Esto abrirá Vim mostrando esto:
fuente
GNU sed, 28
La puntuación incluye +2 para
-rz
pasar a GNU sed.Prueba de salida
fuente
Perl, 26 bytes
Código de 25 bytes + línea de comando de 1 byte
¡Gracias a ThisSuitIsBlackNot por corregir un par de errores!
Uso:
fuente
Pyth, 23
Pruébelo en línea o ejecute el conjunto de pruebas
Alterna entre pyth's
lower
yupper
funciones, que sonr...0
or...1
. Esto probablemente afectará a los caracteres unicode, esperando que la aclaración de OP cambie.Siento que algo debe ser golfable. Particularmente el XOR para cambiar el interruptor en el cual
upper
/lower
debe usarse.fuente
A\nB
debería imprimirseA\nb
.A new word is formed when there is a nonzero amount of whitespace after a non-whitespace character.
La salida paraA\nB
esA\NB
. Pero parece que su respuesta de CJAM fue correcta.Perl, 87 bytes
Después de jugar con ambas expresiones regulares y
map
por un tiempo, no pude encontrar una solución elegante, así que este es el resultado:fuente
lc(<>)
, podría serlc<>
y el uso de un modificador de instrucción para su lewhile
permite omitir el paréntesis también, por ejemplo.print$i++while$i<10
vswhile($i<10){print$i++}
. Hay una página útil que me ayudó mucho Sugerencia para jugar al golf en PerlRuby, 56 bytes
fuente
JavaScript ES6,
7471 bytes.toUpperCase()
y.toLowerCase()
mata absolutamente el recuento de bytes (agrega 32 bytes 0.o). Sin embargo, la mayoría de las soluciones terminan con más bytesfuente
Groovy,
108125120No tan limpio como esperaba que fuera, lo que parece ser un tema con mis respuestas Groovy.
fuente
Lua, 96 bytes
fuente
Python 3,
10395 bytesfuente
[b.upper(),b.lower()][a%2]
para guardar 4 bytes (suponiendo que conté correctamente en el móvil).STATA, 252 bytes
Espera entrada como un archivo csv (una columna) llamado ab
Explicación:
Leer datos en (el nombre de variable predeterminado es v1, acortable a v). Haga una nueva variable b igual a la primera palabra (token separado por espacios) de v para cada línea. Para cada línea, mientras que la siguiente palabra no está vacía (solo ocurre si no hay más caracteres en esa línea), reemplace la palabra en v con la versión en mayúscula o minúscula de esa palabra en la línea actual, dependiendo de cuántos (mod 2 ) ya se han encontrado palabras. Luego obtenga la siguiente palabra y repita. Imprima toda la línea cuando termine con ella.
fuente
Delphi, 290 bytes
No es realmente un buen idioma para jugar al golf con ...
fuente
Lua, 88 bytes
fuente
CJam, 28 bytes
Actualmente estoy considerando los primeros 33 caracteres ASCII / Unicode (y solo esos) espacios en blanco. Estoy esperando aclaraciones para saber si esto es válido o no.
Pruébelo en línea en el intérprete de CJam .
fuente
Pyth,
1722 bytesPruébalo aquí
fuente
C #,
10410099 bytesSon 79 bytes con
fuente