/* 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!
?Ответы:
Pyth, 19 байт
Попробуйте онлайн: демонстрация или тестовый набор
объяснение
источник
Python 2.7,
1009896 байтисточник
TeaScript , 24 байта
2628TeaScript - это JavaScript для игры в гольф
Довольно короткий
Попробуйте онлайн
объяснение
источник
Рубин,
1378782766755 байтБезголовый, но вы можете видеть шаблон.
Изменить: гольф до одного только регулярное выражение.
Редактировать 2: было много лишних пробелов.
Редактировать 3: Спасибо Manatwork для игры в гольф 12 байтов!
источник
$><<gets.gsub(/[a-z0-9]/i){[*" 0Aa"[$&.ord/32]..$&]*""}
Python 2,
145140133103102 байтНе очень гладкая анонимная функция, использующая понимание списка. Я чувствую, что логика должна быть намного короче, я постараюсь что-то выяснить.
Должно быть дано имя для использования, т.е.
f=...
источник
Haskell,
95918660 байтПример использования:
f "pi=3.14159"
->"abcdefghijklmnopabcdefghi=0123.0101234010123450123456789"
Как это работает: скопируйте каждый символ c во входной строке, если c не находится между любым из
A
/Z
,a
/z
или0
/9
и если это так, возьмите список[<first char in pair> ... <c>]
.Редактировать: @Zgarb спас много много байтов. Благодарность!
источник
c#_=[c]
и пропуститьt
полностью.s
тоже лишнее. Большое спасибо!JavaScript (ES6),
143138 байтИспользует сравнения строк, чтобы проверить, какие символы использовать.
Демо онлайн. Протестировано в Firefox и Chrome.
Редактировать: 5 байтов сохранены путем замены
a='0123456789abcdefghijklmnopqrstuvwxyz'
наисточник
PHP, 146 байт
Golfed
Редакция 1: поместить диапазоны ord прямо в foreach. увеличил максимальный диапазон и изменил
$d<=$m
на$d<$m
. использоватьfor
для итерации символов вместоforeach
иstr_split
. Убрал все{}
, переместив код вfor
Ungolfed
Объяснение: разбить строку на массив. Если значение ascii попадает в диапазон (для az, AZ, 0-9), то увеличивайте счетчик от минимума диапазона до значения ascii символа, добавляя каждое значение до тех пор, пока не достигнете значения ascii символа.
Я прошел,
&$var
так что вывод делается по ссылке, а неreturn
источник
foreach
.range()
? pastebin.com/k2tqFEgD$z
и сделал некоторые другие изменения.range()
вероятно, будет лучше. Я мог бы попробовать что-то с дальностью позже.range
, я получилfunction 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;}}
, что было 166.range()
будет менее выгодным. Но этот 166 слишком длинный, несмотря на это: $ o для литерала массива возвращается, есть дополнительные пробелы вокругas
ключевых слов, для которыхjoin()
есть псевдонимimplode()
. (?. Проверили код Pastebin Я связан ранее показывает другую возможность сохранить конечные точки диапазона) Что касается вашего решения 146 символов, вы можете переместить задание $ с внутриord()
вызова:$d=ord($c=$n[$r])
.Python, 143 байта
Попробуйте онлайн
источник
Perl 6, 101 байт
Вот первый проход на это:
119
Использование
.trans
на$_
удалитьis copy
.106
Действуйте
@*ARGS
напрямую, вместо того, чтобы определятьMAIN
саб.(в остальном идентичен предыдущему примеру)
101
источник
Scala,
11191 байтисточник
pi=3.14159
. Может ли быть решениеval 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 символов?Юлия,
102989084 байтаЭто создает безымянную функцию, которая принимает строку и возвращает строку.
Ungolfed:
источник
PowerShell, 155 байт
Технически это одна строка, и PowerShell - все о них ;-)
Разбивает входная труба , что в
ForEach-Object
петлю, переключатели на целом значении отлитого символа, затем генерирует новуюchar[]
из соответствующих диапазонов. Обратите внимание, что мы должны потратить байты, чтобы установить временную переменную,$b
потому что акт приведения входных данных$_
в операторе switch означает, что мы не можем просто продолжать использовать$_
или мы получим прикольный вывод.РЕДАКТИРОВАТЬ - Я должен указать, что это будет сбрасывать ошибки, так как первый объект, который
%{...}
вводится, является нулевым объектом. Так как STDERR по умолчанию игнорируется , это не должно быть проблемой. Если это проблема, измените первый бит,($args-split''-ne''|...
чтобы удалить нулевой объект.источник
JavaScript (ES6),
340258273271 байтисточник
("")
иf=i=""
в течение цикла. Возможно, вы сможете сохранить еще несколько байтов.C (269 байт)
(разрыв строки добавлен для ясности)
Ungolfed
источник
Perl 5 ,
6661(51 байт + 1) 52Комбинирование регулярных выражений с условными операторами в этом случае хорошо сработало.
С объединениемИспользование карты для объединения диапазонов в массив.Тест
объяснение
источник
JavaScript (ES7), 125 байт
Уже было два JS-ответа, посвященных кодированию строк, поэтому я решил пойти на более алгоритмический подход, используя
String.fromCharCode()
:Преимущество использования этого метода заключается в том, что он принимает любое количество кодов символов, поэтому
join
в списке нет необходимости. Это оказалось короче, чем любая другая техника, поэтому я доволен результатом.источник
MUMPS, 131 байт
Мне удалось сэкономить здесь несколько байт благодаря динамической области видимости MUMPS . Вот примерно эквивалентная версия без гольфа, которую, я уверен, хотел бы выделить синтаксис, если бы была доступна только поддержка модуля MUMPS Prettify .
источник
Perl 6,
7877 байтовисточник
'a'..'z'
и'A'..'Z'
случаев, я должен был стараться изо всех сил.<!-- language-all: lang-perl6 -->
сразу после## Perl 6
этого, чтобы он выделился правильно. (Изменение уже ожидается в этом ответе){[~](0..$/)}
на{[~] 0..$/}
который сохранит один байт.Mathematica, 102 байта
Ну что ж...
источник
CJam,
3231 байтПопробуйте онлайн в интерпретаторе CJam .
Как это работает
источник
Python 2,
135117 байтисточник
PHP - 291 байт
Передайте строку в
GET["s"]
.источник
C #,
251201184157154 байтаредактировать: удар! Короче чем PowerShell;)
источник
string[]i
?