Ini adalah bagian dari tantangan polisi dan perampok . Buka di sini untuk bagian perampok.
Tantangan Polisi
Anda harus menulis sebuah program atau fungsi dalam bahasa pilihan Anda, yang menghasilkan string Haystack
. Namun, harus dimungkinkan untuk menghapus beberapa subset karakter dari program Anda (tanpa menata ulang sisanya), sehingga string yang dihasilkan juga merupakan program yang valid dalam bahasa yang sama, yang mencetak Needle
sebagai gantinya. Kedua program / fungsi secara opsional dapat mencetak satu baris baru (tidak tergantung satu sama lain), tetapi tidak ada yang lain. Output case-sensitive dan harus mengikuti casing yang disediakan.
Tujuan Anda, tentu saja, adalah menyembunyikan "jarum" dengan sangat baik. Tapi catatan bahwa kiriman Anda dapat retak dengan setiap solusi yang valid, bukan hanya satu yang Anda inginkan.
Harap sertakan dalam jawaban Anda:
- Bahasa (dan versi jika relevan) dari kiriman Anda.
- Ukuran program tumpukan jerami dalam byte.
- Program tumpukan jerami itu sendiri.
- Metode output jika bukan STDOUT.
- Jika memungkinkan, tautan ke juru bahasa / kompiler online untuk bahasa pilihan Anda.
Kiriman Anda bisa berupa program atau fungsi, tetapi bukan cuplikan dan Anda tidak boleh menganggap lingkungan REPL. Anda tidak boleh mengambil input apa pun, dan Anda dapat mengeluarkan melalui STDOUT, nilai pengembalian fungsi atau parameter fungsi (keluar).
Kedua program / fungsi harus selesai dalam waktu 5 detik pada mesin desktop yang masuk akal dan harus deterministik. Anda tidak boleh menggunakan built-in untuk hashing, enkripsi, atau pembuatan angka acak (bahkan jika Anda menyemai generator nomor acak ke nilai tetap).
Untuk kepentingan keadilan, harus ada juru bahasa atau kompiler yang tersedia secara bebas untuk bahasa pilihan Anda.
Sebuah jawaban retak jika program Jarum ditemukan. Jika jawaban Anda belum retak selama 7 hari, Anda dapat mengungkapkan program Needle yang dimaksud dalam jawaban Anda, yang membuat kiriman Anda aman. Selama Anda tidak mengungkapkan solusi Anda, itu mungkin masih bisa dipecahkan oleh perampok, bahkan jika 7 hari telah berlalu. Brankas terpendek tumpukan jerami (diukur dalam byte) menang.
Contohnya
Berikut adalah beberapa contoh sederhana dalam berbagai bahasa:
Ruby
Haystack: puts 1>0?"Haystack":"Needle"
Delete: XXXXXXXXXXXXXXX
Needle: puts "Needle"
Python 2
Haystack: print "kcatsyaHeldeeN"[-7::-1]
Delete: XXXXXXXX XX
Needle: print "eldeeN"[::-1]
Perhatikan bahwa subset dari karakter yang dihapus tidak harus bersebelahan.
Pengajuan Tidak Rusak
<script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 144600;</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>