/* 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>
Ответы:
Vim скрипт,
2221 байтОбъяснение:
Первая команда отображается
Q
на:vEU
сделать слово заглавными,W
чтобы перейти к следующему словуvEu
сделать слово строчными,W
перейти к следующему слову.Q
повторить рекурсивное отображение.и
|norm Q
выполняет отображениеИспользование программы
Вот как вы получаете Vim для чтения со стандартного ввода:
Это откроет Vim, отображающий это:
источник
GNU sed, 28
Оценка включает в себя +2 для
-rz
переданных в GNU sed.Тестовый вывод
источник
Perl, 26 байт
25-байтовый код + 1-байтовая командная строка
Спасибо ThisSuitIsBlackNot за исправление нескольких ошибок!
Использование:
источник
Пиф, 23
Попробуйте онлайн или запустите набор тестов
Чередует пит
lower
иupper
функции, которыеr...0
илиr...1
. Это, вероятно, повлияет на символы Юникода, ожидая изменения в пояснениях ОП.Я чувствую, что что-то должно быть пригодным для игры в гольф. В частности, XOR, чтобы изменить переключатель, который
upper
/lower
должен использоваться.источник
A\nB
должен печататьсяA\nb
.A new word is formed when there is a nonzero amount of whitespace after a non-whitespace character.
Выход дляA\nB
естьA\NB
. Но похоже, что ваш ответ CJAM понял правильно.Perl, 87 байт
После использования регулярных выражений и
map
ненадолго, я не смог придумать элегантное решение, так вот результат:источник
lc(<>)
, может бытьlc<>
и использование модификатора оператора для вашегоwhile
позволяет также пропустить скобки, например.print$i++while$i<10
противwhile($i<10){print$i++}
. Есть полезная страница, которая очень мне помогла. Советы по игре в гольф в PerlРубин, 56 байт
источник
JavaScript ES6,
7471 байт.toUpperCase()
и.toLowerCase()
убить счетчик байтов (добавляет 32 байта 0.o). Большинство обходных путей заканчивается большим количеством байтовисточник
Groovy,
108125120Не так чисто, как я надеялся, и это будет темой моих ответов на Groovy.
источник
Луа, 96 байт
источник
Python 3,
10395 байтисточник
[b.upper(),b.lower()][a%2]
на 4 байта (если я правильно посчитал на мобильном телефоне).STATA, 252 байта
Ожидается ввод в виде CSV-файла (один столбец) с именем ab
Объяснение:
Чтение данных в (имя переменной по умолчанию v1, сокращается до v). Создайте новую переменную b, равную первому слову (токен, разделенный пробелом) переменной v для каждой строки. Для каждой строки, пока следующее слово не пустое (встречается только в том случае, если в этой строке больше нет символов), замените слово в v на версию этого слова в текущей строке в верхнем или нижнем регистре, в зависимости от того, сколько (mod 2 ) слова уже найдены. Затем получите следующее слово и повторите. Распечатайте всю строку, когда закончите с этим.
источник
Delphi, 290 байт
Не очень хороший язык для игры в гольф ...
источник
Луа, 88 байт
источник
CJam, 28 байт
В настоящее время я рассматриваю первые 33 пробела ASCII / Unicode (и только те). Я жду разъяснений, чтобы узнать, действительно ли это или нет.
Попробуйте онлайн в интерпретаторе CJam .
источник
Pyth,
1722 байтаПопробуй здесь
источник
C #,
10410099 байтЭто 79 байт с
источник