var QUESTION_ID=49876;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var o=0;o<s.length;++o){var l=jQuery("#language-template").html(),t=s[o];l=l.replace("{{LANGUAGE}}",t.lang).replace("{{NAME}}",t.user).replace("{{SIZE}}",t.size).replace("{{LINK}}",t.link),l=jQuery(l),jQuery("#languages").append(l)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*\s*([^,]+)/;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}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="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><div id="language-list"> <h2>Winners 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><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>
A+
иA-
? Я не понимаю, почему мы их игнорируем.+
Ответы:
Python 2,
727062 байтаЭто анонимная функция, которая принимает int и возвращает оценку в виде строки.
(спасибо @ MartinBüttner, @grc и @TheNumberOne за советы)
источник
"EDCB"[n/10-6]
->chr(75-n/10)
CJam,
34 3332 байтаХорошо, я попробовал несколько подходов сейчас и не могу получить это ниже 33, поэтому здесь идет объяснение:
ОБНОВЛЕНИЕ : 1 байт сохранен благодаря указателю Денниса
Попробуйте онлайн здесь
источник
s
?<
Character String -
толкает строкуRetina, 43 + 15 = 58 байт
Retina - это язык регулярных выражений, созданный Мартином Бюттнером, где файлы с нечетными номерами - это регулярные выражения, с которыми нужно сопоставлять, а файлы с четными номерами - это то, что нужно заменить. Каждая строка представляет собой отдельный файл, поэтому я добавил 15 байтов для каждого дополнительного файла.
объяснение
Он начинается с создания чего-либо с 3 или более цифрами A. Он добавляет,
-
если это двузначное число, заканчивающееся на 0, 1 или 2, и+
если оно заканчивается на 7, 8 или 9. Числа затем сопоставляются с их оценка (например, число, начинающееся с 9, обозначается буквой B). Любое оставшееся число автоматически становится F.К сожалению,Обновление: в версии 0.5.0 промежуточный вывод по умолчанию отключен, что позволяет сэкономить несколько байтов.;`
для подавления промежуточного вывода необходимо добавить перед всеми, кроме последнего регулярного выражения.источник
\d.*
соответствует и заменяет всю строку,+
включая.C, 99 байтов
Я новичок здесь, я надеюсь, что я следую правилам.
Эта функция принимает метку в качестве параметра и возвращает оценку в виде строки с нулевым символом в конце.
объяснение
Добавлены пробелы:
Глобальные переменные автоматически обнуляются, поэтому b заполняется значениями NULL. Поскольку касаются только первые два символа, нам нужно беспокоиться только о том, чтобы поставить значение NULL в b [1], если в оценке только один символ. Этот NULL вставляется в самом начале функции. Параметр n неявно int. Если оценка меньше 60, то она установлена на «F», если она больше 99, на «A». В других случаях базовый класс задается как
'E' - (n - 60) / 10
, что упрощает до75 - n / 10
.n % 10
получает цифру единицы измерения. Если оно меньше 3, то добавляется a -, если оно больше 6, добавляется a +, в противном случае b [1] обнуляется (что уже было).Контрольные примеры
источник
Pyth, 33 байта
Попробуйте онлайн: демонстрация или тестовый набор
Объяснение:
источник
> <> (Рыба),
7871 байтМетод:
x,y,z
из ввода. Если символа нет, значение его переменной будет-1
неявно. (ord(c)
отметит кодовую точку символаc
)z > 0
(3-значный ввод), распечатайтеA
и выйдите.x < ord('6') or y < 0
(введите <60), напечатайтеF
и выйдите.123 - x
.y < ord('4') print
-` и выход.y > ord('6') print
+ `и выход.источник
С
6765Удивительно, но это довольно близко к решению Python.
Но для того, чтобы эта программа достигла такой большой нехватки, нужно было пойти на жертвы:
Если напечатано
F
или или даже не смотрит на другие переданные аргументы. Это довольно неприятный взломать.A
printf
Если
(i%10+1)/4
значение равно1
(нет+
или-
должно быть добавлено к оценке),%s
средство форматирования получает указатель на\0
байт, поэтому ничего не печатается. Также довольно забавно, потому что я не знал, что вы можете взять адрес индексного строкового литерала. (например&"string"[i]
) ( редактировать :"string"+i
еще короче ! Спасибо @nutki)Вот выходные данные программы для чисел от 57 до 102. Я сделал это hexdump, так что мы можем быть уверены, что никаких странных
\0
байтов не было напечатано.Используемый
main
метод:источник
&"string"[i]
не является необходимым, поскольку это эквивалентно более короткому,"string"+i
с которым вы можете сохранить 2 байта.CJam,
41393734 байтаЭто слишком долго, но я не думаю, что пока буду играть в гольф дальше.
Проверьте это здесь. Или запустите все тестовые случаи здесь.
Три байта сохранены оптимизатором.
объяснение
(Слегка устаревший)
источник
GNU sed, 73 + 1 = 74 байта
+ 1 для параметра -r.
источник
Python 2,
94888469 байтисточник
JavaScript (ES6), 66 байт
Прямо.
источник
R
10710599 байтБоюсь, что это не очень хорошее усилие, но я постараюсь сыграть в него попозже.
Редактировать брошено несколько
if
секунд. Исправлен случай и неверный результат на 100.Теперь избавиться от. Избавился отifelse
сifelse
с.источник
LETTERS
а неletters
.Perl,
6662 байтаЭто, вероятно, может быть в гольф больше. Также другой способ может быть лучше.
+1 за
-p
Бежать с:
источник
-p
и броситьsay
?Javascript (ES6),
7879 байтовЭто действительно не самый умный вариант, но я сделал то, что мог.
Просто передайте оценку в виде строки , и она вернет свою оценку.
Струнная часть очень важна.
Вы можете проверить тестовый пример здесь:
Если дополнительное письмо после письма не разрешено, я с радостью его удалю.Не было! Это увеличило мой код на 1 байт, но ничего (слишком) серьезного.источник
One newline after output is fine, but keep it consistent.
". Я думаю, что это достаточно последовательно.C #,
14312711288 байтЯ пытался быть умным, выполняя числовые моды ASCII, но, похоже, я был не один!
Спасибо Тиму за советы по спискам вместо ifs.
Спасибо DarcyThomas за указание, что я могу использовать вложенные троичные операторы.
источник
[item1,item2][condition]
. Если условие истинно, оно дает 2-й пункт, если ложь первое.return <condition> ? <true result> : <false result>
Заметьте, вы также можетеreturn <condition> ? <true result> : <condition> ? <2nd true result> : < 2nd false result>
Haskell, 78 байт
Первая строка выглядит расточительной, стоит 14 байт, но я не смог найти более короткую версию без нее.
объяснение
Оператор
#
является сокращением для создания n копий его второго аргумента. Списокa
- это бесконечный список строк "A". Функцияf
индексирует в список всех оценок для n = 0,1, ... Понимание списка строит «среднюю часть» этого списка (оценки от E до B);g
это один символ, который предшествует строкеs
(которая может быть пустой).использование
источник
C, 102 байта
}
использование
источник
постоянный ток, 52
Выход
источник
TI-Basic,
797476 байтисточник
1+
TI-BASIC,
696866 байтTI-BASIC не подходит для работы со строками.
Ввести на домашнем экране калькулятора в виде [число]: [название программы].
отформатирован:
Это, вероятно, может быть дальше.
источник
C #, 82 байта
Вот скрипка с некоторыми тестами.
источник
JavaScript (ES6),
8683 байтаЧто на самом деле поглощает символы, так это
String.fromCharCode
условие +/- ... Я сильно подозреваю, что есть умный способ сократить хотя бы одного из них.источник
~~(.1*-n+75.9)
->75.9-n/10|0
PHP5.5, 73 байта
Еще раз, не самый короткий.
Но это работает!
Я классифицировал его как PHP5.5, а не только PHP, поскольку в нем используется синтаксис, действительный только для PHP5.5 и PHP5.6.
Вы можете прочитать о разыменовании строк и массивов в руководстве:
http://php.net/manual/en/migration55.new-features.php
источник
Perl, 52
источник
Рубин, 58 байт
Не могу поверить, что здесь нет рубинов. Если подумать, то это похоже на то, что уже есть, но в любом случае:
Попробуй здесь
источник
Excel, 100 байт
источник