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>
Antworten:
Z-Shell (zsh), 13 Bytes
Verwendet den
$path
Parameter , einen speziellen Array-Parameter, der von der an den Parameter gebundenen Shell verwendet wird$PATH
, und ein Parametererweiterungsflag , um ein Array mit Zeilenumbrüchen zu verbinden.quelle
alias path="<<<${(F)path}"
aber wenn es ausgeführt wird,/usr/local/bin zsh: no such file or directory: /Library/Apple/usr/bin zsh: no such file or directory: /Library/Apple/bin
dann geht es ansbin
alias path='<<<${(F)path}'
Bash / Coreutils,
17 bis16 Bytesquelle
tr : '\n'<<<$PATH
sollte auch funktionieren<<<
(nur auf Ubuntu getestet)\\n
gespeichert , aber die Verwendung anstelle der angegebenen Variablen ist imho besser lesbar.Batch, 41 Bytes
PATH
ist unter Windows natürlich durch Semikolons getrennt. Praktischerweisefor
wird standardmäßig auf Semikolons aufgeteilt, aber unpraktisch auch auf Leerzeichen. Daher muss ich das Ersetzen von Zeichenfolgen verwenden, um jedes Pfadelement vor dem Aufteilen in Anführungszeichen zu setzen. Es bleibt dann übrig, die Anführungszeichen danach zu entfernen.quelle
%%
mit%
Speichern 2 Byte.Z-Shell (zsh), 15 Bytes
Sie können den Code auf Anarchy Golf testen : Klicken Sie auf Formular verwenden , wählen Sie zsh aus , fügen Sie den Code ein und senden Sie ihn ab.
Bash (rein), 19 Bytes
Dieselbe Idee, aber mit Bashs weniger golfiger Syntax. Teste es auf Ideone .
quelle
Powershell, 20 Bytes
Bearbeiten:
Alt:
quelle
Ruby, 25 Bytes
quelle
split ":"
zusplit":"
odersplit ?:
für 1 Byte wechseln .Perl, 22 Bytes
Bedürfnisse
-E
oder-M5.010
zu laufen:quelle
Bash + Python, 43 Bytes
Verwenden wir die variable Expansion der Shell. Es entfällt das Aufrufen
os.environ
, somit weniger Code und weniger Importe. Das gibt uns 46 Bytes, und mitxnor
's Trick und Entfernen von Speicherplatz, bevor-c
wir 43 Bytes haben.quelle
Java, 58 Bytes
Volles Programm: 106 Bytes
quelle
GNU
sed
+bash
, 25 Bytes:Wenn der
PATH
keine Verzeichnisnamen mit Leerzeichen enthält, keine Anführungszeichen erforderlich, 23 Bytes:Noch kürzer,
:
dank @Dennis in Newline umwandelnd :quelle
Vim, 19 Bytes
"=$PATH<CR>p:s/:/\r/g<CR>
Entnehmen Sie
$PATH
dem Ausdrucksregister und fügen Sie es ein.:
Verwandle das s in Zeilenumbrüche. Nichts kniffliges.quelle
PHP,
36353332 Bytes1 Byte gespeichert, dank Blackhole
2 Byte gespeichert , dank User59178
1 Byte gespeichert, dank Martijn
* nix version
Windows-Version
quelle
*nix
ist nur eine Möglichkeit, sich auf ein Unix-ähnliches System zu beziehen .PATH_SEPARATOR
\n
, sondern eine echte Newline, um ein Byte zu sparen."
s auch herum fallen lassenPATH
. Sie erhalten den Hinweis "Verwendung undefinierter Konstanten", der jedoch weiterhin funktioniert und Ihnen 2 Byte spart.<?=strtr(getenv(PATH),":","")?>
sichert ein Byte (* in Kommentaren kann kein Zeilenumbruch erfolgen)Python 2, 49 Bytes
Sparen von 2 Bytes dank @xnor und 1 Byte durch Ersetzen
environ
durchgetenv
dank @Serg und @OliverFügen Sie für Python 3 einfach
(
und)
um dasprint
Argument herum 1 zur Byteanzahl hinzu.quelle
replace
kann gepackte Argumente nehmenreplace(*':\n')
.C,
8584 Bytes-1 Byte für die Verwendung
#import
quelle
Schläger 39 Bytes
Mit sed Befehl von @heemayl:
Ungolfed:
Prüfung:
(f)
Ausgabe:
quelle
Scala, 31 Bytes
In Scala
a b c
ist syntaktischer Zucker füra.b(c)
, so dass dieser kompiliert wirdsys.env("PATH").replace(':','\n')
quelle
Perl 6 ,
28 2524 Bytesquelle
C #, 64 Bytes
Anonyme Funktion, die die Pfadvariable zurückgibt, wobei sich jedes Verzeichnis in einer separaten Zeile befindet. Beachten Sie, dass dies
x
nur ein Dummy-Objekt ist, um 1 Byte zu speichern, anstatt es zu verwenden()
.Volles Programm:
Funktioniert auch auf UNIX - Systemen , wenn Sie ersetzen
;
mit:
, vorausgesetzt Mono Bibliotheken verfügbar sind. Probieren Sie es online auf ideone aus . .NET Fiddle gibt eine Sicherheitsausnahme zurück.Alternativ ein vollständiges C # -Programm, das ziemlich ausführlich ist:
C #, 118 Bytes
quelle
Haskell, 72 Bytes
Ein teurer Import und nein
replace
innerhalb der Standardbibliothek machen es ziemlich lang.quelle
m ':'...
braucht diesen platz sicher nicht?'
es sich um ein gültiges Zeichen in Bezeichnern handelt. Ohne Leerzeichen würden wir eine Funktion namens definierenm'
.C (x86), 60 Bytes
Dies funktioniert nicht auf 64-Bit-Plattformen ohne die Angabe von stdlib.h , da getenv einen int zurückgibt (32 Bits) , während char - Zeiger sind 64 Bit breit.
Ich habe noch keinen 32-Bit-C-Online-Compiler gefunden.
C (x86-64), 70 Bytes
Anstatt stdlib.h einzuschließen , deklarieren wir getenv als eine Funktion, die a zurückgibt char - Zeiger.
Ich habe das mit gcc getestet und unter Linux geklingelt. andere Setups können Blut schreien. Probieren Sie es auf Ideone .
quelle
Faktor 28 Bytes
für unix-likes. Ich weiß nicht, wie ich es unter Windows machen soll, da ich nicht an einer Windows-Box bin.
quelle
jq, 18 Zeichen
(16 Zeichen Code + 2 Zeichen Befehlszeilenoption)
Probelauf:
quelle
Awk,
5144 ZeichenDank an:
gsub()
eingebaute Variablen (-7 Zeichen) zu verwenden, anstatt sie zu manipulierenDer typische
awk
Weg wäre, die eingebauten Variablen einzurichten, die beeinflussen, wieawk
die Daten automatisch manipuliert werden:Probelauf:
quelle
awk
Weise zu tun . Vielen Dank.Node.js, 36 Bytes
Ziemlich einfach.
quelle
MATLAB, 34 Bytes
Hier ist eine Online-Demo in Octave mit einer geringfügigen Änderung, da
strrep
in Octave die zweiten und dritten Eingabenchar
Variablen und keine numerischen Werte sein müssen.quelle
R, 38 Bytes
:
Nehmen Sie den $ PATH, ersetzen Sie ihn durch Zeilenumbrüche und drucken Sie ihn nach stdout. Sie können es hier online ausprobieren.quelle
Groovy, 43 Bytes
quelle
Gema, 36 Zeichen
Probelauf:
quelle
Befunge-98 + EVAR-Fingerabdruck, 34 Bytes
Lädt den EVAR-Fingerabdruck (
"RAVE"4(
), um auf Umgebungsvariablen leicht zugreifen zu können, ruft den Pfad envvar ("HTAP"G
) ab und beendet das Programm für jedes Zeichen, wenn das Zeichen "\ 0" (:!k@
) ist, subtrahiert ASCII 48 "0", wenn das Zeichen ASCII 58 ist ":" (:':-!'0*-
) und gibt das Zeichen (,
) aus.quelle
ELF / x86, 78 Bytes
NASM-Quelle:
quelle