Bagian polisi
Bagian perampok dapat ditemukan di sini .
Terima kasih kepada FryAmTheEggman , Peter Taylor , Nathan Merrill , xnor , Dennis , Laikoni dan Mego untuk kontribusi mereka.
Tantangan
Tugas Anda adalah menulis 2 program berbeda (program penuh / fungsi / dll. ) Dalam bahasa yang sama dan versi yang sama (misalnya Python 3.5 ≠ Python 3.4, sehingga tidak diizinkan), dan ketika diberikan n (menggunakan STDIN / argumen fungsi / etc. ), hitung a (n) di mana a adalah urutan OEIS pilihan Anda. Salah satu dari program tersebut lebih pendek dari yang lain. Anda hanya perlu mengirimkan program yang lebih panjang dari keduanya. Yang lain perlu diselamatkan jika tidak retak setelah 7 hari. Kiriman Anda sudah di-crack ketika program Anda telah dikalahkan (baik dengan 1 byte atau lebih).
Misalnya, jika tugas yang Anda pilih adalah menjalankan 2 × n , ini bisa menjadi pengiriman yang valid (dengan Python 2):
Python 2, 16 byte, skor = 15/16 = 0,9375
print(2*input())
Menghitung A005843 , (offset = 0).
Jika kiriman Anda telah di-crack, maka Anda perlu menyatakannya di header seperti:
Python 2, 16 byte, skor = 15/16 = 0,9375, [retak] + tautan
print(2*input())
Menghitung A005843 , (offset = 0).
Mengimbangi
Ini dapat ditemukan di setiap halaman OEIS. Misalnya, untuk A005843 , offsetnya adalah 0,2
. Kita hanya perlu menggunakan yang pertama, yaitu 0
. Ini berarti bahwa fungsi didefinisikan untuk semua angka ≥ 0.
Dengan kata lain, fungsi OEIS (n) dimulai dengan n = 0 . Program Anda perlu bekerja untuk semua kasus yang diberikan oleh OEIS.
Informasi lebih lanjut dapat ditemukan di sini .
Mencetak gol
Skor yang Anda dapatkan untuk kiriman Anda sama dengan rumus berikut:
Nilai = Panjang (dalam byte) dari kode rahasia ÷ Panjang (dalam byte) dari kode publik
Contoh di atas memiliki skor 15 ÷ 16 = 0,9375.
Pengajuan dengan skor terendah akan menang. Hanya kiriman yang telah memposting solusi mereka yang memenuhi syarat untuk menang.
Aturan
- Tugas yang perlu Anda lakukan adalah urutan OEIS pilihan Anda.
- Diberikan n , keluaran OEIS (n) . Deviasi tidak diperbolehkan, jadi Anda perlu menghasilkan urutan yang sama persis (ketika diberikan n, Anda perlu menampilkan OEIS (n)).
- Pengajuan yang tidak retak dalam jangka waktu 7 hari dianggap aman setelah solusinya telah diposting (pengiriman yang lebih dari 7 hari yang tidak memiliki solusinya diposting masih rentan dalam retak).
- Dalam kiriman Anda, Anda perlu memposting hal-hal berikut: nama bahasa , jumlah byte , kode lengkap , sehingga tidak ada tautan pastebin dll. (Untuk mencegah jawaban seperti Unary), urutan OEIS , skor dengan panjang kedua program dan juga, pengkodean yang digunakan.
- Catatan: urutan yang sama tidak dapat diposting dua kali dalam bahasa yang sama . (Misalnya, jika urutan A005843 telah dilakukan dalam Pyth, Anda tidak dapat menggunakan Pyth lagi untuk urutan yang sama.)
- Input dan output keduanya dalam desimal (basis 10)
Papan peringkat
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><style>table th,table td{padding: 5px;}th{text-align: left;}.score{text-align: right;}table a{display: block;}.main{float: left;margin-right: 30px;}.main h3,.main div{margin: 5px;}.message{font-style: italic;}#api_error{color: red;font-weight: bold;margin: 5px;}</style> <script>QUESTION_ID=88979;var safe_list=[];var uncracked_list=[];var n=0;var bycreation=function(x,y){return (x[0][0]<y[0][0])-(x[0][0]>y[0][0]);};var byscore=function(x,y){return (x[0][1]>y[0][1])-(x[0][1]<y[0][1]);};function u(l,o){jQuery(l[1]).empty();l[0].sort(o);for(var i=0;i<l[0].length;i++) l[0][i][1].appendTo(l[1]);if(l[0].length==0) jQuery('<tr><td colspan="3" class="message">none yet.</td></tr>').appendTo(l[1]);}function m(s){if('error_message' in s) jQuery('#api_error').text('API Error: '+s.error_message);}function g(p){jQuery.getJSON('//api.stackexchange.com/2.2/questions/' + QUESTION_ID + '/answers?page=' + p + '&pagesize=100&order=desc&sort=creation&site=codegolf&filter=!.Fjs-H6J36w0DtV5A_ZMzR7bRqt1e', function(s){m(s);s.items.map(function(a){var he = jQuery('<div/>').html(a.body).children().first();he.find('strike').text('');var h = he.text();if (!/cracked/i.test(h) && (typeof a.comments == 'undefined' || a.comments.filter(function(b){var c = jQuery('<div/>').html(b.body);return /^cracked/i.test(c.text()) || c.find('a').filter(function(){return /cracked/i.test(jQuery(this).text())}).length > 0}).length == 0)){var m = /^\s*((?:[^,;(\s]|\s+[^-,;(\s])+).*(0.\d+)/.exec(h);var e = [[n++, m ? m[2]-0 : null], jQuery('<tr/>').append( jQuery('<td/>').append( jQuery('<a/>').text(m ? m[1] : h).attr('href', a.link)), jQuery('<td class="score"/>').text(m ? m[2] : '?'), jQuery('<td/>').append( jQuery('<a/>').text(a.owner.display_name).attr('href', a.owner.link)) )];if(/safe/i.test(h)) safe_list.push(e);else uncracked_list.push(e);}});if (s.items.length == 100) g(p + 1);else{var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']];for(var i=0;i<2;i++) u(s[i],byscore);jQuery('#uncracked_by_score').bind('click',function(){u(s[0],byscore);return false});jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false});}}).error(function(e){m(e.responseJSON);});}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/Sites/codegolf/all.css?v=7509797c03ea"><div id="api_error"></div><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_score">score</a> <a href="#" id="uncracked_by_creation">creation</a></div></div><div class="main"><h3>Safe submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>
Catatan
Tantangan ini selesai. Pemenang akhir adalah feersum dengan jawaban Seed- nya . Selamat! :)
Anda masih dapat mengirim polisi baru, tetapi perlu diketahui bahwa mereka tidak lagi bersaing.
Jawaban:
Seed , 5861 bytes, skor = 5012/5861 = 0,85
Urutannya adalah bilangan prima ( A000040 ) dengan offset 1. a (1) = 2, a (2) = 3, a (3) = 5 dll.
Program Befunge-98 diuji dengan interpreter ini .
Larutan:
sumber
Jelly , 5 byte , skor 0,8 (4/5) [ retak! ]
Menghitung A127721 .
Cobalah online!
Inilah solusinya:
n
R
: daftar dari[1, 2, ..., n]
ÆḊ
: Dalam kasus kami, ini sebenarnya akan mengembalikan akar kuadrat dari jumlah kuadrat (yang mungkin berguna dalam bermain golf di masa depan)!Ḟ
: lantai hasilnya.The dokumentasi untuk
ÆḊ
berbunyi:Kuncinya diperluas ke matriks non-persegi . "Penentu" dari matriks non-kuadrat biasanya tidak terdefinisi, tetapi satu definisi yang masuk akal adalah
sqrt(det(A A^T))
(yang untuk matriks kuadrat dikurangi menjadi|det(A)|
). Dalam kasus kami,A A^T
adalah matriks 1 x 1 yang berisi jumlah kuadrat. Akar kuadrat dari determinan itu memberi kita apa yang kita butuhkan untuk memotong byte terakhir!sumber
Retina , 28 byte, skor = 0,9286 ... (26/28), dipecahkan oleh feersum
Menghitung A192687 , (offset = 0).
Cobalah online! (Baris pertama memungkinkan suite tes yang dipisahkan dengan linefeed.)
Ini adalah perbedaan antara urutan Hofstadter pria dan wanita . ( Tantangan PPCG yang relevan. )
Ini adalah kode asli saya:
Bagaimanapun jawaban ini sedikit taruhan, karena solusi sebenarnya berdasarkan pada regex yang saya umumkan sebagai regex Fibonacci-testing terpendek yang dikenal dalam obrolan beberapa bulan yang lalu. Untungnya, sepertinya tidak ada yang ingat itu. :)
sumber
Hexagony , 91 byte, Nilai = 0,725274725 (66/91) [Retak]
Menghitung A000045 (Urutan Fibonacci, offset 0).
Saya tidak akan terlalu terkejut jika seseorang berhasil mengalahkan ini dan versi saya yang lebih golf
, meskipun itu pasti sulit.Sunting: Astaga, @MartinEnder mencambuk saya dengan solusi 33 byte.
Golf (91):
Diformat:
Cobalah online!
Saya tidak akan memposting penjelasan untuk ini, itu terlalu mengerikan ...
Golf (66):
Diformat:
Berwarna:
Cobalah online!
Penjelasan:
Tata letak memori yang saya gunakan terlihat sedikit seperti ini:
Inisialisasi (hitam) menetapkan a = 0 dan b = 1. Kemudian, loop utama:
a
ke sel input -'"
(
{{=+
"+{=*
'+
'+}=*
"=+
"+
}+
Setelah sel input mencapai 0, MP bergerak ke a, mencetak, dan keluar.
Apa yang bisa saya lakukan untuk menghemat lebih banyak byte adalah dengan menggunakan &, yang hanya mengatur sel saat ini ke tetangga sebelah kiri atau kanannya. Saya juga bisa memiliki kontrol aliran yang sedikit lebih baik, tapi tidak apa-apa.
sumber
&
adalah untuk memindahkan input di sekitar tepi a / b / a + b sehingga mereka bertukar peran mereka pada iterasi berikutnya. Dengan begitu, aku tidak perlu menggerakkan a, b dan a + b sama sekali.M , 10 byte , skor 0,6 (6/10) [ retak ]
Sedikit curang karena M dan Jelly sangat mirip, tetapi diizinkan oleh aturan. Versi ini didasarkan pada celah @ LeakyNun untuk jawaban Jelly saya.
Ini menghitung urutan A068943 . Cobalah online!
Solusi yang dimaksudkan
Kode berikut berfungsi di M / Jelly.
Saya sebenarnya punya solusi 4-byte yang saya tambahkan beberapa bulu untuk membuatnya tampak lebih sulit untuk retak dengan menggunakan kekuatan kasar.
Cobalah online!
Ini yang akan saya jelaskan.
sumber
Stack Cats , 14 byte, skor = 13/14 = 0,929 [ retak ]
Itu 10 byte kode, ditambah 4 untuk argumen
-nm
.Menghitung A017053 . Jika OEIS sedang down, itu
a(n) = 7n + 6
mulai darin = 0
.Kode lengkap (dapat digunakan tanpa
-m
argumen) adalah![_-_:-_-_-_-:_-_]!
Solusi tersembunyi itu
sumber
Snowman , 50 byte, skor = 0,9 (45/50) [ dipecahkan oleh Lynn ]
Ini adalah subrutin yang menggunakan nomor sebagai argumennya dan mengembalikan nomor lainnya.
Menghitung A122649 (offset = 1).
Cobalah online!
sumber
Haskell, 15 byte, skor = 13/15 (0,866) ( retak )
A109613 dengan offset 0. Mengulangi setiap angka ganjil dua kali.
sumber
Brachylog , 27 byte, skor = 0,666 ... (18/27), Retak!
Menghitung A010551 (offset = 0).
Anda dapat mencobanya online di sini .
Penjelasan
Karena sebagian besar orang tidak tahu bahasa ini, dan karena saya memposting jawaban ini sebagian besar untuk membuat orang melihatnya (Lihat: Wiki Brachylog ), saya akan memberikan penjelasan singkat tentang kode di atas:
sumber
Haskell, 4 byte / 5 byte ( dipecahkan oleh Leaky Nun )
Mari kita mulai dari yang sederhana. A000012 , urutan semua 1 (offset 0). Ini sebuah tabel:
5 byte:
sumber
Java 7, 53 byte, skor = 0,9623 (51/53) Retak
Menghitung urutan Perrin, A001608
Upaya golf kode pertama, jangan ragu untuk menunjukkan kesalahan.
Penjelasan setelah retak:
miles memperpendek tiga nilai pertama (0,1,2) -> (3,0,2) menjadi
sedangkan solusi saya sendiri adalah rekayasa yang sedikit berlebihan
Menggabungkan dua trik, Anda dapatkan
untuk 47-byte
yang terlihat cukup kompak untuk Java :)
sumber
Cheddar, 7 byte, skor = 0,8571 (6/7), [retak]
Cukup sederhana, hanya kekuatan dua. OEIS A000079
Cobalah online!
sumber
J, 17 byte, skor = 0,8235 (14/17) ( retak )
Menghitung A002478 .
Yang lucu adalah bahwa versi ini awalnya adalah versi pendek untuk dirahasiakan.
sumber
Python 2, 43 byte, skor = 0,9302 (40/43), dipecahkan
f=lambda n:n==1or-(-sum(map(f,range(n)))/3)
Menghitung A072493
Mari kita lihat apakah ada yang bisa bermain golf semua 3 byte.
sumber
True
digunakan untuk mewakili1
?s=1;exec"a=-(-s/3);s+=a;"*input();print a
untuk 41.if x
yang benar ( benar) adalah pengembalian yang valid.Pyke, 11 byte, skor = 0,45 (5/11) [retak]
Menghitung OEIS A180255
Coba di sini!
sumber
Z
tidak berdokumen; bahasa mengklaim berbasis stack tetapi setelah*
hanya ada nol pada stack meskipun memiliki efek pada sisa kode; urutan parameter tidak ditentukan dengan jelas)Jelly , 9 byte , skor 0,5556 (5/9) [ retak ]
Ini menghitung urutan A119259 . Cobalah online!
sumber
Brachylog , 11 byte, skor = 10/11 = 0,909, retak!
Menghitung A173426 .
Cobalah online!
Penjelasan
sumber
J, 20 byte, skor = 0,75 (15/20) ( retak )
Menghitung A001654 .
Solusi saya selama 15 byte adalah
sumber
Sesos , 14 byte, skor = 0,8571 (12/14) ( retak )
Menghitung A000290 .
Cobalah online!
Petunjuk
File biner ini telah dihasilkan oleh assembler berikut:
sumber
MATL , 11 byte, skor = 0,8181 (9/11), retak
Menghitung fungsi Möbius , atau A087811 (offset 1).
Cobalah online!
Sumber daya untuk perampok
Saya pikir ini harus mudah, tapi bagaimanapun ini ada bantuan.
Penjelasan kode:
Dokumentasi bahasa .
MATL chatroom .
sumber
YftdA_wn^
Jelly , 11 byte , skor 0,5455 (6/11) [ retak ]
Ini menghitung urutan A068943 . Cobalah online!
sumber
MarioLANG , 87 byte, skor = 0,839 (73/87), retak
Menghitung A000217 , angka segitiga. Offset 0.
Cobalah online!
Solusi Singkat:
Karena crack hanya mengambil 1 byte, saya akan membagikan solusi saya dalam 73 byte, yang menggunakan algoritma yang berbeda sama sekali:
Cobalah online!
Program pertama menjabarkan semua angka dari n hingga 1 di sepanjang kaset, lalu menjumlahkan semua angka sampai muncul sel bernilai 0. Ia melakukan ini dengan menyalin setiap sel ke dalam dua sel yang berdekatan, menurunkan salinan yang tepat, dan mengulangi proses di atasnya sampai mencapai 0. Selama proses ini, rekaman itu terlihat seperti ini (untuk n = 5):
... dan seterusnya. Kemudian bergerak ke kiri, menjumlahkan sel sampai mencapai sel dengan 0.
Program kedua hanya bekerja dengan tiga sel rekaman. Sampai sel pertama mencapai 0, ia melakukan yang berikut:
Setelah sel pertama mencapai 0, sel ketiga akan berisi n + (n-1) + (n-2) + ... + 2 + 1.
sumber
:
jika ada di baris terbawah, itulah sebabnya saya menyertakan baris baru yang tertinggal di tautan. Martin dan saya membahas hal ini dalam jawaban MarioLANG saya yang lain.M , 18 byte , skor 0,3889 (7/18) [ retak ]
Pendekatan ini didasarkan pada golf jawaban J3 @ Sp3000 saya.
Kode menghitung urutan A116881 (jumlah baris CM (1,2) ). Cobalah online!
sumber
Haskell, 28 byte, skor = 0,3571 (10/28), retak
A006519 , kekuatan tertinggi dari 2 pembagian
n
, mulai darin=1
.Sementara Anda mendapatkan kredit retak untuk kode yang lebih pendek, saya menganggap teka-teki yang sebenarnya turun menjadi 10 byte.
sumber
05AB1E , 9 byte, skor = 0,6667 (6/9), Retak
Menghitung: A087811
Cobalah online
sumber
Hexagony , 7 byte, skor = 0,857 (6/7), retak
Tidak dirancang untuk menjadi karya pemenang, tetapi pasti seorang cracker otak. Sebenarnya tidak terlalu sulit jika Anda memikirkannya: hal. Kode:
Atau versi yang lebih mudah dibaca:
Menghitung A052246 .
Cobalah online! .
sumber
J, 9 byte, skor = 0,6667 (6/9) ( retak oleh Dennis )
Menghitung A056594 .
sumber
J, 10 byte, skor = 0,9 (9/10) ( dipecahkan oleh Dennis )
Menghitung A000326 .
Ini harus mudah.
Penerjemah online .
Quickref .
sumber
05AB1E , 7 byte, skor = 0,571 (4/7), Retak
Menghitung: A006331
Cobalah online
Setelah bermain golf 5 versi unik dari urutan ini sebelum menemukan versi publik ini saya harap saya tidak meninggalkan perbaikan yang jelas di luar sana sehingga setidaknya akan menjadi tantangan bagi para perampok.
sumber
M , 9 byte , skor 0,6667 (6/9) [ retak ]
Sedikit curang karena M dan Jelly sangat mirip, tetapi diizinkan oleh aturan. @miles 'crack untuk jawaban Jelly saya tidak berfungsi di M; tidak memiliki
œċ
atom.Ini menghitung urutan A119259 . Cobalah online!
sumber