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>
Jawaban:
Golfscript, 27 karakter
Pohon yang dihasilkan terlihat seperti ini:
Versi yang menggunakan parameter ketinggian hanya sekali adalah satu karakter lebih panjang:
Membaca ketinggian dari stdin (dengan input "10" untuk menghasilkan pohon contoh) membutuhkan jumlah karakter yang sama (28):
sumber
Saya tahu ini tidak sesuai dengan speknya, tetapi saya pikir saya akan mencoba menambahkan keragaman ke pohon-pohon di sini dengan meniru adegan seni Natal ASCII klasik ini oleh Joan G. Stark .
Saya tidak mencoba mereproduksi seluruh gambar - itu akan menjadi terlalu banyak - tetapi hanya pohon, di mana saya menyajikan program Perl 138-byte ini:
Dan, tentu saja, inilah contoh hasilnya:
Cobalah online!
Kode ini menggunakan fitur Perl 5.10+
say
, dan karena itu perlu dijalankan dengan saklar baris perintah-M5.010
(atau-E
). (Sebenarnya, hanya menggantisay
di akhir denganprint
akan menghindari itu, dengan biaya dua byte lagi dan hilangnya baris baru setelah garis keluaran terakhir.)Perhatikan bahwa sebagian besar pohon dihasilkan secara acak, sehingga penempatan ornamen akan bervariasi di antara lintasan. Namun demikian, malaikat, dudukan, dan barisan atas pohon tetap.
Untuk menjaga agar jawaban populer ini tidak secara singkat dihapus di bawah kebijakan yang dilembagakan setelah diposkan , berikut ini juga merupakan solusi yang sesuai dengan spesifikasi token (45 byte, juga Perl 5):
Cobalah online!
Seperti program di atas, yang ini juga perlu dijalankan pada Perl 5.10+ dengan
-M5.010
sakelar untuk mengaktifkansay
fitur. Jelas (ini merupakan tantangan kompleksitas-kolmogorov ) yang menghasilkan keluaran membosankan yang sama persis dengan semua entri yang sesuai lainnya, yang tidak akan saya ulangi di sini. (Ini juga dapat diubah ukurannya dengan mengubah angka10
menjadi nilai lain apa pun.)sumber
GolfScript (33 karakter)
Versi ketinggian tetap:
Atau untuk panjang yang persis sama
Pohon itu terlihat sangat mirip dengan pohon orang lain:
Versi yang membutuhkan ketinggian dari stdin:
Awal dari baris sebelumnya adalah salah satu smilies yang lebih baik yang saya buat dalam program GolfScript "berguna".
sumber
Script shell, 44 karakter
Mencetak pohon ini:
sumber
Maple, 30/37 karakter
Terinspirasi oleh entri Mr.Wizard's Mathematica , saya menyajikan perintah 30-char Maple 12 ini:
Keluaran:
Saya juga dapat menyingkirkan tanda kurung dengan biaya tujuh karakter lagi:
Keluaran dihilangkan - terlihat seperti di atas, hanya tanpa tanda kurung. Sayangnya, saya tidak tahu cara apa pun untuk mencegah Maple memasukkan garis kosong antara baris output dalam mode teks. Ini terlihat lebih baik dalam mode lembar kerja klasik. Saya kira saya bisa memasukkan tangkapan layar ...
(Tangkapan layar menunjukkan versi 44-char sebelumnya dari perintah, tapi saya terlalu malas untuk mengambilnya kembali. Outputnya masih sama.)
Oh, dan ya, ukuran sepenuhnya dapat disesuaikan: ganti saja 8 dengan n -2 untuk n pohon -row. Dengan solusi pertama, naik di atas 25 baris (atau 10 dalam GUI) memerlukan pengaturan antarmuka (rtablesize = n ).
(Ps. Saya pikir saya berhasil mengalahkan GolfScript dengan versi terbaru, tetapi sayangnya ... )
sumber
Perl, 42 karakter
Keluaran:
Ketinggian pohon dapat diubah antara 1 dan 11 baris dengan mengganti
8
di akhir dengan nilai dari-1
ke9
. Pergi di atas 11 baris juga memerlukan peningkatan dua9
s sebelumnya dalam kode, yang mengontrol seberapa jauh dari sisi kiri layar pohon indentasi.sumber
Groovy, 65
Yang mengejutkan, pohon itu terlihat seperti ini:
sumber
Ruby, 46 karakter
Untuk mengubah ketinggian, Anda harus mengubah 8s dan tentu saja juga 9. Output program adalah sebagai berikut:
Sunting : Tidak bisa dimungkiri saya menghilangkan output dalam pengiriman pertama.
sumber
PowerShell, 41
Tidak mengherankan, menghasilkan pohon yang sama dengan pohon orang lain :-p
Jika Anda menetapkan 8, itu akan menghasilkan hingga ukuran konsol Anda, di, katakanlah, 48 karakter :
Atau, sebagai skrip lengkap yang mengambil argumen, 53 karakter :
Disebut, sepertinya:
sumber
Python 3: 62 karakter
Keluaran:
Perhatikan bahwa ini pada dasarnya mengalahkan jawaban @ Ante dengan 11 karakter, karena jawaban itu, ketika dikonversi ke Python 3, menggunakan 73 karakter.
Ubah masing
9
- masing ke nilai lain untuk ketinggian yang berbeda.sumber
for
.Python, 59
sumber
print
bukan fungsi).Prolog: 183 atau 186
Cetakan:
Dapat diperas lebih lanjut untuk penerjemah tertentu (mis. Menggunakan tab / 1 pada SWI)
Aktifkan dengan x (N). Di mana N adalah jumlah baris di pohon aktual (tidak termasuk bintang). Memberikan ketinggian yang tetap akan membuatnya menjadi 183
sumber
C
Ini adalah versi C Wade Tandy tetapi sedikit dimodifikasi:
sumber
Mathematica, 50
sumber
Applesoft BASIC, 143 karakter
Karena pertanyaan ini mengingatkan saya pada tugas pekerjaan rumah yang saya miliki di sekolah menengah (ketika mereka mengajar di Apple // e):
Saya menggunakan JavaScript Applesoft BASIC yang ditemukan di sini: http://www.calormen.com/applesoft/
KELUARAN:
sumber
Prolog: 127 karakter
Keluaran:
Digunakan
Prolog
karena saya tidak dapat mengalahkanGroovy
rekor tanpa melihat kode-nya :(.sumber
PostScript (dengan tinggi parameterised), 114 karakter
Keluaran:
Apa, Anda ingin mencetak?
sumber
JavaScript (Badak: 108, Node: 114, Web Dev Dev Console: 119, jQuery Plugin: 132)
Badak adalah yang terpendek (pada 108 karakter) karena (a)
print
fungsinya memiliki nama pendek dan (b) ia akan membiarkan Anda menetapkan fungsi bawaan menjadi nama variabel yang lebih pendek. Begitu:Node.js hadir dalam detik dekat (pada 114 karakter) karena fungsi cetaknya
console.log
memiliki nama yang lebih panjang, tetapi ia akan membiarkan kami menetapkannya ke variabel pendek juga:Namun, Konsol Dev WebKit (dan mungkin Firebug juga) menganggapnya
p=console.log
agak terlalu licik (ketika Anda mencoba meneleponp()
, ia akan mengeluh pada Anda). Jadi, kita harus memperpanjang menjadi 119 karakter:(Menariknya,
with
hanya menyelamatkan kita karakter).Terakhir ... plugin jQuery (masih dapat tweet dengan 132 karakter!):
Dan Anda dapat memohonnya di footer halaman ini:
$('#footer').xms(3)
Tentu saja, itu tidak harus menjadi plugin ... karena kita mungkin harus menggunakan konsol JavaScript untuk menambahkannya ke halaman dan memintanya, kita bisa saja membuat potongan jQuery :
yang berbobot 116 karakter yang lebih kompetitif - pada kenyataannya, mengalahkan implementasi konsol dev lainnya. Tetapi, sekali lagi, menggunakan jQuery dan / atau mesin tata letak browser mungkin dianggap curang. :)
sumber
C, 67
Saya tahu ini sudah lama berakhir, tetapi ini adalah upaya pertama saya di kode golf, dan saya pikir saya punya solusi C yang cukup bagus.
Menariknya, saya datang dengan ini secara independen dari solusi yang sangat mirip @ Patrick.
Dan ya, saya tidak akan memenangkan ikatan apa pun dengan nilai-nilai hardcod saya;) Lagi pula, saya cukup senang.
sumber
Peramal
sumber
PHP, 106 karakter
7 lebih sedikit dari yang sebelumnya:
sumber
<?=
dan simpan 5 lainnya dari "echo".LOLCODE, 527 byte
Cobalah online!
Keluaran:
sumber
Python, 70 karakter
Tidak terlalu pendek, tetapi solusi rekursif :-)
Ubah 8 untuk mengatur ketinggian.
sumber
Javascript, 119 karakter
Output ke konsol pembakar
sumber
PHP 113
Kupikir aku akan berpadu dengan versi php:
113 karakter (sesuaikan
$h
untuk mengubah ketinggian, jumlah garis termasuk bintang):Saya mencoba untuk membuatnya singkat, tidak dapat dibaca dan kita sudah tahu php tidak dapat bersaing dalam keringkasan jadi ini tidak akan memenangkan apa-apa, masih sedikit teka-teki yang menyenangkan.
output adalah sebagai spec:
sumber
C, 77
Sebelum membaca spec printf lebih hati-hati, saya punya nomor kecil yang lucu ini hingga 138 karakter:
sumber
Java, 192 (198 dengan 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="";}}}
Mencetak pohon yang diminta:
Untuk tinggi variabel, sedikit lebih panjang:
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="";}}}
Panjang daftar argumen baris perintah menentukan tinggi (mis
java W a a a a a
Akan memberikan tinggi 5).(Ini pada dasarnya adalah versi Java dari solusi Wade Tandy C.)
sumber
while (++i < c) {
->for (s += "*";++i < c;s = "") {
, dan menghapuss += "*";
dans = "";
Vim, 18 byte
Cobalah online di penerjemah V yang kompatibel-mundur!
Meskipun ini adalah pendekatan yang sangat mirip dengan jawaban V saya, yang ini tidak non-bersaing karena vim sudah tua gila. :)
Penjelasan:
sumber
Scala, 74 byte
h
- ketinggian pohonKeluaran
sumber
C, 80
Inisialisasi k ke ketinggian pohon, i ke k-1. F adalah flag baris pertama. Karena tidak ada argumen, maka F harus 1 pada saat masuk.
Versi yang sedikit lebih panjang (81) di mana f bukan flag baris pertama:
sumber