var QUESTION_ID=111861,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/111861/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:
Arang ,
181613 byte-3 byte terima kasih kepada @Neil !
Penjelasan
Cobalah online! Tautan adalah untuk kode verbose.
sumber
↘O
maka Anda dapat loop dari 0 ke N inklusif sebagai gantinya yang menghemat dua byte segera.⁺¹
dengan⊕
. Namun sekarang setelah Anda memindahkan←
dari‖C
keO
Anda dapat menyimpan byte lain dengan menulis↙OMι↓
, jadi saya kembali ke penghematan dua byte lagi.C,
9392(Catatan, seseorang mendapat 87 komentar)
Cobalah online!
Dapat dibaca:
Catatan:
Saya dapat menutup keduanya untuk loop menjadi hanya satu untuk loop dengan mengulangi jumlah total baris yang dihasilkan, yang diberikan oleh rumus:
n*-~n/2+1
Tetapi akhirnya menjadi lebih banyak byte daripada hanya menggunakan dua loop terpisah untuk
sumber
s
di awal, seperti ini:y,n;f(s){++s;for(y=0;y<s;){printf("%*c%*c",s-y,79,y*2+1,79);for(n=++y;s-n&&n--;)puts("");}}
++s;
di awal dan kemudian mengubahy<=s
key<s
dans-y+1
kes-y
dans+1-n
kes-n
, jadi itu harus dikompilasi (dan harus 91 byte).Python 2 , 65 byte
Cobalah online!
sumber
GNU sed, 41
-r
bendera ke sed.Input dalam bentuk unary, sebagai string spasi - panjang string adalah input.
Cobalah online .
sumber
Python 2, 76 byte
Cukup mudah. Hal
i-x+1and i
ini untuk mencegah sekelompok trailing newlines.sumber
'\n'*(i-1)
menghemat 7 byte sambil menghindari baris baru yang tertinggal.MATL ,
1917 byteCobalah di MATL Online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
05AB1E ,
1814 byteDisimpan 4 byte berkat Adnan
Cobalah online!
Penjelasan
sumber
ƒ¶N×'ONúRÂJ}.c
:).c
dengan versi yang berbeda, tetapi tidak berfungsi dengan baik. Lupa tentang mencobanya dengan yang satu ini dan benar-benar lupa yangú
ada :)JavaScript (ES6),
9892898478 byte(-20 byte terima kasih kepada Arnauld!)
Solusi rekursif. Ini juga jawaban pertama saya di JavaScript, jadi harap lembut! Saya masih mempelajari semua bahasa rapi ini yang ditawarkan, jadi tips bermain golf sangat dihargai. :)
Cuplikan Tes
Anda mungkin perlu menggulir untuk melihat seluruh output.
sumber
${}
hanya menyimpan byte ketika bagian variabel dikelilingi oleh bagian statis. Dengan demikian, string ini harus selalu dimulai dan diakhiri dengan bagian statis.0
alih-alih"0"
. Mereka akan dipaksa untuk string. Dan pada pemikiran kedua:i++<v&&i
sebenarnya satu byte lebih pendek dari(i<v)*++i
.RProgN 2 , 37 byte
Masuk dengan bahasa jenis golf saya sebelum bahasa golf yang tepat melompat.
Dijelaskan
Cobalah online!
sumber
Retina,
2919 byteCobalah online!
Mengambil input di unary sebagai ruang kosong. Port jawaban JavaScript saya. Sunting: Disimpan 10 byte berkat @ MartinEnder ♦.
sumber
Bash , 76 byte
Hanya bekerja di terminal karena menggunakan urutan pelarian ANSI .
›
mewakili byte CSI ( 0x9b ).Uji coba
sumber
sed $nq
untuk menyimpan satu byte.sed ${n}q
yang lebih lama.sed $n\q
, tetapi itu juga tidak masuk akal, karena jumlah byte yang samahead
!Retina, 35
Port jawaban saya :
Cobalah online .
sumber
R, 89 byte
Ini adalah usaha pertama saya di golf, komentar selamat datang ...
sumber
Röda ,
5352 byteCobalah online!
Pemakaian:
main { f(5) }
Versi tidak disatukan:
sumber
\n
menyimpan 1 byte?Befunge,
7573 byteCobalah online!
Baris pertama membaca dalam kecepatan, v , dan menyimpan salinan dalam memori. Baris kedua kemudian menghitung mundur dari v ke nol, dengan indeks i , dan pada setiap iterasi mendorong urutan pasangan karakter / panjang ke tumpukan.
Urutan ini merupakan semacam enkode run-length dari output yang diperlukan secara terbalik. Dua baris terakhir kemudian cukup memunculkan pasangan karakter / panjang ini dari tumpukan, menampilkan kejadian panjang masing-masing karakter , hingga tumpukan kosong.
sumber
Java 8,
129124109 byteGolf:
Cobalah online!
Tidak Disatukan:
sumber
for(;j<v;++)
akan berhasil, karena pada saat inij==y
. Selain itu, Anda bisa menghapus yang ketiga dengan menambahkan variabel string kedua di dalam loop utama untukString t="";
(12) dant+=" ";
(8) di dalam loop bersarang pertama. Kemudian loop ketiga menjadis+="o"+t+"o";
for(j=0;j<v;++j)s+=j<y?"\n":" ";
meskipun saya tidak yakin bagaimanat
t=""
samping s di awal, dan kemudian menambahkant+=" "
setiap loop di sekitar setelah Anda melakukannyas+="o"+t+"o"
Haskell, 69 byte
Contoh penggunaan:
f 3
->" OO\n O O\n\n O O\n\n\nO O"
. Cobalah online! .sumber
VBA,
1241128588666359 byteTotal 29 byte disimpan berkat Taylor Scott
Ini harus dijalankan di jendela VBA Immediate dan cetak hasilnya dengan cara yang sama.
Diperluas / Diformat, menjadi:
(Ternyata rangkaian dalam perintah cetak otomatis tanpa operator.)
sumber
b & s &
Waspada spasi!b &s &String
tetapi tidakb&s&String
. Juga, pada awalnya saya pikir Anda bermaksud menggunakanSpace
fungsi yang seharusnya saya miliki dan yang akhirnya menghemat lebih banyak byte.for i=0 To v
dandebug.? b
kefor i=0To v
danDebug.?b
, masing-masing untuk-2
byte. Dan agar Anda tahu, konsensus komunitas adalah bahwa untuk bahasa dengan autoformatting, Anda dapat menghitung sebelum autoformatted, artinya setelah Anda membuat perubahan ini, Anda harus memiliki hitungan byte 85 Bytes[A1]
(v=[A1]
) Juga, saya tidak berpikir Anda benar-benar membutuhkans
variabel.;
ke akhir perintah cetak, karena itu terus menambahkan jeda baris tambahan secara default. Terima kasih!05AB1E ,
1813 byteCobalah online!
sumber
Jelly ,
1716 byteCobalah online!
Bagaimana?
sumber
PHP, 76 byte
Jalankan dengan
echo <v> | php -nR '<code>'
atau coba online .loop
$argn
turun dari input ke0
dan$i
dari 0;mencetak - dalam urutan itu - di setiap iterasi
$i
baris baru (tidak ada dalam iterasi pertama)$argn
spasio
2*$i
spasio
sumber
V ,
2319 byteCobalah online!
Menjelaskan
sumber
JavaScript (ES6), 87 byte
Solusi non rekursif. Persyaratan pengindeksan menjengkelkan, baik di atas dan 62-byte berikut (saya tidak tahu apakah itu akan menghasilkan port Retina lebih pendek) solusi rekursif:
sumber
Perl 5 , 48 byte
47 byte kode +1 untuk
-n
.Cobalah online!
sumber
Ditumpuk,
6763 byteUpaya awal, 67 byte
Program lengkap. Menghasilkan sesuatu seperti:
Yaitu yang empuk, transpos, dibalik, dan dikeluarkan.
sumber
Batch, 163 byte
sumber
Ruby, 52 byte
Tidak ada trailing newline (diizinkan oleh aturan: " paling banyak satu trailing newline ")
sumber
AHK, 93 byte
Jika saya bisa mengetahui cara melakukan matematika di dalam penekanan tombol berulang, itu akan bagus.
-
VK20
sama dengan spasi-
FileAppend
menghasilkanstdout
jika nama file*
sumber
Haskell , 77 byte
Cobalah online! Pemakaian:
(#0) 5
sumber
Python 2 , 59 byte
Cobalah online!
sumber