var QUESTION_ID=92138,OVERRIDE_USER=58717;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>
E
sebagai input, dan membuatE
denganE
s?Jawaban:
05AB1E ,
1614 bytePenjelasan
Cobalah online!
Disimpan 4 byte berkat Adnan.
sumber
©
register: p?Í×s.øU×S»X»D»Xr»
.Python,
535155 Bytes+4 Bytes berkat @nimi
fungsi lambda anonim, untuk menyebutnya, tulis
f=
sebelumnya. Contoh:alternatif, 53 Bytes
versi lama dengan kasus khusus tanpa input,
696563 Bytesyay untuk mengubah persyaratan pertengahan tantangan ...
sumber
2
dalam contoh Anda) adalah panjang total garis, termasuk sudut, sehingga input yang tepat untuk bentuk Anda adalahf(4,1 ...)
.C,
167161159 byteYa.
Cobalah di Ideone, dengan beberapa test case
sumber
Ruby,
544542 byteIni adalah fungsi anonim yang mengambil bagian berbeda dari input sebagai parameter terpisah dan mengembalikan hasilnya sebagai string lengkap.
Sebagai contoh,
cetakan
sumber
Javascript (ES6), 64 byte
Contoh
sumber
{ "message": "Script error.", "filename": "", "lineno": 0, "colno": 0 }
saat menjalankan inline..repeat()
V , 18 byte
Cobalah online!
sumber
R, 80 byte
Cukup berulang:
Tidak Disatukan:
sumber
Pyke,
1615 byteCoba di sini!
sumber
Pyth, 19 byte
Suatu program yang mengambil input yang dipisahkan oleh baris baru pada STDIN dari karakter sudut, jumlah karakter horisontal, karakter horisontal, jumlah karakter vertikal dan karakter vertikal, dan mencetak hasilnya.
Cobalah online
Bagaimana itu bekerja
sumber
MATLAB,
95 92 91 8581 byteFungsi MATLAB 'E'. (edit: tidak berfungsi pada Oktaf)
Dan ungolfed:
Fungsi harus dipanggil seperti:
Yang akan kembali:
Ini mungkin bisa disederhanakan sedikit, saya akan terus mengusahakannya. Saya tidak suka memiliki seluruh deklarasi fungsi untuk mendapatkan input, jadi akan melihat apakah saya dapat memperbaikinya.
Disimpan 3 byte dengan menyederhanakan pembuatan baris pertama untuk membuat garis pertama tanpa sudut dan kemudian menambahkan sudut karena ini mengurangi berapa kali pengindeksan diperlukan.
Byte lain disimpan dengan memulai dengan sudut pertama.
6 byte lagi dengan mengganti
repmat(a,3,1)
panggilan dengan[a;a;a]
.Disimpan 4 byte dengan menggunakan
a
tanpa inisialisasi tertentu (sudah dinyatakan dalam deklarasi fungsi) - terima kasih @LuisMendosumber
a=[c a c]
ada di sana tetapi menghapusnya untuk mengecilkan hal-hal seperti biasanya Anda tidak dapat mengindeks mengakses variabel yang tidak ada dan membuatnya dalam proses. Saya lupa bahwa ini adalah fungsi sehinggaa
sudah dinyatakan dalam deklarasi fungsi sebagai nilai pengembalian. Terima kasih :)Perl, 40 + 1 (
-n
) = 41 byteTerima kasih kepada @Ton Hospel karena telah menyimpan 14 byte dan memungkinkan program untuk bekerja dengan entri lebih dari 10.
Perlu
-n
juga-E
(atau-M5.010
) untuk dijalankan. Contohnya :sumber
< 10
dengan memasukkan/(.)(.)/;$,=$' x<>;say+($1.$2x(<>-2).$1.$/)x3
file (karena menggunakan$'
) dan memanggil denganperl -M5.010 -n prog.pl <<< '^!S\n4\n9'
(menggunakan baris baru nyata) yang dihitung sebagai 48 byte (2 tambahan cacat karena tidak dapat digabungkan dengan-e
)>10
.. Kerja bagus dengan format input, terima kasih.perl -nE '/.$/;$,=$/.<>x<>;say+($`.$&x(<>-2).$`)x3' <<< '^$\n!\n4\n9'
adalah 41 byte (tidak lebih$'
) dan juga menghilangkan baris baru palsuDyalog APL ,
3129 byteAnjuran untuk karakter horizontal, lebar, karakter persimpangan, tinggi, karakter vertikal - dalam urutan itu.
⎕⍴⍞
input-horizontal-karakter dan ulangi kali lebar input ( ⍵ di bawah)⍞{
...}
input-junction-karakter yang akan ⍺ dalam fungsi ...∊⍺⍵⍺
meratakan [[persimpangan], [horizontal], [persimpangan]]⊂
merangkum sehingga dapat menjadi bagian dari daftar(
...),
tergantung ...h←⎕
tinggi input⍞⍴⍨
masukan-karakter-vertikal dan ulangi sebanyak itu↑
buat daftar string menjadi tabel karakter⊂
merangkum (sehingga dapat diulangi secara keseluruhan)3/
ulangi tiga kali⍪/
menyatukan tiga potong secara vertikal(Ini merangkum mereka juga, jadi kita perlu ...)
⊃
hapus enkapsulasih↓
drop h pertama (baris)TryAPL online!
sumber
C, 130 byte
Pemakaian:
Keluaran
sumber
define
s dan menambahkannya sebagaif(C,O,P,S,_,D,o){W;E;W;E;W;}
menyimpan byte.C #, 108 byte
Fungsi anonim yang menghasilkan setiap garis horizontal dan vertikal dan membangun hasil akhir.
Fungsi tidak disatukan:
Program lengkap dengan kasus uji:
sumber
MATL , 15 byte
Berkat @muddyfish untuk koreksi
Cobalah online!
Penjelasan
Isi tumpukan setelah setiap langkah diindikasikan untuk kejelasan, menggunakan contoh pertama dalam tantangan.
sumber
Bash + coreutils, 105 byte
Dengan asumsi file tempat penyimpanan ini dinamai
A.sh
, penggunaannya adalah:The
--
diperlukan, hanya dalam kasus salah satu masukan karakter terjadi menjadi-
, danprintf
tampaknya tidak menangani strip pada awal string yang sangat bagus tanpa double-strip.Penjelasan
Dengan asumsi bahwa inputnya adalah
5 2 + * |
...$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
Buat segmen horizontal pertama dan segmen vertikal secara bersamaan. Ini akan menghasilkan:
printf -- "$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
%.0s\n" {1..3}Ulangi
3
kali bagian yang dibuat sebelumnya lebih dari. Ini sekarang menghasilkan:printf -- "$3
printf -- "$4%.0s" $(seq $1)
$3printf "\n$5%.0s" $(seq $2)
%.0s\n" {1..3}|sed -n 1,$(($2*2+3))pAkhirnya pipa keluaran sebelumnya untuk
sed
menyingkirkan segmen 2 baris terakhir dengan hanya mengeluarkan<Vertical Segment Length>*2+3
baris pertama dariE
. Kami akhirnya mendapatkan yangE
kami inginkan:sumber
PowerShell v2 +,
6059 byteMengambil input sebagai argumen baris perintah individual. Membangun string horizontal, menyimpannya menjadi
$x
untuk digunakan nanti, kemudian membentuknya menjadi array dengan koma-operator,
. Melakukan penggabungan array (yaitu, menambahkan elemen ke akhir)$d
diformulasikan ke dalam array$b
elemen. Itu, pada gilirannya, diformulasikan menjadi array dari dua elemen dengan operator koma lain, dan dibiarkan di dalam pipa. Kemudian, horizontal$x
dibiarkan di atas pipa. Menyalahgunakan pemformatan defaultWrite-Output
untuk menempatkan baris baru di antara elemen.Contoh
sumber
Python 3, 60 byte
Sebuah fungsi
Kasus cobaan
sumber
Brainf * ck, 147 byte
Mengambil input dari stdin saat 5 karakter pertama dimasukkan. Dua yang pertama memiliki 48 dikurangi dari kode ASCII mereka sehingga 0-9 berperilaku seperti yang diharapkan. Untuk angka> 9, tambahkan 48 ke angka dan gunakan karakter yang sesuai. Tiga karakter lainnya seperti yang ditentukan dalam tantangan.
Saya yakin ini bukan solusi yang optimal tetapi hidup ini terlalu singkat untuk bermain golf.
Dengan komentar:
Contoh dijalankan:
sumber
PHP, 97 byte
tidak ada loop, hanya bawaan.
Jalankan dengan
php -r '<code>' <parameters>
.sumber
Java 7,
205129 byte-76 bytes berkat orang asing anonim.
PS: Jangan mengedit posting orang lain lain kali. Jika Anda memiliki sesuatu untuk golf, silakan tinggalkan sebagai komentar, atau jika menggunakan pendekatan yang sama sekali berbeda, Anda dapat membuat jawaban Anda sendiri. Masih terima kasih untuk bermain golf semua byte ini, meskipun - siapa pun Anda ..
Kasus yang tidak disatukan & uji:
Coba di sini.
Keluaran:
sumber
Racket 124 byte
Bentuk yang lebih mudah dibaca:
Pengujian:
sumber
C ++, 121 Bytes
Tidak Disatukan:
Dalam C ++ itu tidak diizinkan untuk mendeklarasikan fungsi tanpa tipe seperti pada C. Tapi makro yang berperilaku seperti fungsi sangat mungkin. Perhatikan juga bahwa versi yang tidak diklik tidak akan dikompilasi sampai Anda menambahkan "\" untuk masing-masing kecuali baris terakhir makro. Anda mungkin menyimpan dua byte tambahan dengan menghapus {}, tetapi Anda tidak bisa menggunakan makro dua kali berturut-turut.
Pemakaian:
Keluaran:
Cobalah online
sumber
CJam , 23 byte
Cobalah online!
Input dalam urutan yang diberikan, tetapi harus dipisahkan dengan ruang alih-alih menggunakan koma. Beberapa kesulitannya adalah mendapatkan input urutan yang tepat untuk operasi bergabung
*
CJam ; untuk perbandingan mengatur ulang input bisa menghemat 4 byte .Jika input di-dub
A B C D E
maka programnya bekerja seperti ini:sumber
Lua (5.2), 144 byte
Cobalah online! (Coding Ground)
Seharusnya menampilkan sesuatu seperti itu sekarang:
Input sendiri:
7 2 + l @
Anda dapat mengubah input dalam project-> compile options dan di sana mengubah nilainya, masing-masing nilai seperti dalam contoh tetapi tidak dipisahkan dengan koma tetapi dengan spasi.
sumber
QBIC, 44 byte
Penjelasan
sumber
PHP, 94 Bytes
Masukkan format array dengan urutan yang sama dengan string yang disarankan
sumber
,"\n"
sebagai gantinya."\n"
, Anda dapat menjatuhkan parens untuk ternary.for($h++;$i<=2*$h;)
dan$i++%$h
menyimpan byte lain.$v-1
hanya memberikan 3 karakter horizontal untuk[5,2,+,|,-]
. Jumlah karakter horizontal, tidak termasuk karakter tepi kiri dan kanan