var QUESTION_ID=96334,OVERRIDE_USER=15422;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;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>
Ответы:
Z shell (zsh), 13 байт
Использует
$path
параметр , который является специальным параметром массива, используемым оболочкой, привязанным к$PATH
параметру, и флагом раскрытия параметра для объединения массива с символами новой строки.источник
alias path="<<<${(F)path}"
но при выполнении он печатает, а/usr/local/bin zsh: no such file or directory: /Library/Apple/usr/bin zsh: no such file or directory: /Library/Apple/bin
затем идетsbin
alias path='<<<${(F)path}'
Bash / Coreutils,
1716 байтисточник
tr : '\n'<<<$PATH
должно сработать<<<
(проверено только на Ubuntu)\\n
вместо указанной в кавычках более удобной для чтения imho.Пакет, 41 байт
PATH
конечно же, в Windows разделена точкой с запятой. Удобно,for
по умолчанию разделяется на точки с запятой, но неудобно, также на пробелах, поэтому я должен использовать хитрость замены строки, чтобы заключить каждый элемент пути перед разбиением. Затем остается удалить цитаты после этого.источник
%%
на%
сохранение 2 байта.Z shell (zsh), 15 байтов
Вы можете протестировать код на Anarchy Golf : нажмите на форму , выберите zsh , вставьте код и отправьте.
Bash (чистый), 19 байт
Та же идея, но с меньшим синтаксисом Бэша. Проверьте это на Ideone .
источник
Powershell, 20 байт
Редактировать:
Старый:
источник
Рубин, 25 байт
источник
split ":"
наsplit":"
илиsplit ?:
для 1 байта.Perl, 22 байта
Необходимо
-E
или-M5.010
запустить:источник
Bash + Python, 43 байта
Давайте использовать расширение переменной оболочки. Это исключает вызовы
os.environ
, тем самым меньше кода и меньше импорта. Это дает нам 46 байтов, и сxnor
трюком и удалением места, прежде чем-c
мы получим 43 байта.источник
Java, 58 байт
Полная программа: 106 байт
источник
GNU
sed
+bash
, 25 байт:Если
PATH
имя каталога не содержит пробелов, кавычек не требуется, 23 байта:Еще короче, транслитерация
:
на новую строку , благодаря @Dennis :источник
Vim, 19 байт
"=$PATH<CR>p:s/:/\r/g<CR>
Возьмите
$PATH
из регистра выражения и вставьте его. Преврати:
s в новые строки. Ничего хитрого.источник
PHP,
36353332 байтаСохранено 1 байт, благодаря Blackhole.
Сохранено 2 байта, благодаря пользователю 59178.
сохранено 1 байт, благодаря Martijn
* NIX версия
Версия для Windows
источник
*nix
- это просто способ обращения к Unix-подобной системе.PATH_SEPARATOR
\n
, но вместо этого используйте новую строку, это сэкономит вам один байт."
S вокругPATH
. Вы получаете уведомление «использование неопределенной константы», но оно все еще работает, экономя 2 байта.<?=strtr(getenv(PATH),":","")?>
сохраняете байт (* не можете переводить строки в комментариях)Python 2, 49 байт
Сохранение 2 байта благодаря @xnor и 1 байт путем замены
environ
сgetenv
благодаря @Serg и @OliverДля Python 3, просто добавьте
(
и)
вокругprint
аргумента и добавить 1 к счетчику байтов.источник
replace
может принять упакованные аргументыreplace(*':\n')
.C,
8584 байта-1 байт для использования
#import
источник
Ракетка 39 байт
Используя команду sed @heemayl:
Ungolfed:
Тестирование:
(е)
Выход:
источник
Скала, 31 байт
В Scala,
a b c
это синтаксический сахар дляa.b(c)
, так что это компилируется вsys.env("PATH").replace(':','\n')
источник
Perl 6 ,
28 2524 байтаисточник
C #, 64 байта
Анонимная функция, которая возвращает переменную пути, каждый каталог в отдельной строке. Обратите внимание, что
x
это просто фиктивный объект для сохранения 1 байта вместо использования()
.Полная программа:
Также работает на системах UNIX , если заменить
;
с:
, предполагая библиотеки Mono доступны. Попробуйте онлайн на ideone. .NET Fiddle возвращает исключение безопасности.В качестве альтернативы, полная программа на C #, которая довольно многословна:
C #, 118 байт
источник
Haskell, 72 байта
Дорогой импорт и отсутствие
replace
в стандартной библиотеке делают его довольно длинным.источник
m ':'...
это пространство не нужно?'
является допустимым символом в идентификаторах. Без пробела мы бы определили функцию с именемm'
.C (x86), 60 байт
Это не будет работать на 64-битных платформах без включения stdlib.h , так как getenv возвращает int (32 бита), а char указатели на имеют ширину 64 бита.
Я еще не нашел онлайн 32-битный компилятор C.
C (x86-64), 70 байт
Вместо того, чтобы включать stdlib.h , мы объявляем getenv как функцию, возвращающую символ указатель .
Я проверил это с помощью gcc и clang в Linux; другие установки могут плакать кровью. Попробуйте это на Ideone .
источник
Фактор , 28 байт
для unix-лайков. Я не знаю, как это сделать на Windows, так как я не на Windows box.
источник
JQ, 18 символов
(16 символов кода + 2 символа командной строки)
Образец прогона:
источник
Awk,
5144 персонажаБлагодаря:
gsub()
вместо манипулирования встроенными переменными (-7 символов)Типичным
awk
способом было бы установить встроенные переменные, которые влияютawk
на автоматическую обработку данных:Образец прогона:
источник
awk
образом. Спасибо.Node.js, 36 байт
Довольно прямо вперед.
источник
MATLAB, 34 байта
Вот онлайн-демонстрация в Octave с небольшой модификацией, поскольку
strrep
в октаве второй и третий входные данные должны бытьchar
переменными, а не числовыми значениями.источник
R, 38 байт
Возьмите $ PATH, замените его
:
на новые строки и напечатайте в stdout. Вы можете попробовать это онлайн здесь.источник
Groovy, 43 байта
источник
Гема, 36 знаков
Образец прогона:
источник
Отпечаток пальца Befunge-98 + EVAR, 34 байта
Загружает EVAR fingerprint (
"RAVE"4(
) для легкого доступа к переменным окружения, получает PATH envvar ("HTAP"G
) и для каждого символа выходит из программы, если символ «\ 0» (:!k@
), вычитает ASCII 48 «0», если char - ASCII 58 ":" (:':-!'0*-
) и выводит символ (,
).источник
ELF / x86, 78 байт
NASM источник:
источник