var QUESTION_ID=85666,OVERRIDE_USER=4162;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;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>
Ответы:
Выпуклый, 9 байт
Новый метод! Кроме того, я понял, что это в значительной степени совпадает с ответом Луиса, но в выпуклом, но я придумал это независимо.
Попробуйте онлайн!
Объяснение:
Старое решение, 10 байтов:
Попробуйте онлайн!
Объяснение:
источник
A,'[,_el^'_
Рубин, 26 байт
Символы могут быть напечатаны в любом порядке? Не против, если я сделаю!
Попробуйте онлайн!
источник
Perl, 20 байт
Требуется
-E
без каких-либо дополнительных затрат.Итак, мой оригинальный ответ (ниже) был слишком скучным. Единственное, что мне удалось придумать, это выше, это точно так же, но выглядит немного более запутанным ... Это в значительной степени точно соответствует приведенному ниже:
Мне нравятся предложения @ msh210 в комментариях, но они слишком длинны!
источник
say grep/\w/,map chr,1..122
||say map{chr=~/\w/;$&}1..122
||say map{chr=~s/\W//r}1..122
say chr=~/\w/g for 1..255
...Чеддер,
3127 байтЭто
@"
хорошо демонстрирует оператораНезавершенное, потому что я наконец-то понял, как починить
@"
оператора. Ошибка заключалась в том, что он генерировал диапазон Чеддера, а не диапазон JS, поэтому он не мог работать должным образомобъяснение
@"
Оператор был разработан @ CᴏɴᴏʀO'Bʀɪᴇɴ, и что она делает это генерировать диапазон строк из LHS в РИТ. При использовании в качестве унарного оператора, он возвращает символ в заданной кодовой точке (например, Pythonchr
)Ungolfed
источник
брейкфук, 58 байт
Попробуйте онлайн .
Инициализирует ленту до 3 · 2 n и работает оттуда.
источник
JavaScript (ES6), 62 байта
Возвращает
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
, поэтому только на 6 байт короче, чем функция, которая возвращает строковый литерал. Да, это отстой.источник
btoa
возвращается требуемый результат.atob
._
) и 14 для_=>atob("")+""
.Haskell, 38 байт
Здесь нечего объяснять.
источник
:
а++
?++
берет две строки и объединяет их.:
берет символ и строку и помещает символ перед строкой."_"++['a'..'z']...
тоже работает, но на один байт длиннее.PowerShell v3 +,
3533 байтаСоздает динамический массив
1..127
, преобразует его вchar
массив. Это передается-match
оператору, работающему с регулярным выражением\w
, которое будет возвращать все совпадающие элементы (т. Е. Точно буквы, цифры и подчеркивание). Мы инкапсулируем эти элементы массива в a,-join
чтобы связать их в одну строку. Это осталось на конвейере и вывод неявный.источник
0
...V, 27 байтов
Попробуйте онлайн!
Этот ответ ужасно запутан. Я опубликую объяснение позже.
HexDump:
Объяснение:
Удобочитаемый:
источник
J,
302928 байтСохранил байт благодаря рандоме!
Выход:
объяснение
Я не буду давать объяснения как такового , но приведу промежуточные результаты.
источник
Haskell, 31 байт
Выражение
zip "aA0_" "zZ9_"
дает список конечных точек[('a','z'),('A','Z'),('0','9'),('_','_')]
.do
Обозначение принимает каждый(x,y)
к включительно\(x,y)->[x..y]
и сцепляет результаты. Спасибо Anders Kaseorg за два байта сdo
вместо>>=
.Сравните с альтернативами:
источник
do
запись сохраняет два байта:do(x,y)<-zip"aA0_""zZ9_";[x..y]
C, 50 байтов
Звоните
f()
без каких-либо аргументов.Печать
источник
isalnum(n)|n==95&&putchar(n)
putc
вместоputchar
.putc
также ожидает поток для записи, который вы не передали. Сама функция работает нормально (попробуйте удалить свойputc
, и это работает).If the number of arguments does not equal the number of parameters, the behavior is undefined.
6.5.2.2/6, см. N1570 ./// , 63 байта
источник
Python 3, 58 байт
Полная программа, которая печатает на STDOUT.
Выход:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Как это работает
Попробуйте это на Ideone
Если бы строковые константы были разрешены, следующее было бы 45 байтов:
источник
print('_'+*filter(str.isalnum,map(chr,range(123))))
print('_',*filter(str.isalnum,map(chr,range(123))))
, но это печатает разделяющие пробелы; ОП сказал в комментариях, что «... в выходных данных вообще не должно быть пробелов».print''.join(filter(str.isalnum,map(chr,range(123)))),'_'
Моя первая попытка на Codegolf!
C #,
168152150147130127117116115109106 байтБольшое спасибо aloisdg, AstroDan, Leaky Nun и Kevin Lau - не Кенни за помощь в комментариях.
источник
\w
класс регулярных выражений охватывает буквенно-цифровые символы, а также_
, что должно быть"\\w"
достаточно допустимым для вашей функции сопоставления регулярных выражений.Чистая Баш, 32
Ideone .
источник
Объект Паскаль,
858373 байтаПросто обычный паскаль, используя набор символов. Написание полной программы вместо процедуры сбрасывает 2 байта. Удаление ключевого слова программы сокращает еще 10 байтов.
источник
program
ключевого слова.Баш -
4737 байтВывод в моей системе:
Спасибо Digital Trauma за полезные советы.
В некоторых системах вы можете использовать
ascii
вместоman sh
сохранения байта.источник
man sh|egrep -io _\|\\w|sort -u|tr -d \\n
\w
совпадения_
и уже нечувствителен к регистру, поэтому мог бы сократить еще больше.env
вместо того,man sh
чтобы работать в большинстве сред. Это на моем.$ env|egrep -o \\w|sort -u|tr -d \\n
->0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
.J
. Виноват.PHP, 40 байт
Демо онлайн .
источник
Сетчатка ,
3019161512 байтЯ изменил мою первоначальную попытку алфавита для этой последней версии. Каждый символ печатается в цикле.
Первая строка пуста.
Попробуйте онлайн
Выход:
Спасибо Leaky Nun за игру в 4 байта от моей последней попытки.
источник
w
считается константой, содержащей 9 или более обязательных символов. Вам, вероятно, придется расширить правую сторону и заменитьw
слева наo
. Хотя вы можете сохранить байт, используяEO
вместо,d
так как они содержат только 5 символов каждый.w
внутри стадии транслитерации не имеет ничего общего с регулярным выражением. Это сокращение, которое расширяется до списка необходимых 63 символов. По крайней мере, я бы специально спросил об этом случае orlp, поскольку он сильно отличается от использования\w
в регулярном выражении.MATL , 11 байт
Попробуйте онлайн!
источник
8W:'\w'XX
8W:'\w'XX!
что я пытался, но не работаетБрахилог , 25 байт
Это печатает следующее
STDOUT
:объяснение
источник
Pyth,
1312 байтПопробуйте онлайн!
Находит все символы от U + 0000 до U + 007B, которые соответствуют регулярному выражению
/\w/
.Выходы
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
.альтернативный подход: 15 байтов
Попробуйте онлайн!
в основном генерирует половину включена диапазоны , требуемые:
0-:, A-[, a-{, _-`
.источник
CJam ,
151411 байт4 байта, благодаря @FryAmTheEggman и @Dennis!
Попробуйте онлайн!
источник
Brainfuck, 89 байт
Попробуй здесь
Детали:
Если бы я мог прокомментировать, мне пришлось бы улучшать ответы других. Но так как я не могу, я мог бы также опубликовать свой собственный. Когда я начал писать это, самый низкий BF был 96 длинным.
источник
F #,
5059 байтВыход:
Изменить: пропустил цифры в первый раз
Edit2, вдохновленный этим решением Haskell, этот фрагмент кода F # составляет 67 байт.
Выход:
источник
Гексагония, 33
Expanded:
Выход:
Попробуйте онлайн!
Обратите внимание, что в
0x1A
качестве первого байта программы есть непечатаемый символ . Это также заставляет первый ряд расширенного Шестиугольника выглядеть немного не так. Большое спасибо Мартину за то, что он показал мне этот трюк, а также за предложенный алгоритм печати алфавита!Это печатает алфавит, сохраняя
a
иA
на двух краях шестиугольника и число 26 на краю шестиугольника, который касается соединения между буквами. Это выглядит примерно так:Затем он входит в цикл, который печатает буквы, а затем увеличивает их, а затем уменьшает число. После одной итерации мы получили бы:
И так далее. Линейный код инициализации:
0x1A " A } a
. Линейный код петли снаружи изменения потока управления:; ) ' ; ) { ( ' =
.Как только счетчик достигнет нуля, мы пойдем другим путем, чтобы напечатать числа и подчеркивание. Выписали линейно это:
x 3 5 6 8 4 7 9 ! ; { @
. Это заменяет текущее значение края памяти числом 1203568479 (обратите внимание, чтоx
код ASCII равен 120), которое содержит все десятичные цифры. Мы печатаем это число и затем используем аккуратную особенность Hexagony: мы печатаем число mod 256 как символ ASCII. Это просто 95, или подчеркивание.источник
Brainfuck,
11410398907671 байтЕще один
тривиальный(теперь нетривиальное) решение, но на этот раз BF!Благодаря @primo сохранено 14 (!) Байтов.
Сохранил еще 4 байта благодаря предложению @ primo сгенерировать диапазон в обратном порядке, а я сохранил еще один, увеличив его перед печатью строчных букв.
Новое (повторение 4, 71):
Старый (значения, 114):
Старый (повторение 1, 103):
Старый (повторение 2, 90):
Старый (повторение 3, 76):
Предполагает 8-битные оберточные ячейки и оборачивающую память. Я использовал Попробовать онлайн .
Все распечатать
_AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789
Во-первых, эта часть
инициализирует ленту с этими значениями
Это работает, потому что рекуррентное отношение, которое я смоделировал в основном
f(x) = 7 * (3 * x + 1)
, задом наперед. Смотрите @ primo's Привет, Мир! Ответьте за объяснение того, что такое рекуррентное отношение.Затем довольно просто изменить эти значения на полезные. (и распечатайте подчеркивание)
Затем простые циклы используют значения для печати остальных символов. Я сохраняю 1 байт, имея приращение перед печатью.
Мне действительно нужно найти более короткую последовательность поколений.Я нашел рекуррентное отношение, которое, кажется, работает хорошо, но может быть более короткое без охоты и клевки.Я использовал калькулятор линейной регрессии, чтобы найти самое короткое из возможных линейных рекуррентных соотношений, поэтому, возможно, мне нужно найти какую-то другую формулу, если я хочу улучшить.
@Primo действительно значительно улучшил отношение повторения, спасибо.
источник
+[--[<+++++++>->+<]>-]
>-]
, вы можете быть уверены, что окончательный член будет 1 (х7). На самом деле, вы, вероятно, должны начать с-
, он заканчивается намного быстрее.Sesos , 17 байт
Выход
Попробуйте онлайн! Проверьте Debug, чтобы увидеть сгенерированный двоичный код.
Как это работает
Двоичный файл выше был сгенерирован путем сборки следующего кода SASM.
источник
Пайк, 13 байт
Попробуй это здесь!
Создает ASCII 0-150 и фильтрует по буквенно-цифровой и добавляет
_
в конецисточник