var QUESTION_ID=133109,OVERRIDE_USER=69148;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} /* font fix */ body {font-family: Arial,"Helvetica Neue",Helvetica,sans-serif;} /* #language-list x-pos fix */ #answer-list {margin-right: 200px;}
<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:
Pyth , 2 byte
Cobalah online! Masukan implisit.
S
adalah rentang 1-diindeks, dans
jumlahnya.sumber
Sekam , 1 byte
Cobalah online!
Dibangun!
Σ
dalam Sekam biasanya digunakan untuk mendapatkan jumlah semua elemen dari daftar, tetapi ketika diterapkan ke nomor itu mengembalikan persisn*(n+1)/2
.sumber
Σ
adalah karakter unicode dua byte pada mesin saya. Saya kira Anda menggunakan kode halaman 1253? msdn.microsoft.com/en-us/library/cc195055.aspxPiet , 161 byte / 16 kode
Anda dapat menafsirkannya dengan penerjemah Piet ini atau mengunggah gambar di situs web ini dan menjalankannya di sana. Tidak yakin tentang jumlah byte, jika saya bisa menyandikannya secara berbeda untuk mengurangi ukuran.
Versi sumber gambar yang ditingkatkan:
Penjelasan
The
highlighted
teks menunjukkan tumpukan saat ini (tumbuh dari kiri ke kanan), dengan asumsi input pengguna adalah5
:Masukkan nomor dan dorong ke tumpukan
Gandakan nomor ini di tumpukan
Tekan 1 (ukuran area merah gelap) ke tumpukan
Tambahkan dua angka teratas
Lipat gandakan dua angka teratas
Area hitam memastikan, bahwa kursor bergerak ke kanan ke kode hijau muda. Transisi itu mendorong 2 (ukuran hijau gelap) ke tumpukan
Bagilah angka kedua pada tumpukan dengan yang pertama
Pop dan output nomor atas (diartikan sebagai angka)
Dengan memasukkan area putih, transisinya adalah
nop
, hitam menjebak kursor kita. Ini mengakhiri eksekusi program.sumber
Brain-Flak , 16 byte
Cobalah online!
Ini adalah salah satu dari beberapa hal yang benar - benar bagus di otak .
Karena ini adalah salah satu hal paling sederhana yang dapat Anda lakukan di brain-flak dan memiliki banyak visibilitas, inilah penjelasan terperinci :
sumber
Oasis , 3 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Mathematica, 9 byte
Mathematica, 10 byte
Mathematica, 11 byte
Mathematica, 12 byte
Mathematica, 14 byte
(oleh @ user71546)
Mathematica, 15 byte
Mathematica, 16 byte
Mathematica, 17 byte
(oleh @Tidak pohon)
Mathematica, 18 byte
Mathematica, 19 byte
Mathematica, 20 byte
(oleh @Tidak pohon)
sumber
Array[Boole[#2>=#]
&,{#,#}]~Total~2
&JavaScript (ES6), 10 byte
Contoh
Tampilkan cuplikan kode
sumber
n*-~n/2
juga bekerja, tetapi hanya untukn < 2**31
bahasa mesin x86_64 (Linux),
98 byteUntuk Mencoba secara online! kompilasi dan jalankan program C berikut.
Berkat @CodyGray dan @ Peter untuk -1.
sumber
shr
sebagai gantinyasar
, untuk memperlakukan output Anda sebagai tidak ditandatangani (tidak ada perubahan dalam ukuran kode). (Terlihat oleh @CodyGray dan ditunjukkan dalam 7 byteadd
+loop
jawabannya ).mul %edi
atauimul %edi
(masing-masing 2B) alih-alih bentuk 2-operan 3B. Ini clobbers EDX dengan hasil setengah tinggi, tapi itu bagus. Multi-operanimul
diperkenalkan lebih lambat dari bentuk satu-operan, dan memiliki 2-byte opcode dengan0F
byte melarikan diri. Salah satu dari tiga opsi akan selalu menghasilkan hasil yang samaeax
, hanya setengah tinggi yang bergantung pada yang ditandatangani vs yang tidak ditandatangani.Python 2 ,
2416 byte-8 byte terima kasih kepada FryAmTheEggman.
Cobalah online!
sumber
C # (.NET Core) , 10 byte
Cobalah online!
sumber
Java (OpenJDK 8) , 10 byte
Cobalah online!
sumber
Oktaf ,
2219 byteKarena operasi aritmatika membosankan ...
Cobalah online!
Penjelasan
Diberikan
n
, ini menciptakann
×n
matriks dengan semua entri sama dengan angka e ; membuat entri di bawah nol diagonal; dan menampilkan jumlah nilai bukan nol.sumber
@(n)sum(1:n)
sum
.Jelly , 2 byte
Cobalah online!
Penjelasan
Jumlah Gauss, 3 byte
Penjelasan
sumber
APL, 3 byte
Cobalah online!
+/
- jumlah (kurangi+
),⍳
- kisaran.sumber
1+
1
jadi saya tidak menentukan. umum di sini untuk menentukan hanya ketika menggunakan⎕IO←0
(dan itu tidak termasuk dalam hitungan byte)Haskell , 13 byte
Ini adalah terpendek (saya
pikirpikiran):Cobalah online!
Langsung,
1713 byteTerima kasih @WheatWizard untuk
-4
byte!Cobalah online!
Pointfree direct, 15 byte
Terima kasih @nimi untuk idenya!
Cobalah online!
Pointfree via
sum
, 16 byteCobalah online!
Secara rekursif,
2218 byteTerima kasih @maple_shaft untuk ide & @Laikoni untuk bermain golf!
Cobalah online!
Standar
fold
, 19 byteCobalah online!
sumber
Starry ,
2722 byte5 byte disimpan berkat @miles !
Cobalah online!
Penjelasan
sumber
05AB1E , 2 byte
Cobalah online!
Bagaimana itu bekerja
Jumlah Gauss, 4 byte
Cobalah online!
Bagaimana itu bekerja
sumber
ÝO
juga bekerja dan berartihello
.Java (OpenJDK 8) , 10 byte
Cobalah online!
Butuh waktu sejenak untuk turun dari golf
n->n*(n+1)/2
karena saya lambat.Tapi ini bukan jawaban Java nyata. Jelas tidak cukup bertele-tele.
Tidak buruk, tetapi kita bisa berbuat lebih baik.
Saya suka Jawa.
sumber
Periksa , 5 byte
Periksa bahkan bukan bahasa golf, namun mengalahkan CJam!
Cobalah online!
Penjelasan:
Nomor input ditempatkan pada tumpukan.
:
duplikat untuk memberin, n
. Kemudian ditambahkan dengan)
, memberin, n+1
.*
mengalikan keduanya bersama-sama, dan kemudian$
membagi hasilnya dengan 2.p
mencetak hasil dan program berakhir.sumber
MATL , 2 byte
Cobalah online!
Tidak senang tersenyum.
sumber
Taksi , 687 byte
Cobalah online!
Berhenti bermain golf dengan komentar:
Ini 22,6% lebih sedikit byte untuk loop daripada menggunakan
x*(x+1)/2
sumber
Julia, 10 byte
Cobalah online!
11 byte (berfungsi juga pada Julia 0.4)
Cobalah online!
sumber
Brainfuck, 24 Bytes.
I / O ditangani sebagai byte.
Dijelaskan
sumber
,,,, 6 byte
Penjelasan
Jika saya menerapkan rentang dalam waktu dekat ...
sumber
Retina , 13 byte
Cobalah online! Penjelasan: Tahap pertama dan terakhir hanyalah konversi desimal ⇔ unary. Tahap tengah menggantikan masing
1
- masing dengan jumlah1
s ke kiri ditambah yang lain1
untuk1
itu sendiri, sehingga menghitung dari1
ken
, menjumlahkan nilai-nilai secara implisit.sumber
> <> , 7 + 3 = 10 byte
Menghitung n (n +1) / 2 .
3 byte ditambahkan untuk flag -v
Cobalah online!
Atau jika input dapat diambil sebagai kode karakter:
> <> , 9 byte
Cobalah online!
sumber
(n^2+n)/2
) juga 7 byte:::*+2,n
dc , 7 byte
ATAU
ATAU
Cobalah online!
sumber
PHP, 19 byte
menggunakan builtin, 29 byte:
loop, 31 byte:
sumber
for(;$argn;$s+=$argn--);echo$s;
Cubix ,
1210 byteVersi awal
Cobalah online!
Penjelasan
Diperluas ke sebuah kubus, kode ini terlihat seperti ini:
Instruksi penunjuk (IP) dimulai pada
I
, bergerak ke timur. Terus bergerak ke timur sampai melintasi/
cermin, yang memantulkannya ke utara. Ketika IP mencapai bagian atas kode, ia membungkus ke yang terakhir.
pada baris ketiga, bergerak ke selatan. Kemudian ia membungkus ke kedua.
dari belakang pada baris terakhir, bergerak ke utara. Kemudian ia mencapai/
cermin lagi, yang memantulkannya ke timur, hanya untuk selanjutnya/
memantulkannya ke utara lagi. Kali ini, IP membungkus ke kedua.
dari belakang pada baris ketiga, dan kemudian yang terakhir.
pada baris terakhir.Instruksi dieksekusi dalam urutan berikut.
sumber
x86-64 Kode Mesin, 7 byte
Byte di atas menentukan fungsi yang menerima parameter tunggal
n
,, dan mengembalikan nilai yang berisi jumlah semua bilangan bulat dari 1 hinggan
.Itu ditulis ke konvensi pemanggilan Microsoft x64 , yang melewati parameter dalam
ECX
register. Nilai kembali ditinggalkanEAX
, seperti semua konvensi pemanggilan x86 / x86-64.Mnemonik perakitan tidak dikumpulkan:
Cobalah online!
(Fungsi C panggilan ada dijelaskan dengan atribut yang menyebabkan GCC menyebutnya dengan menggunakan konvensi panggilan Microsoft yang menggunakan kode perakitan saya. Jika TIO telah menyediakan MSVC, ini tidak akan diperlukan.)
Dengan standar kode golf yang tidak biasa, Anda melihat bahwa pendekatan perulangan berulang ini lebih disukai daripada pendekatan yang menggunakan rumus matematika yang lebih waras (
n(n+1) / 2
), meskipun itu jelas jauh lebih efisien dalam hal kecepatan run-time.Menggunakan teori angka, implementasi ceilingcat masih dapat dikalahkan satu byte. Masing-masing instruksi ini penting, tetapi ada pengkodean yang sedikit lebih pendek untuk
IMUL
yang menggunakanEAX
secara implisit sebagai operan tujuan (sebenarnya, ia menggunakanEDX:EAX
, tetapi kita bisa mengabaikan 32 bit atas hasilnya). Ini hanya 2 byte untuk dikodekan, turun dari 3.LEA
membutuhkan tiga byte juga, tetapi benar-benar tidak ada jalan lain karena kita perlu meningkatkan sekaligus mempertahankan nilai asli. Jika kami melakukanMOV
untuk membuat salinan, makaINC
, kami akan berada di 4 byte. (Dalam x86-32, di manaINC
hanya 1 byte, kita akan berada pada 3 byte yang sama denganLEA
.)Pergeseran kanan terakhir diperlukan untuk membagi hasil menjadi dua, dan tentu saja lebih kompak (dan lebih efisien) daripada perkalian. Namun, kode tersebut harus benar-benar digunakan
shr
alih-alihsar
, karena mengasumsikan bahwa nilai inputn
,, adalah bilangan bulat yang tidak ditandatangani . (Asumsi itu valid sesuai dengan aturan, tentu saja, tetapi jika Anda tahu bahwa input tidak ditandatangani, maka Anda tidak boleh melakukan pergeseran aritmatika yang ditandatangani, karena bit atas yang diatur dalam nilai unsigned besar akan menyebabkan hasilnya salah.)Sekarang hanya 8 byte (terima kasih kepada Peter Cordes). Masih, 8> 7.
sumber
imul ecx
ataumul ecx
akan bekerja dan menyimpan byte dalam implementasi bentuk-tertutup. Saya tidak langsung melihatnya; Saya akan berkomentar bahwa itu optimal untuk kinerja dan ukuran kode sebelum menyadari bahwaeax
operan implisit baik-baik saja.add
+loop
akan lebih pendek daripadaimul
sambil melihat jawaban yang lain. Berguna bahwa ada konvensi panggilan standar yang melewati argumen pertama diecx