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>
Respuestas:
Golfscript, 27 caracteres
El árbol resultante se ve así:
Una versión que usa el parámetro de altura solo una vez es un carácter más largo:
Leer la altura de stdin (con la entrada "10" para generar el árbol de ejemplo) requiere la misma cantidad de caracteres (28):
fuente
Sé que esto no cumple con las especificaciones, pero pensé que trataría de agregar algo de diversidad a los árboles aquí imitando esta clásica escena navideña de arte ASCII de Joan G. Stark .
No traté de reproducir la imagen completa, hubiera sido demasiado, sino solo el árbol, para lo cual presento este programa Perl de 138 bytes:
Y, por supuesto, aquí hay una muestra de la salida:
Pruébalo en línea!
El código usa la función Perl 5.10+
say
, por lo que debe ejecutarse con el-M5.010
(o-E
) interruptor de línea de comando. (En realidad, solo reemplazandosay
al final conprint
evitaría eso, a costa de dos bytes más y la pérdida de la nueva línea después de la última línea de salida).Tenga en cuenta que la mayor parte del árbol se genera aleatoriamente, por lo que la colocación de los adornos variará entre las ejecuciones. Sin embargo, el ángel, el soporte y la fila superior del árbol están fijos.
Para evitar que esta respuesta popular se elimine sumariamente bajo una política instituida después de su publicación , aquí también hay una solución que cumple con las especificaciones de token (45 bytes, también Perl 5):
Pruébalo en línea!
Al igual que el programa anterior, este también debe ejecutarse en Perl 5.10+ con el
-M5.010
interruptor para habilitar lasay
función. Obviamente (esto es un desafío de complejidad kolmogorov ) produce exactamente el mismo resultado aburrido que todas las otras entradas compatibles, que no me molestaré en repetir aquí. (También es trivialmente redimensionable cambiando el número10
a cualquier otro valor).fuente
GolfScript (33 caracteres)
Versión de altura fija:
O exactamente por la misma longitud
El árbol se ve notablemente similar al de todos los demás:
Versión que toma altura de stdin:
El comienzo de la línea anterior es una de las mejores caritas que hice en un programa "útil" de GolfScript.
fuente
Script de shell, 44 caracteres
Imprime este árbol:
fuente
Arce, 30/37 caracteres
Inspirado por la entrada de Mr.Wizard en Mathematica , presento este comando Maple 12 de 30 caracteres:
Salida:
También puedo deshacerme de los corchetes a costa de siete caracteres más:
Salida omitida: se ve igual que arriba, solo sin los corchetes. Desafortunadamente, no conozco ninguna forma de evitar que Maple inserte líneas en blanco entre las filas de salida en modo de texto. Se ve mejor en el modo clásico de hoja de trabajo. Supongo que podría incluir una captura de pantalla ...
(La captura de pantalla muestra una versión anterior de 44 caracteres del comando, pero soy demasiado vago para volver a tomarlo. La salida sigue siendo la misma).
Ah, y sí, el tamaño es totalmente ajustable: simplemente reemplace el 8 con n -2 para un árbol n -row. Sin embargo, con la primera solución, superar las 25 filas (o 10 en la GUI) también requiere configurar la interfaz (rtablesize = n ).
(Ps. Pensé que había logrado vencer a GolfScript con la última versión, pero por desgracia ... )
fuente
Perl, 42 caracteres
Salida:
La altura del árbol se puede cambiar entre 1 y 11 filas reemplazando
8
al final con valores de-1
a9
. Ir por encima de 11 filas también requiere aumentar las dos9
s anteriores en el código, que controlan qué tan lejos del lado izquierdo de la pantalla está sangrado el árbol.fuente
Groovy, 65
Sorprendentemente, el árbol se ve así:
fuente
Ruby, 46 caracteres.
Para cambiar la altura, tendría que cambiar los 8 y, por supuesto, también el 9. La salida del programa es la siguiente:
Editar : inexcusablemente omití la salida en el primer envío.
fuente
PowerShell, 41
Como era de esperar, genera el mismo árbol que todos los demás :-p
Si parametriza ese 8, producirá hasta el tamaño de su consola, en, digamos, 48 caracteres :
O, como un guión completo que toma una discusión, 53 caracteres :
Llamado, se ve así:
fuente
Python 3: 62 caracteres
Salida:
Tenga en cuenta que esto esencialmente supera la respuesta de @ Ante en 11 caracteres, porque esa respuesta, cuando se convierte a Python 3, usa 73 caracteres.
Cambie cada uno
9
a otro valor para una altura diferente.fuente
for
.Python, 59
fuente
print
no es una función).Prólogo: 183 o 186
Huellas dactilares:
Podría exprimirse aún más para ciertos intérpretes (por ejemplo, usar tab / 1 en SWI)
Invocar con x (N). Donde N es el número de filas en el árbol real (excluyendo la estrella). Darle una altura fija lo reduciría a 183
fuente
do
Esta es la versión C de Wade Tandy pero modificada un poco:
fuente
Mathematica, 50
fuente
Applesoft BASIC, 143 caracteres
Como esta pregunta me recuerda una tarea que tenía en la escuela secundaria (cuando enseñaban en una Apple // e):
Usé JavaScript Applesoft BASIC que se encuentra aquí: http://www.calormen.com/applesoft/
SALIDA:
fuente
Prólogo: 127 caracteres.
Salida:
Utilizado
Prolog
porque no pude batir elGroovy
récord sin mirar su código :(.fuente
PostScript (con altura parametrizada), 114 caracteres
Salida:
¿Qué, querías que se imprimiera?
fuente
JavaScript (Rhino: 108, Nodo: 114, Consola de desarrollo de Webkit: 119, Complemento jQuery: 132)
Rhino es el más corto (con 108 caracteres) porque (a) su
print
función tiene un nombre corto y (b) le permitirá asignar funciones incorporadas en un nombre de variable más corto. Asi que:Node.js viene en un segundo cercano (en 114 caracteres) porque su función de impresión
console.log
tiene un nombre más largo, pero también nos permitirá asignarlo a una variable corta:Sin embargo, la consola de desarrollo de Webkit (y probablemente también Firebug) piensa que
p=console.log
es un poco astuto (cuando intentas llamarp()
, se quejará de ti). Entonces, tenemos que alargar las cosas a 119 caracteres:(Curiosamente,
with
solo nos ahorra un personaje).Finalmente ... un plugin jQuery (¡todavía tweetable a 132 caracteres!)
Y puede invocarlo en el pie de página de esta misma página:
$('#footer').xms(3)
Por supuesto, no tiene que ser un complemento ... ya que probablemente tendríamos que usar una consola de JavaScript para agregarlo a una página e invocarlo, podríamos haber hecho un fragmento de jQuery :
que pesa 116 caracteres más competitivos; de hecho, supera a la otra implementación de la consola de desarrollo. Pero, una vez más, usar jQuery y / o el motor de diseño del navegador podría considerarse una trampa. :)
fuente
C, 67
Sé que esto ha terminado hace mucho tiempo, pero es mi primer intento de golf de código, y creo que tengo una solución C bastante buena.
Curiosamente, se me ocurrió esto independientemente de la solución muy similar de @ Patrick.
Y sí, no ganaré ningún vínculo con mis valores codificados;) De todos modos, estoy bastante satisfecho.
fuente
Oráculo
fuente
PHP, 106 caracteres
7 menos que el anterior:
fuente
<?=
y guarde otros 5 del "eco".LOLCODE, 527 bytes
Pruébalo en línea!
Salida:
fuente
Python, 70 caracteres
No es tan corto, pero es una solución recursiva :-)
Cambiar 8 para establecer la altura.
fuente
Javascript, 119 caracteres
Salidas a la consola firebug
fuente
PHP 113
Imaginé que intercalaría con una versión de php:
113 caracteres (ajuste
$h
para cambiar la altura, el número de líneas incluye la estrella):Traté de hacerlo corto, no legible y ya sabíamos que php no puede competir en concisión, por lo que esto no va a ganar nada, aunque todavía es un pequeño rompecabezas divertido.
La salida es como especificaciones:
fuente
C, 77
Antes de leer las especificaciones de printf con más cuidado, tuve este pequeño y lindo número de 138 caracteres:
fuente
Java, 192 (198 con 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 el árbol solicitado:
Para altura variable, un poco más larga:
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 longitud de la lista de argumentos de la línea de comando determina la altura (por ejemplo
java W a a a a a
, dará la altura 5).(Esta es básicamente la versión Java de la solución C de Wade Tandy).
fuente
while (++i < c) {
->for (s += "*";++i < c;s = "") {
, y eliminar els += "*";
y els = "";
Vim, 18 bytes
¡Pruébelo en línea en el intérprete de V compatible con versiones anteriores!
Aunque este es un enfoque muy similar a mi respuesta V, este no es no competitivo ya que vim es una locura. :)
Explicación:
fuente
Scala, 74 bytes
h
- altura del árbolSalida
fuente
C, 80
Inicialice k a la altura del árbol, i a k-1. F es la bandera de primera línea. Sin ningún argumento, F debería ser 1 al ingresar.
Una versión un poco más larga (81) donde f no es un indicador de primera línea:
fuente