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>
Réponses:
Golfscript, 27 caractères
L'arbre résultant ressemble à ceci:
Une version qui n'utilise le paramètre de hauteur qu'une seule fois a un caractère de plus:
La lecture de la hauteur à partir de stdin (avec l'entrée "10" pour générer l'arbre d'exemple) prend la même quantité de caractères (28):
la source
Je sais que cela ne correspond pas aux spécifications, mais j'ai pensé que j'essaierais d'ajouter de la diversité aux arbres ici en imitant cette scène de Noël classique ASCII de Joan G. Stark .
Je n'ai pas essayé de reproduire l'image entière - cela aurait été un peu trop - mais juste l'arbre, pour lequel je présente ce programme Perl de 138 octets:
Et, bien sûr, voici un échantillon de la sortie:
Essayez-le en ligne!
Le code utilise la fonctionnalité Perl 5.10+
say
, et doit donc être exécuté avec le commutateur de ligne de commande-M5.010
(ou-E
). (En fait, le simple fait de remplacer lesay
à la fin parprint
éviterait cela, au prix de deux octets de plus et la perte de la nouvelle ligne après la dernière ligne de sortie.)Notez que la majeure partie de l'arbre est générée de manière aléatoire, de sorte que le placement des ornements variera d'une série à l'autre. L'ange, le support et la rangée supérieure de l'arbre sont cependant fixes.
Pour éviter que cette réponse populaire ne soit supprimée sommairement dans le cadre d' une stratégie instituée après sa publication , voici également une solution conforme aux spécifications des jetons (45 octets, également Perl 5):
Essayez-le en ligne!
Comme le programme ci-dessus, celui-ci doit également être exécuté sur Perl 5.10+ avec le
-M5.010
commutateur pour activer lasay
fonctionnalité. De toute évidence (ceci étant un défi de complexité kolmogorov ), il produit exactement la même sortie ennuyeuse que toutes les autres entrées conformes, que je ne prendrai pas la peine de répéter ici. (Il est également facilement redimensionnable en changeant le nombre10
en toute autre valeur.)la source
GolfScript (33 caractères)
Version à hauteur fixe:
Ou pour exactement la même longueur
L'arbre ressemble remarquablement à tout le monde:
Version qui prend de la hauteur de stdin:
Le début de la ligne précédente est l'un des meilleurs smileys que j'ai faits dans un programme GolfScript "utile".
la source
Script shell, 44 caractères
Imprime cet arbre:
la source
Érable, 30/37 caractères
Inspiré par l'entrée Mathematica de Mr.Wizard , je présente cette commande Maple 12 de 30 caractères:
Sortie:
Je peux également me débarrasser des crochets au prix de sept caractères supplémentaires:
Sortie omise - elle ressemble à celle ci-dessus, mais sans les crochets. Malheureusement, je ne connais aucun moyen d'empêcher Maple d'insérer des lignes vides entre les lignes de sortie en mode texte. Il semble meilleur en mode feuille de calcul classique. Je suppose que je pourrais inclure une capture d'écran ...
(La capture d'écran montre une version antérieure de 44 caractères de la commande, mais je suis trop paresseux pour la reprendre. La sortie est toujours la même.)
Oh, et oui, la taille est entièrement réglable: remplacez simplement le 8 par n -2 pour un arbre à n- flèches. Avec la première solution, aller au-dessus de 25 lignes (ou 10 dans l'interface graphique) nécessite également de définir l'interface (rtablesize = n ).
(Ps. Je pensais avoir réussi à battre GolfScript avec la dernière version, mais hélas ... )
la source
Perl, 42 caractères
Sortie:
La hauteur de l'arbre peut être modifiée entre 1 et 11 lignes en remplaçant le
8
à la fin par les valeurs de-1
à9
. Aller au-dessus de 11 lignes nécessite également d'augmenter les deux9
s plus tôt dans le code, qui contrôlent la distance entre le côté gauche de l'écran et l'arborescence.la source
Groovy, 65
Étonnamment, l'arbre ressemble à ceci:
la source
Ruby, 46 caractères
Afin de changer la hauteur, vous devez changer les deux 8 et bien sûr aussi le 9. La sortie du programme est la suivante:
Edit : Inexcusably j'ai omis la sortie dans la première soumission.
la source
PowerShell, 41
Sans surprise, génère la même arborescence que celle de tout le monde :-p
Si vous paramétrez ce 8, cela donnera jusqu'à la taille de votre console, en disons 48 caractères :
Ou, comme un script complet qui prend un argument, 53 caractères :
Appelé, il ressemble à:
la source
Python 3: 62 caractères
Sortie:
Notez que cela dépasse essentiellement la réponse de @ Ante de 11 caractères, car cette réponse, lorsqu'elle est convertie en Python 3, utilise 73 caractères.
Remplacez chacun
9
par une autre valeur pour une hauteur différente.la source
for
.Python, 59
la source
print
pas une fonction).Prolog: 183 ou 186
Tirages:
Pourrait être resserré davantage pour certains interprètes (par exemple en utilisant tab / 1 sur SWI)
Appelez avec x (N). Où N est le nombre de lignes dans l'arbre réel (à l'exclusion de l'étoile). Lui donner une hauteur fixe le ramènerait à 183
la source
C
Ceci est la version C de Wade Tandy mais modifiée un peu:
la source
Mathematica, 50
la source
Applesoft BASIC, 143 caractères
Étant donné que cette question me rappelle un devoir que j'avais de retour au lycée (quand ils enseignaient sur un Apple // e):
J'ai utilisé le JavaScript Applesoft BASIC trouvé ici: http://www.calormen.com/applesoft/
SORTIE:
la source
Prolog: 127 caractères
Sortie:
Utilisé
Prolog
car je n'ai pas pu battre leGroovy
record sans regarder son code :(.la source
PostScript (avec hauteur paramétrée), 114 caractères
Sortie:
Quoi, vous vouliez l'imprimer?
la source
JavaScript (Rhino: 108, Node: 114, Webkit Dev Console: 119, plugin jQuery: 132)
Rhino est le plus court (à 108 caractères) car (a) sa
print
fonction a un nom court et (b) il vous permettra d'assigner des fonctions intégrées dans un nom de variable plus court. Alors:Node.js vient juste après (à 114 caractères) parce que sa fonction d'impression
console.log
a un nom plus long, mais cela nous permettra également d'assigner cela à une courte variable:Cependant, la console de développement Webkit (et probablement Firebug aussi) pense que
p=console.log
c'est un peu trop sournois (lorsque vous essayez d'appelerp()
, cela va vous plaindre). Donc, nous devons allonger les choses à 119 caractères:(Fait intéressant,
with
ne nous sauve qu'un personnage).Enfin ... un plugin jQuery (toujours tweetable à 132 caractères!):
Et vous pouvez l'invoquer en pied de page de cette même page:
$('#footer').xms(3)
Bien sûr, il n'est pas nécessaire que ce soit un plugin ... puisque nous aurions probablement à utiliser une console JavaScript pour l'ajouter à une page et l'invoquer, nous aurions pu juste faire un extrait de jQuery :
qui pèse 116 caractères plus compétitifs - en fait, il bat l'autre implémentation de la console de développement. Mais, encore une fois, l'utilisation de jQuery et / ou du moteur de mise en page du navigateur peut être considérée comme de la triche. :)
la source
C, 67
Je sais que c'est fini depuis longtemps, mais c'est ma première tentative de golf de code, et je pense que j'ai une assez belle solution C.
Fait intéressant, j'ai trouvé cela indépendamment de la solution très similaire de @ Patrick.
Et oui, je ne gagnerai aucun lien avec mes valeurs codées en dur;) Je suis quand même très content.
la source
Oracle
la source
PHP, 106 caractères
7 de moins que le précédent:
la source
<?=
et enregistrez 5 autres dans "l'écho".LOLCODE, 527 octets
Essayez-le en ligne!
Sortie:
la source
Python, 70 caractères
Pas si court, mais solution récursive :-)
Changez les 8 pour régler la hauteur.
la source
Javascript, 119 caractères
Sorties vers la console Firebug
la source
PHP 113
J'ai pensé que je jouerais avec une version php:
113 caractères (ajustez
$h
pour changer la hauteur, le nombre de lignes inclut l'étoile):J'ai essayé de le rendre court, non lisible et nous savions déjà que php ne peut pas rivaliser sur la concision, donc cela ne va rien gagner, encore un petit puzzle amusant.
la sortie est comme spec:
la source
C, 77
Avant de lire la spécification printf plus attentivement, j'avais ce joli petit numéro à 138 caractères:
la source
Java, 192 (198 avec param)
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="";}}}
Imprime l'arborescence demandée:
Pour une hauteur variable, légèrement plus longue:
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="";}}}
La longueur de la liste des arguments de la ligne de commande détermine la hauteur (par exemple
java W a a a a a
, donnera la hauteur 5).(Il s'agit essentiellement de la version Java de la solution C de Wade Tandy.)
la source
while (++i < c) {
->for (s += "*";++i < c;s = "") {
, et supprimer les += "*";
et les = "";
Vim, 18 octets
Essayez-le en ligne dans l'interpréteur V rétrocompatible!
Bien que ce soit une approche très similaire à ma réponse en V, celle-ci est pas non concurrente car vim est un vieux fou. :)
Explication:
la source
Scala, 74 octets
h
- hauteur de l'arbreSortie
la source
C, 80
Initialisez k à la hauteur de l'arbre, i à k-1. F est le drapeau de première ligne. Étant donné aucun argument, alors F devrait être 1 à l'entrée.
Une version légèrement plus longue (81) où f n'est pas le drapeau de première ligne:
la source