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>
Respostas:
Golfscript, 27 caracteres
A árvore resultante é assim:
Uma versão que usa o parâmetro height apenas uma vez tem mais um caractere:
A leitura da altura do stdin (com a entrada "10" para gerar a árvore de exemplo) requer a mesma quantidade de caracteres (28):
fonte
Sei que isso não está de acordo com as especificações, mas pensei em tentar adicionar um pouco de diversidade às árvores aqui imitando essa cena clássica de Natal de arte ASCII de Joan G. Stark .
Não tentei reproduzir a imagem inteira - isso teria sido um pouco demais -, mas apenas a árvore, para a qual apresento este programa Perl de 138 bytes:
E, claro, aqui está uma amostra da saída:
Experimente online!
O código usa o
say
recurso Perl 5.10+ e, portanto, precisa ser executado com a opção de linha de comando-M5.010
(ou-E
). (Na verdade, apenas substituir osay
no final porprint
evitaria isso, ao custo de mais dois bytes e a perda da nova linha após a última linha de saída.)Observe que a maior parte da árvore é gerada aleatoriamente, portanto a colocação dos ornamentos varia entre as corridas. O anjo, o suporte e a fileira superior da árvore são fixos.
Para impedir que essa resposta popular seja sumariamente excluída em uma política instituída após a publicação , aqui está uma solução compatível com especificações de token (45 bytes, também Perl 5):
Experimente online!
Como o programa acima, este também precisa ser executado no Perl 5.10+ com a
-M5.010
opção para ativar osay
recurso. Obviamente (esse é um desafio de complexidade kolmogorov ), ele produz exatamente a mesma saída chata que todas as outras entradas compatíveis, que eu não vou nem repetir aqui. (Também é redimensionável trivialmente, alterando o número10
para qualquer outro valor.)fonte
GolfScript (33 caracteres)
Versão de altura fixa:
Ou exatamente pelo mesmo comprimento
A árvore é notavelmente semelhante à de todos os outros:
Versão que tira a altura do stdin:
O início da linha anterior é um dos melhores smilies que fiz em um programa GolfScript "útil".
fonte
Script de shell, 44 caracteres
Imprime esta árvore:
fonte
Maple, 30/37 caracteres
Inspirado na entrada Mathematica de Mr.Wizard , apresento este comando Maple 12 de 30 caracteres:
Saída:
Também posso me livrar dos colchetes ao custo de mais sete caracteres:
Saída omitida - parece exatamente como acima, apenas sem os colchetes. Infelizmente, não sei como impedir o Maple de inserir linhas em branco entre as linhas de saída no modo de texto. Parece melhor no modo de planilha clássico. Acho que poderia incluir uma captura de tela ...
(A captura de tela mostra uma versão anterior de 44 caracteres do comando, mas estou com preguiça de refazê-lo. A saída ainda é a mesma.)
Ah, e sim, o tamanho é totalmente ajustável: basta substituir o 8 por n -2 para uma árvore com n linhas. Com a primeira solução, ir acima de 25 linhas (ou 10 na GUI) também requer a configuração da interface (rtablesize = n ).
(Ps. Pensei ter conseguido vencer o GolfScript com a versão mais recente, mas infelizmente ... )
fonte
Perl, 42 caracteres
Saída:
A altura da árvore pode ser alterada entre 1 e 11 linhas, substituindo
8
no final pelos valores de-1
para9
. Ir acima das 11 linhas requer também o aumento dos dois9
s anteriores no código, que controlam a que distância do lado esquerdo da tela a árvore é recuada.fonte
Groovy, 65
Surpreendentemente, a árvore fica assim:
fonte
Ruby, 46 caracteres
Para alterar a altura, você teria que alterar os 8s e, claro, também os 9. A saída do programa é a seguinte:
Edit : Indesculpável eu omiti a saída na primeira submissão.
fonte
PowerShell, 41
Sem surpresa, gera a mesma árvore que a de todos os outros :-p
Se você parametrizar esse 8, ele produzirá até o tamanho do seu console, digamos, 48 caracteres :
Ou, como um script completo que usa um argumento, 53 caracteres :
Chamado, parece com:
fonte
Python 3: 62 caracteres
Saída:
Observe que isso basicamente supera a resposta de @ Ante em 11 caracteres, porque essa resposta, quando convertida em Python 3, usa 73 caracteres.
Altere cada um
9
para outro valor para uma altura diferente.fonte
for
.Python, 59
fonte
print
não é uma função).Prolog: 183 ou 186
Impressões:
Pode ser espremido ainda mais para certos intérpretes (por exemplo, usando tab / 1 no SWI)
Invoque com x (N). Onde N é o número de linhas na árvore real (excluindo estrela). Dando-lhe uma altura fixa, o número desceria para 183
fonte
C
Esta é a versão C de Wade Tandy, mas modificada um pouco:
fonte
Mathematica, 50
fonte
Applesoft BASIC, 143 caracteres
Como essa pergunta me lembra uma tarefa de casa que eu tinha no ensino médio (quando eles ensinavam em uma Apple // e):
Usei o JavaScript Applesoft BASIC encontrado aqui: http://www.calormen.com/applesoft/
SAÍDA:
fonte
Prolog: 127 caracteres
Saída:
Usado
Prolog
porque eu não consegui bater oGroovy
recorde sem olhar para o código dele :(.fonte
PostScript (com altura parametrizada), 114 caracteres
Saída:
O que você queria imprimir?
fonte
JavaScript (Rhino: 108, Nó: 114, Console de desenvolvimento da Webkit: 119, Plug-in do jQuery: 132)
O Rhino é o mais curto (com 108 caracteres) porque (a) sua
print
função tem um nome abreviado e (b) permite atribuir funções internas a um nome de variável mais curto. Tão:O Node.js chega em um segundo próximo (a 114 caracteres) porque sua função de impressão
console.log
tem um nome mais longo, mas nos permitirá atribuir isso a uma variável curta:No entanto, o Webkit Dev Console (e provavelmente o Firebug também) acha que
p=console.log
é um pouco furtivo (quando você tenta ligarp()
, ele reclama com você). Então, temos que estender as coisas para 119 caracteres:(Curiosamente,
with
apenas nos salva um personagem).Finalmente ... um plugin jQuery (ainda twittável em 132 caracteres!):
E você pode invocá-lo no rodapé desta página:
$('#footer').xms(3)
Claro, ele não precisa ser um plug-in ... já que provavelmente teríamos que usar um console JavaScript para adicioná-lo a uma página e invocá-lo, poderíamos ter feito apenas um trecho de jQuery :
que pesa 116 caracteres mais competitivos - na verdade, supera a outra implementação do console de desenvolvedor. Mas, novamente, usar o jQuery e / ou o mecanismo de layout do navegador pode ser considerado trapaça. :)
fonte
C, 67
Sei que isso acabou há muito tempo, mas é minha primeira tentativa de código de golfe e acho que tenho uma solução C muito boa.
Curiosamente, eu vim com isso independentemente da solução muito semelhante da @ Patrick.
E sim, não vou ganhar nenhum vínculo com meus valores codificados;) Estou bastante satisfeito, de qualquer maneira.
fonte
Oráculo
fonte
PHP, 106 caracteres
7 menos que o anterior:
fonte
<?=
e salve outros 5 no "eco".LOLCODE, 527 bytes
Experimente online!
Saída:
fonte
Python, 70 caracteres
Solução não tão curta, mas recursiva :-)
Mude 8 para definir a altura.
fonte
Javascript, 119 caracteres
Saídas para o console do firebug
fonte
PHP 113
Achei que eu gritei com uma versão php:
113 caracteres (ajuste
$h
para alterar a altura, o número de linhas inclui a estrela):Eu tentei torná-lo curto, não legível e já sabíamos que o php não pode competir com concisão, então isso não vai ganhar nada, ainda é um pequeno quebra-cabeça divertido.
saída é como spec:
fonte
C, 77
Antes de ler a especificação printf com mais cuidado, eu tinha esse número bonitinho até 138 caracteres:
fonte
Java, 192 (198 com 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 a árvore solicitada:
Para altura variável, um pouco mais:
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="";}}}
O comprimento da lista de argumentos da linha de comando determina a altura (por exemplo
java W a a a a a
, fornecerá a altura 5).(Esta é basicamente a versão Java da solução C de Wade Tandy.)
fonte
while (++i < c) {
->for (s += "*";++i < c;s = "") {
, e remover os += "*";
es = "";
Vim, 18 bytes
Experimente on-line no interpretador V compatível com versões anteriores!
Embora essa seja uma abordagem muito semelhante à minha resposta em V, essa não é competitiva, pois o vim é velho e louco. :)
Explicação:
fonte
Scala, 74 bytes
h
- altura da árvoreSaída
fonte
C, 80
Inicialize k para a altura da árvore, i para k-1. F é o sinalizador de primeira linha. Se não houver argumento, F deve ser 1 na entrada.
Uma versão ligeiramente mais longa (81) em que f não é um sinalizador de primeira linha:
fonte