var QUESTION_ID=4114,OVERRIDE_USER=73772;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:
Golfscript, 27 Zeichen
Der resultierende Baum sieht folgendermaßen aus:
Eine Version, die den Parameter height nur einmal verwendet, ist ein Zeichen länger:
Das Lesen der Höhe von stdin (mit der Eingabe "10", um den Beispielbaum zu erzeugen) benötigt die gleiche Anzahl von Zeichen (28):
quelle
Ich weiß, dass dies nicht der Spezifikation entspricht, aber ich dachte, ich würde versuchen, den Bäumen hier etwas Abwechslung zu verleihen, indem ich diese klassische ASCII-Kunst-Weihnachtsszene von Joan G. Stark imitiere .
Ich habe nicht versucht, das ganze Bild zu reproduzieren - das wäre ein bisschen zu viel gewesen -, sondern nur den Baum, für den ich dieses 138-Byte-Perl-Programm präsentiere:
Und hier ist natürlich ein Beispiel für die Ausgabe:
Probieren Sie es online!
Der Code verwendet die Perl 5.10+
say
-Funktion und muss daher mit der Befehlszeilenoption-M5.010
(oder-E
) ausgeführt werden. (Tatsächlich würde nur das Ersetzen dessay
am Ende durch dasprint
das vermeiden, auf Kosten von zwei weiteren Bytes und dem Verlust der Newline nach der letzten Ausgabezeile.)Beachten Sie, dass der Großteil des Baums zufällig generiert wird, sodass die Platzierung der Ornamente zwischen den Läufen variiert. Der Engel, der Ständer und die oberste Baumreihe sind jedoch fixiert.
Um zu verhindern, dass diese beliebte Antwort im Rahmen einer Richtlinie gelöscht wird , die nach dem Posten eingerichtet wurde , finden Sie hier auch eine Lösung, die den Tokenspezifikationen entspricht (45 Byte, auch Perl 5):
Probieren Sie es online!
Wie das obige Programm muss auch dieses unter Perl 5.10+ mit dem
-M5.010
Schalter ausgeführt werden, um diesay
Funktion zu aktivieren . Offensichtlich (dies ist eine Herausforderung der Kolmogorov-Komplexität ) erzeugt es genau die gleiche langweilige Ausgabe wie alle anderen kompatiblen Einträge, die ich hier nicht wiederholen werde. (Die Größe kann auch geringfügig geändert werden, indem die Zahl10
in einen anderen Wert geändert wird .)quelle
GolfScript (33 Zeichen)
Version mit fester Höhe:
Oder für genau die gleiche Länge
Der Baum sieht allen anderen bemerkenswert ähnlich:
Version welche die Höhe von stdin annimmt:
Der Anfang der vorherigen Zeile ist einer der besseren Smilies, die ich in einem "nützlichen" GolfScript-Programm gemacht habe.
quelle
Shell-Skript, 44 Zeichen
Druckt diesen Baum:
quelle
Ahorn, 30/37 Zeichen
Inspiriert von Mr.Wizard's Mathematica-Eintrag präsentiere ich diesen Maple 12-Befehl mit 30 Zeichen:
Ausgabe:
Ich kann die Klammern auch auf Kosten von sieben weiteren Zeichen loswerden:
Ausgabe weggelassen - es sieht genauso aus wie oben, nur ohne die Klammern. Leider kann ich Maple nicht davon abhalten, im Textmodus Leerzeilen zwischen die Ausgabezeilen einzufügen. Im klassischen Arbeitsblattmodus sieht es besser aus. Ich denke, ich könnte einen Screenshot hinzufügen ...
(Der Screenshot zeigt eine frühere 44-Zeichen-Version des Befehls, aber ich bin zu faul, um sie erneut auszuführen. Die Ausgabe ist immer noch dieselbe.)
Oh, und ja, die Größe ist vollständig einstellbar: Ersetzen Sie einfach die 8 durch n -2 für einen n- Zeilen-Baum. Bei der ersten Lösung muss für mehr als 25 Zeilen (oder 10 in der GUI) auch die Schnittstelle festgelegt werden (rtablesize = n ).
(Ps. Ich dachte, ich hätte es geschafft, GolfScript mit der neuesten Version zu schlagen , aber leider ... )
quelle
Perl, 42 Zeichen
Ausgabe:
Die Höhe des Baums kann zwischen 1 und 11 Zeilen geändert werden, indem
8
am Ende die Werte von-1
bis angegeben werden9
. Wenn Sie über 11 Zeilen hinausgehen, müssen Sie auch die zwei9
Sekunden früher im Code erhöhen , um zu steuern, wie weit der Baum von der linken Seite des Bildschirms eingerückt ist.quelle
Groovy, 65 Jahre alt
Überraschenderweise sieht der Baum so aus:
quelle
Ruby, 46 Zeichen
Um die Höhe zu ändern, müssten Sie beide 8er und natürlich auch die 9er ändern. Die Ausgabe des Programms ist wie folgt:
Edit : Unentschuldlicherweise habe ich die Ausgabe in der ersten Einreichung weggelassen.
quelle
PowerShell, 41
Es überrascht nicht, dass derselbe Baum ausgegeben wird wie der von allen anderen :-p
Wenn Sie diese 8 parametrisieren, ergibt sich eine Konsolengröße von bis zu 48 Zeichen :
Oder, als vollwertiges Skript, das ein Argument enthält, 53 Zeichen :
Genannt sieht es so aus:
quelle
Python 3: 62 Zeichen
Ausgabe:
Beachten Sie, dass dies im Wesentlichen die Antwort von @ Ante um 11 Zeichen übertrifft, da diese Antwort bei der Konvertierung in Python 3 73 Zeichen verwendet.
Ändern Sie jeweils
9
einen anderen Wert für eine andere Höhe.quelle
for
.Python, 59
quelle
print
keine Funktion).Prolog: 183 oder 186
Drucke:
Könnte für bestimmte Dolmetscher weiter gedrückt werden (z. B. mit Tabulator / 1 auf SWI)
Rufe mit x (N) auf. Wobei N die Anzahl der Zeilen im tatsächlichen Baum ist (ohne Stern). Eine feste Höhe würde es auf 183 senken
quelle
C
Dies ist die C-Version von Wade Tandy, die jedoch ein wenig modifiziert wurde:
quelle
Mathematica, 50
quelle
Applesoft BASIC, 143 Zeichen
Da diese Frage mich an eine Hausaufgabe erinnert, die ich in der High School hatte (als sie auf einem Apple // e unterrichteten):
Ich habe das JavaScript Applesoft BASIC verwendet, das hier zu finden ist: http://www.calormen.com/applesoft/
AUSGABE:
quelle
Prolog: 127 Zeichen
Ausgabe:
Verwendet,
Prolog
weil ich denGroovy
Rekord nicht schlagen konnte, ohne auf seinen Code zu schauen :(.quelle
PostScript (mit parametrierter Höhe), 114 Zeichen
Ausgabe:
Was, Sie wollten, dass es ausgedruckt wird?
quelle
JavaScript (Rhino: 108, Knoten: 114, Webkit-Entwicklerkonsole: 119, jQuery-Plugin: 132)
Rhino ist das kürzeste (mit 108 Zeichen), da (a) seine
print
Funktion einen Kurznamen hat und (b) Sie integrierte Funktionen einem kürzeren Variablennamen zuordnen können. So:Node.js kommt in einer knappen Sekunde (mit 114 Zeichen), weil seine Druckfunktion
console.log
einen längeren Namen hat, aber wir können das auch einer kurzen Variablen zuweisen:Die Webkit Dev Console (und wahrscheinlich auch Firebug) ist jedoch der Meinung, dass sie
p=console.log
etwas zu hinterhältig ist (wenn Sie versuchen anzurufenp()
, wird sie sich über Sie beschweren). Also müssen wir die Länge auf 119 Zeichen verlängern:(Interessanterweise
with
rettet uns nur ein Charakter).Endlich ... ein jQuery-Plugin (noch tweetbar mit 132 Zeichen!):
Und Sie können es in der Fußzeile dieser Seite aufrufen:
$('#footer').xms(3)
Natürlich muss es kein Plugin sein ... da wir wahrscheinlich eine JavaScript-Konsole verwenden müssten, um es einer Seite hinzuzufügen und aufzurufen, hätten wir einfach einen Ausschnitt aus jQuery machen können :
Das entspricht 116 konkurrenzfähigeren Zeichen - in der Tat übertrifft es die andere Implementierung der Entwicklerkonsole. Andererseits kann die Verwendung von jQuery und / oder der Layout-Engine des Browsers als Betrug angesehen werden. :)
quelle
C 67
Ich weiß, dass dies schon lange vorbei ist, aber es ist mein erster Versuch, Code Golf zu spielen, und ich denke, ich habe eine ziemlich gute C-Lösung.
Interessanterweise habe ich diese unabhängig von @ Patricks sehr ähnlicher Lösung gefunden.
Und ja, ich werde keine Verbindung mit meinen fest codierten Werten gewinnen;) Ich bin jedenfalls sehr zufrieden.
quelle
Orakel
quelle
PHP, 106 Zeichen
7 weniger als die vorherigen:
quelle
<?=
und speichern Sie weitere 5 aus dem "Echo".LOLCODE, 527 Bytes
Probieren Sie es online!
Ausgabe:
quelle
Python, 70 Zeichen
Nicht so kurz, aber rekursive Lösung :-)
Ändern Sie die 8, um die Höhe einzustellen.
quelle
Javascript, 119 Zeichen
Ausgaben an die Firebug-Konsole
quelle
PHP 113
Ich dachte, ich würde mit einer PHP-Version einsteigen:
113 Zeichen (anpassen
$h
, um die Höhe zu ändern, die Anzahl der Zeilen enthält den Stern):Ich habe versucht, es kurz und nicht lesbar zu machen, und wir wussten bereits, dass PHP nicht konkurrieren kann, also wird dies nichts gewinnen, immer noch ein lustiges kleines Rätsel.
Die Ausgabe erfolgt wie folgt:
quelle
C 77
Bevor ich die printf-Spezifikation genauer durchgelesen habe, hatte ich diese kleine Zahl mit 138 Zeichen:
quelle
Java, 192 (198 mit Parameter)
class V{public static void main(String[]a){int c=10,i=-1,j=0;String s="";while(j++<c)s+=" ";s+="*";while(++i<c){for(j=-2;++j<c-i;)s+=" ";for(j=0;++j<2*i;)s+="0";System.out.println(s);s="";}}}
Druckt den angeforderten Baum:
Bei variabler Höhe etwas länger:
class W{public static void main(String[]a){int c=a.length,i=-1,j=0;String s="";while(j++<c)s+=" ";s+="*";while(++i<c){for(j=-2;++j<c-i;)s+=" ";for(j=0;++j<2*i;)s+="0";System.out.println(s);s="";}}}
Die Länge der Befehlszeilenargumentliste bestimmt die Höhe (z. B.
java W a a a a a
gibt Höhe 5 an).(Dies ist im Grunde die Java-Version der C-Lösung von Wade Tandy.)
quelle
while (++i < c) {
->for (s += "*";++i < c;s = "") {
und dass += "*";
und dass = "";
Vim, 18 Bytes
Probieren Sie es online im abwärtskompatiblen V-Interpreter aus!
Obwohl dies ein sehr ähnlicher Ansatz wie meine V Antwort ist, dann ist dies eine nicht da vim nicht konkurrierenden verrückt alt ist. :)
Erläuterung:
quelle
Scala, 74 Bytes
h
- Höhe des BaumesAusgabe
quelle
C 80
Initialisiere k auf die Baumhöhe, i auf k-1. F ist das Flag der ersten Zeile. Ohne Argument sollte F bei der Eingabe 1 sein.
Eine etwas längere (81) Version, in der f kein Flag der ersten Zeile ist:
quelle