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>
sumber
Jawaban:
Tumpukan jerami , 84 byte, retak
Cobalah online!
Ini kelihatannya (bagi saya) agak berbelit-belit tetapi jika Anda menemukan subset yang tepat itu agak terlalu mudah ... oh well, hanya untuk memulai saja: P
sumber
Hexagony , 37 byte
Cobalah online!
Hanya entri Hexagony wajib saya ...
Untuk kenyamanan, berikut adalah kode yang tidak dilipat:
Bagaimana ini bekerja:
Program dimulai dengan
H
, lalu kita pindah ke IP # 5. IP ini dimulai di sudut barat, memantul dan membungkus sambil mengeksekusi (berlaku);a;y;s;
(jadi kami sudah mencetakHays
). Kemudians
akan bertambah menjadit
oleh)
dan dicetak, lalu kami melewatiNe...(c
sebelum sampai kea;c;
(masih memantul sekitar bagian kecil dari segi enam). Program ini hits_
, mencerminkan melalui\
untukl
yang akan dikurangi untukk
oleh(
, yang melewati lain\
sebelum dicetak dan program berakhir pada yang@
.Versi verbal
Tampilkan cuplikan kode
sumber
Brain-Flak , 146 byte ( Retak )
Cobalah online!
Solusi yang dimaksudkan, 80 byte
sumber
JavaScript, 95 byte (ES6), Retak
Fungsi mengembalikan string.
Demo "tumpukan jerami"
Tampilkan cuplikan kode
sumber
Haskell , 168 bytes ( Cracked by nimi )
Cobalah online! Mengevaluasi pengidentifikasi
h
mengembalikan string"Haystack"
, setelah beberapa penghapusanh
menghasilkan"Needle"
.sumber
Jelly , 41 byte ( Retak )
Cobalah online!
Selamat berburu!
sumber
Hexagony , 32 byte.Retak
Saya tidak bisa menyelesaikan masalah Martin , jadi saya memposting sendiri.
Cobalah online!
Ini diformat:
Tujuan saya dengan ini adalah untuk kedua solusi menggunakan IP sebanyak mungkin, saya mendapat 6 untuk Needle dan hanya 5 untuk Haystack .
sumber
Pyth , 44 byte ( Retak )
Coba di sini.
sumber
Java (OpenJDK 8) ,
226217 byte ( Retak )Golf kode pertama kali, mungkin sangat mudah tapi itu tantangan yang menyenangkan!
Cobalah online!
sumber
return new Main().d();
keSystem.out.print(new Main().d());
dalam metode utama.dc , 148 byte ( Cracked )
Cobalah online!
Ini agak sederhana, tapi saya harap setidaknya akan sedikit menyenangkan untuk diselesaikan: з
sumber
JavaScript, 119 byte (ES6), Retak
Fungsi mengembalikan string. Cukup lama dan tidak terlalu sulit, tapi semoga menyenangkan.
Demo "tumpukan jerami"
Tampilkan cuplikan kode
sumber
Python 2.7.2, 103/117 byte, Retak
Versi Fungsi (117 byte):
Versi Program (103 byte):
Ini harus dicetak dengan
Haystack
baik. Diuji pada Python Fiddle .Btw ini adalah upaya pertama.
Tidak yakin apakah versi program dihitung sebagai cuplikan, jadi saya taruh kedua versi di sini.
sumber
Python 2.7.10 dengan Numpy 1.12.1,
208209 byte ( retak )Tampaknya ada Jarum dan tumpukan jerami di Numpy! Ini tumpukan jerami; lihat apakah Anda dapat menemukan Jarum. Saya harap Anda bersenang-senang mencari Jarum seperti saya menyembunyikannya.
Ini output seperti yang ditentukan:
Anda bisa menggantinya .
sumber
Java 8, 321 byte, Retak
Coba di sini.
Lebih mudah dibaca:
Tidak yakin apakah itu terlalu lama / sulit .. Kemudian lagi, Java secara umum cukup panjang untuk memulai, jadi menyembunyikan 'Jarum' dengan benar tentu saja meningkatkan byte-count cukup sedikit ..
Jika tidak ada yang retak, saya ' Saya akan menambahkan beberapa tip-spoiler nanti.
sumber
Ruby , 185 byte, dipecahkan oleh cab404
Cobalah online!
Saya akan mencoba untuk datang dengan sesuatu yang licik, tetapi untuk sekarang ini adalah mencoba di "sederhana tetapi menjengkelkan."
sumber
Brain-Flak , 188 byte ( Retak )
Saya baru saja melihat jawaban Funky Computer Man Ketika saya memposting ini.
Ini agak dikaburkan.
Cobalah online!
Solusi yang dimaksudkan, 96 byte:
Cobalah online!
sumber
T-SQL, 757 karakter retak
Permintaan maaf karena menghapus jawaban saya sebelumnya - saya mengeditnya terlalu sering ketika saya mengaburkan, dan tidak mau memberikan apa pun. :)
Bagaimanapun, mengaburkan dalam SQL agak sulit, kecuali jika Anda ingin melakukan hal-hal gila seperti ini , dan saya tidak berinvestasi.
Juga, saya tanpa malu-malu tidak meminta maaf karena memberi nama variabel saya setelah Dota.
SQL Fiddle
Jika ini adalah jawaban termudah di utas ini, Anda mungkin benar. : P Sulit untuk mengelabui SQL.
sumber
Ly , 40 byte, retak
Cobalah online!
Oh boy, pengajuan Ly CNR lain. Ini tidak berfungsi dengan baik secara historis (mungkin karena saya dan bukan bahasa),
tetapi kita akan melihat bagaimana ini tarifdan hari ini tidak terkecuali.Larutan:
sumber
Java , 345 byte, Retak
Cobalah online!
Sangat panjang dan mungkin mudah retak, tapi setidaknya ada
Stack<Hay>
!sumber
TI-BASIC, 119 byte (Aman)
Output disimpan di
Ans
.Larutan
Hapus karakter dari
Str1
untuk memberi panjang 1.sumber
PHP, 44 byte, Retak
cukup mudah retak; tapi aku suka itu.
Jalankan dengan
-nr
atau coba online .sumber
Aceto , 154 byte (Aman)
Cobalah online!
sumber