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>
Respostas:
Shell Z (zsh), 13 bytes
Usa o
$path
parâmetro , que é um parâmetro de matriz especial usado pelo shell que está vinculado ao$PATH
parâmetro, e um sinalizador de expansão de parâmetro para ingressar em uma matriz com novas linhas.fonte
alias path="<<<${(F)path}"
mas quando executado imprime, em/usr/local/bin zsh: no such file or directory: /Library/Apple/usr/bin zsh: no such file or directory: /Library/Apple/bin
seguida, vai parasbin
alias path='<<<${(F)path}'
Bash / Coreutils,
1716 bytesfonte
tr : '\n'<<<$PATH
deve funcionar também #<<<
bem (testado no Ubuntu somente)\\n
vez da variável citada é imho mais legível.Lote, 41 bytes
PATH
é delimitado por ponto e vírgula no Windows, é claro. Convenientemente,for
divide-se em ponto-e-vírgula por padrão, mas inconvenientemente, também em espaços, por isso tenho que usar truques de substituição de string para citar cada elemento do caminho antes de dividir. Resta então remover as aspas posteriormente.fonte
%%
por%
salvar 2 bytes.Shell Z (zsh), 15 bytes
Você pode testar o código no Anarchy Golf : clique em usar formulário , selecione zsh , cole o código e envie.
Bash (puro), 19 bytes
A mesma idéia, mas com a sintaxe menos golfista de Bash. Teste em Ideone .
fonte
Powershell, 20 bytes
Editar:
Velho:
fonte
Ruby, 25 bytes
fonte
split ":"
parasplit":"
ousplit ?:
para 1 byte.Perl, 22 bytes
Precisa
-E
ou-M5.010
é executado:fonte
Bash + Python, 43 bytes
Vamos usar a expansão variável do shell. Elimina a chamada
os.environ
, portanto, menos código e menos importações. Isso nos dá 46 bytes, e comxnor
o truque e a remoção de espaço antes de-c
termos 43 bytes.fonte
Java, 58 bytes
Programa completo: 106 bytes
fonte
GNU
sed
+bash
, 25 bytes:Se
PATH
não houver um nome de diretório com espaço em branco, nenhuma citação será necessária, 23 bytes:Ainda mais curto, transliterando
:
para a nova linha, graças a @Dennis :fonte
Vim, 19 bytes
"=$PATH<CR>p:s/:/\r/g<CR>
Pegue
$PATH
no registro de expressão e cole-o. Transforme:
s em novas linhas. Nada complicado.fonte
PHP,
36353332 bytesGuardado 1 byte, graças ao Blackhole
Guardado 2 bytes, graças ao user59178
guardado 1 byte, graças ao Martijn
* versão nix
Versão do Windows
fonte
*nix
é apenas uma maneira de se referir a um sistema semelhante ao Unix .PATH_SEPARATOR
\n
, mas uma nova linha verdadeira poupará um byte."
s ao redorPATH
. Você recebe um aviso de "uso de constante indefinida", mas ainda funciona, economizando 2 bytes.<?=strtr(getenv(PATH),":","")?>
protege um byte (* não pode ser uma nova linha nos comentários) #Python 2, 49 bytes
Salvando 2 bytes graças a @xnor e 1 byte, substituindo
environ
porgetenv
obrigado a @Serg e @OliverPara Python 3, basta adicionar
(
e)
contornar oprint
argumento e adicionar 1 à contagem de bytes.fonte
replace
pode levar argumentos compactadosreplace(*':\n')
.C,
8584 bytes-1 byte para usar
#import
fonte
Raquete 39 bytes
Usando o comando sed de @heemayl:
Ungolfed:
Teste:
(f)
Saída:
fonte
Scala, 31 bytes
Em scala,
a b c
é o açúcar sintático paraa.b(c)
, então isso compila parasys.env("PATH").replace(':','\n')
fonte
Perl 6 ,
28 2524 bytesfonte
C #, 64 bytes
Função anônima que retorna a variável de caminho, cada diretório em uma linha separada. Observe que
x
é apenas um objeto fictício para salvar 1 byte em vez de usar()
.Programa completo:
Também funciona em sistemas UNIX se você substituir
;
por:
, presumindo que as bibliotecas Mono estejam disponíveis. Experimente online no ideone , o .NET Fiddle retorna uma exceção de segurança.Como alternativa, um programa C # completo, que é bastante detalhado:
C #, 118 bytes
fonte
Haskell, 72 bytes
Uma importação cara e não
replace
dentro da biblioteca padrão a tornam bastante longa.fonte
m ':'...
não precisa desse espaço?'
é um caractere válido nos identificadores. Sem espaço, definiríamos uma função denominadam'
.C (x86), 60 bytes
Isso não funcionará em plataformas de 64 bits sem incluir stdlib.h , pois o getenv retorna um int (32 bits) enquanto ponteiros de char têm 64 bits de largura.
Ainda não encontrei um compilador C de 32 bits online.
C (x86-64), 70 bytes
Em vez de incluir stdlib.h , declaramos getenv como uma função retornando um caracter ponteiro de .
Eu testei isso com gcc e clang no Linux; outras configurações podem chorar sangue. Experimente em Ideone .
fonte
Fator , 28 bytes
para curtidas de unix. Não sei como fazê-lo no Windows, pois não estou em uma caixa do Windows.
fonte
jq, 18 caracteres
(Código de 16 caracteres + opção de linha de comando de 2 caracteres)
Exemplo de execução:
fonte
Awk,
5144 caracteresGraças a:
gsub()
vez de manipular variáveis internas (-7 caracteres)A
awk
maneira típica seria configurar as variáveis internas que influenciam comoawk
manipula os dados automaticamente:Exemplo de execução:
fonte
awk
maneira específica. Obrigado.Node.js, 36 bytes
Bem direto.
fonte
MATLAB, 34 bytes
Aqui está uma demonstração online no Octave com uma ligeira modificação desde
strrep
no oitavo é necessário que a segunda e a terceira entradas sejamchar
variáveis, e não valores numéricos.fonte
R, 38 bytes
Pegue o $ PATH, substitua
:
por novas linhas e imprima para stdout. Você pode experimentá-lo online aqui.fonte
Groovy, 43 bytes
fonte
Gema, 36 caracteres
Exemplo de execução:
fonte
Impressão digital Befunge-98 + EVAR, 34 bytes
Carrega a impressão digital EVAR (
"RAVE"4(
) para acessar facilmente as variáveis de ambiente, obtém o PATH envvar ("HTAP"G
) e, para cada caractere, sai do programa se o caractere for "\ 0" (:!k@
), substrata ASCII 48 "0" se o caractere for ASCII 58 ":" (:':-!'0*-
) e gera o caractere (,
).fonte
ELF / x86, 78 bytes
Fonte NASM:
fonte