var QUESTION_ID=69510,OVERRIDE_USER=31716;function answersUrl(e){return"http://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"http://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>
0001 --> 5
:? Menurut halaman ini (dan kode saya) itu harus April dan Juli.Jawaban:
Pyth, 73 Bytes
Cobalah online!
Menggunakan Gauss-Algoritma, seperti pada jawaban Python saya. ~ 55 byte kode adalah untuk perhitungan hari kerja, jadi memilih algoritme yang lebih baik bisa mendapatkan ini dengan banyak kurasa ... tapi hei, setidaknya ini berfungsi sekarang! :)
sumber
Python 2,
157144136 BytesSolusi saya menggunakan Algoritma Gauss. Input adalah tahun sebagai Integer. Keluaran adalah daftar bulan dengan angka 13 sebagai angka (1-12) Mungkin beberapa golf lagi mungkin, tetapi sudah terlambat ... Akan mengedit yang satu ini besok dan turunkan ini sedikit lagi. Sementara itu, saran selalu diterima!
sunting: Dapatkan hingga 144 dengan mengganti for-loop dengan daftar pemahaman dan membuat beberapa penyesuaian kecil lainnya.
sunting2 : Dorong ke 136 dengan saran dari Morgan Thrapp dan perbaiki bug yang ditemukannya. Terima kasih banyak! :)
sumber
Perl -
141107103 byteIni menggunakan versi modifikasi dari rumus untuk hari Julian untuk menghitung hari minggu 13 Maret, kemudian menggunakan jumlah hari dalam seminggu setiap bulan diimbangi dari Januari untuk menemukan hari dalam seminggu untuk sisa hari bulan, dimulai dengan 2 bulan terakhir tahun sebelumnya yang dimulai pada bulan Maret lalu 10 bulan pertama tahun ini (untuk menghindari penghitungan tahun kabisat dua kali).
sumber
C -
164153112 byteSaya menemukan solusi kecil yang bagus menggunakan metode Schwerdtfeger's versi modifikasi. Ini mengkodekan tabel yang diperlukan dalam integer menggunakan basis 7, dimodifikasi agar sesuai dengan kata 32-bit yang ditandatangani. Ini output bulan sebagai karakter ASCII, dengan Januari dikodekan sebagai
1
, Februari2
dan seterusnya, dengan Oktober dikodekan sebagai:
, November dikodekan sebagai;
dan Desember dikodekan sebagai<
.Ini sedikit ungolfed:
Saya yakin ada beberapa cara untuk membuatnya lebih kecil, tetapi saya pikir algoritme, atau sedikit variasi darinya, hampir ideal untuk menemukan bulan di mana Jumat tanggal 13 terjadi (sehubungan dengan ukuran kode). Catatan:
+5
).m
tidak benar-benar diperlukan, karena bulan yang kita lihat dapat dikurangkan darit
.Saya meninggalkan jawaban saya yang lebih tua di bawah ini, karena menggunakan metode yang sama sekali berbeda tidak terlihat dalam jawaban lain di sini.
Ini didasarkan pada solusi untuk masalah terkait ( /codegolf//a/22531/7682 ).
Ini pada dasarnya mensimulasikan kalender Gregorian, memajukan satu hari pada suatu waktu, mencetak bulan ketika itu adalah hari Jumat dan tanggal 13. Ini dia dalam bentuk yang sedikit lebih mudah dibaca:
sumber
1:
untuk123456789
, di mana:
menunjukkan Oktober. Saya mengklarifikasi penyandian di atas.Excel, 137 byte
Mengambil tahun input dalam A1. Output adalah daftar Hexidecimal yang tidak terpisahkan. (Januari = 0, Desember = B)
Menggunakan Algoritma Gauss untuk Januari dan Agustus.
sumber
C,
276219 byteinput dari output stdin di stdout coba http://ideone.com/XtuhGj [fungsi debug z]
sumber