PEMBERITAHUAN - Tantangan ini sekarang sudah ditutup. Setiap jawaban baru akan diabaikan dan jawaban yang diterima tidak akan berubah
Tantangan
Tulis program yang valid yang, ketika hanya dua karakter dalam program diubah, dihapus atau ditambahkan, sepenuhnya mengubah output.
Output yang diubah harus memiliki Levenshtein Distance 15 atau lebih dari output asli Anda.
Keluaran harus tidak kosong dan terbatas. Karena itu program Anda harus berakhir dalam 1 menit.
Output Anda harus deterministik, menghasilkan hal yang sama setiap kali Anda menjalankan program. Itu juga tidak boleh bergantung pada platform.
Setiap fungsi hash tidak diizinkan , seperti yang dibangun pada PRNG. Demikian pula, penyemaian RNG tidak diizinkan.
Setelah jangka waktu tiga hari, pengiriman yang tidak retak akan menjadi aman. Untuk mengklaim keamanan ini, Anda harus mengedit jawaban Anda untuk menunjukkan jawaban yang benar. (Klarifikasi: Sampai Anda mengungkapkan jawabannya, Anda tidak aman dan masih bisa di-crack.)
Memformat
Jawaban Anda harus dalam format berikut:
# <Language name>, <Program length>
## Code
<code goes here>
## Original Output
<output goes here>
## Changed output
<changed output goes here>
Perampok
Tantangan para perampok adalah untuk mengetahui dua karakter yang telah Anda ubah. Jika seorang perampok telah memecahkan solusi Anda, mereka akan meninggalkan komentar pada jawaban Anda.
Anda dapat menemukan utas perampok di sini .
Kemenangan
Orang dengan solusi terputus yang paling cepat menang.
Papan peringkat
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>site = 'meta.codegolf';postID = 5686;isAnswer = false;QUESTION_ID = 54464;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 bylength=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 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) { 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])+)\s*(?:[,;(]|\s-).*?([0-9]+)/.exec(h); var e = [[n++, m ? parseInt(m[2]) : 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.length == 100) g(p + 1); else { var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']]; for(var p=0;p<2;p++) u(s[p],bylength); jQuery('#uncracked_by_length').bind('click',function(){u(s[0],bylength);return false}); jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false}); } });}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><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;}</style><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Length</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_length">length</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">Length</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>
sumber
Jawaban:
CJam, 13 byte (aman)
Cobalah online.
Output asli
Output yang dimodifikasi
Larutan
Cobalah online.
Bagaimana itu bekerja
Ini mengambil keuntungan dari bagaimana CJam secara implisit mencetak seluruh tumpukan setelah menjalankan program.
Cukup membuang representasi basis-2 dari beberapa bilangan bulat pada tumpukan menyebabkannya dicetak tanpa pemisah apa pun, sehingga akan sulit untuk mengetahui di mana salah satu dari mereka mulai dan yang lainnya berakhir.
Kode asli melakukan hal berikut:
Seperti @AndreaBiondo catat dalam komentar, representasi biner dari 0! ke 8! dapat ditemukan di awal output (spasi ditambahkan untuk kejelasan):
Perubahan yang dimaksudkan adalah untuk menggantikan
mQ
denganci
, yang mengambil integer modulo 65536, menggunakan aritmatika karakter 16-bit (casting ke karakter 16-bit yang tidak ditandatangani, kemudian kembali ke integer).Saya berharap ide menggunakan
c
untuk menggantikan operator matematika akan cukup jelas.sumber
_)mQ
perlu diubah menjadif(x!)
seperti ituf(x!) > x!
untukx <= 8
danf(x!) < x!
untukx >= 9
, karenax!
jelas sedang dimodulasi oleh nomor yang membuat faktorial dari 0 hingga 8 utuh dalam output. Saya tidak melihat9!
adalah faktorial pertama yang lebih besar dari2^16
. Tantangan yang sangat bagus.Retak
Shakespeare, 1721 byte
Saya mencoba jawaban Shakespeare. Itu tidak pendek, dan saya mengalami kesulitan untuk mengubah output dengan hanya 2 karakter, tapi saya pikir saya berhasil dengan cukup baik. Semoga Sukses semuanya. Sebagai catatan tambahan, saya menggunakan "kompiler" yang tersedia di alamat ini dan mungkin tidak berfungsi dengan yang lain. (tidak bekerja dengan penerjemah online). Keluaran tidak mengandung karakter yang tidak patut.
Kode
Output Asli
Output Berubah
sumber
J, 76 byte (aman)
Kode
Output Asli
Output berubah
EDIT: Solusi
{:
ditambahkan (ditampilkan di antara###
)Memanfaatkan
{::
Peta monad . Sebagian besar sisa kode adalah sampah yang tidak berguna.sumber
Retak
Ruby, 14
Kode
Output Asli
Output berubah
sumber
'99'*2
.wc
, kamu mengkhianatiku!Retak
Bash, 15 byte
Output asli
Output yang dimodifikasi
sumber
Retak
Prolog, 10 byte
Kode
Output Asli
Output berubah
sumber
X is 1//4-2.
:, yang jauh lebih mudah dilihat daripada solusi asli saya yang @ sp3000 retak ...Retak
Python 2, 43 byte
Kode
Output Asli
Output berubah
Jarak Levenshtein adalah 15 tepat. Baik yang asli dan yang diubah berjalan di bawah 1 menit di komputer saya.
sumber
print
dan penggandaanrange
oleh bilangan bulat. Namun, saya tampaknya mendapatkanMemoryError
dari daftar besar ...xrange
alih-alihrange
dan saya percayaitertools
memiliki pembuat generator yang mengulangi urutanx
beberapa kali.Retak
BrainFuck, 504 byte
Tidak seorang pun perlu menganalisis kode brainfuck. Ini adalah versi modifikasi dari kode sebelumnya, tetapi setiap perubahan dalam kode Brainfuck membuat perbedaan besar dalam output. Saya menggunakan Juru Bahasa di http://esoteric.sange.fi/brainfuck/impl/interp/i.html untuk menguji kode saya. Semoga berhasil !
Kode
Output Asli
Output Berubah
Catatan: Output yang Diubah mengandung beberapa karakter STX (ASCII 2) dan EOT (ASCII 4)
Ini adalah versi dengan kode ASCII dalam tanda kurung alih-alih karakter yang tidak patut:
sumber
retak
Bahasa Wolfram (Mathematica atau WolframAlpha), 3 byte
Kode
Output Asli
Output berubah
Bagi mereka yang mencobanya di WolframAlpha hasilnya muncul sebagai
Saya menghapus jawaban saya sebelumnya karena hanya berfungsi pada Mathematica dan bukan di WolframAlpha . Itu menempatkan perampok di belakang paywall (bukan bar yang layak), yang tidak adil.
sumber
Retak
MATLAB / OCTAVE, 7 byte
Kode:
Output asli:
Output yang diubah:
Ini memberikan jarak Levenshtein tepat 15.
sumber
Retak
CJam, 8 karakter
Kode
Output asli
Output berubah
Output setelah modifikasi ada di sini . Keduanya berlangsung di bawah satu menit pada laptop 2GHz saya.
Penjelasan
Orang-orang tampak kagum dengan cara kerjanya. Kode kerjanya seperti ini:
Ini menghitung 126 ^ 102. Solusinya adalah:
Ini menghitung ((125 ^ 9) ^ 126) ^ 102, yang merupakan ratusan ribu digit.
sumber
Retak
Pyth, 8 byte
Kode:
Output awal:
Output Berubah:
sumber
CG mod (2^21 * 28)
. Saya tidak tahu Pyth, jadi saya tidak bisa melihat bagaimana cara mengubahnya(3 ^ (2 * 21))
menjadi ...CG
samasum(256**n * (122-n) for n in range(26))
.CG mod (2^21 * 28 * 2*n)
, di mana1 <= n <= 4
, serta untukn=6
dann=12
. Juga,CG
hanya alfabet huruf kecil yang ditafsirkan sebagai angka 256 basis. Saya ingin tahu apakah ada modulo lain dengan basis 3?%CG^2 26
atau%CG^4y13
, tetapi keduanya memiliki jarak 3 ...Retak
Python 2, 58 byte
Kode
Output Asli
Output berubah
Aturan 15 jarak itu pasti membuat segalanya rumit. Saya harap ini berjalan dengan baik.
sumber
[m<<min(m,n)for m in R for n in R]
dalam interpreter, Anda mendapatkan beberapa pola esque white-noise yang sangat menyeramkan.Retak
Python 2, 50 byte
Kode Asli:
Output Asli:
Output yang Dimodifikasi:
Tidak terlalu pendek, dan mungkin tidak terlalu sulit, saya tidak begitu tahu. Saya akan mencoba untuk datang dengan sesuatu yang lebih baik segera.
sumber
x
dengany
,y
denganx
, atau mengubah angka dalamrange
hasil dalam 19 tildes. Saya juga bereksperimen dengan memasukkan-
sebelumx
atauy
, dan dengan mengubah%
ke salah satu+ - / *
, tetapi tidak berhasil. Saya cukup yakin sekarang bahwa 1 atau 2 sisipan diperlukan.y
ke dalam lingkup terlampir adalah sentuhan yang bagus.Retak
PHP, 164 byte
Kode
Output Asli
Output berubah
sumber
GolfScript, 15 byte (aman)
Kode
10,{1+3?}%{*}*]
Kode yang diubah
107,{1+3?}%{^}*]
Output Asli
47784725839872000000
Output berubah
557154
Penjelasan:
Kode yang diubah
sumber
Retak
APL , 7 byte
Kode
Output asli
Output berubah
sumber
J
dalam bukti keluaran bahwa itu bilangan kompleks?aJb
mengacu pada bilangan kompleksa + bi
.Retak
C, 53 byte
Kode
Output Asli
Output berubah
Mungkin terlalu mudah, tetapi siapa yang tahu. (Catatan: secara teknis sistem tergantung tetapi jenis sistem yang gagal juga akan gagal semua kiriman lainnya di sini, jadi saya pikir itu adalah titik diperdebatkan).
Retak
Sunting
Saya membuat kesalahan. Kode baru yang lebih aman dari serangan nyata:
output yang sama. Ukuran baru 65 byte. Semoga lebih sulit ... meski mungkin masih terlalu mudah.
sumber
Retak oleh issacg
MATLAB, 20 byte
Kode
Output Asli
Output Berubah
sumber
sinh
,asin
,tan
,pi^i
, dll ...Retak
Oktaf, 20 byte
Keluaran:
Output Berubah:
sumber
CJam, 28 byte (aman)
Cobalah online .
Output asli
Output yang dimodifikasi
Larutan
Cobalah online.
Bagaimana itu bekerja
Aku sedikit berlebihan dengan yang ini ...
Kode asli melakukan hal berikut:
Perubahan yang dimaksud diganti
(i
denganWci
.Ini membuat string berulang tidak tersentuh dan mendorong 65535 (dengan memberikan karakter 16-bit yang tidak ditandatangani, lalu kembali ke integer), sehingga elemen pertama dari urutan Fibonacci yang tertinggal menjadi
dan loop diulang 126 kali.
sumber
Javascript, 47 (aman)
Kode
Output Asli
Output berubah
Jarak persis 15.
Diuji di Chrome dan IE.
Larutan
Ini menggunakan operator penugasan bit shift
i>>=1
untuk membuat interval loop menjadi non-linear. Juga ini memiliki sifat lucu yang seseorang mencoba untuk memaksa solusi akan mengalami beberapa variasi yang berjalan tanpa batas.sumber
Retak
Fantom , 26
Kode
Output Asli
Output berubah
Keamanan Melalui Ketidakjelasan, jika tidak ada yang tahu bahasa, tidak ada yang bisa memecahkannya. Levenshtein Jarak 15. Jalankan di fansh.
sumber
Retak
CJam, 6 karakter
Output asli
Output berubah
Ini mungkin terlalu mudah. : P
sumber
Retak
Java, 149 Karakter
Output Asli
Output yang Dimodifikasi
Petunjuk:
sumber
Brainfuck, 100 byte
Kode
Output asli
Output berubah
Catatan: Mungkin mudah retak. Tapi kemudian, tidak ada yang mudah di Brainfuck.
sumber
retak
modern Perl 5, 70
Kode
Output Asli
Satu baris baru.
Output berubah
Output dimulai dengan spasi dan diakhiri dengan baris baru.
sumber
each
berlaku untuk array hanya karena beberapa versi.Retak
Matlab, 12 byte
Kode
Output asli
Output berubah
sumber
perl, 12 byte
retak
Kode
Output asli
Output yang diinginkan
sumber
print sin xx
,print sin xx97
atauprint sin 97xx
manaxx
adalah setiap dua nomor.9.?7
,9.7?
, dll, tapi menyadari itu harus menjadi operator. Mencoba semua yang dapat saya pikirkan dalam cuplikan sepertiperl -e 'print map{sin((+"9${_}")x7).$/}1..9'
akhirnya mendapatkan kombinasi yang tepat!Retak
SWI-Prolog, 54 byte
Kode
Output Asli
Output berubah
sumber
E
danF
dalamprint
pernyataan, apakah Anda mendapatkan yang Anda inginkan?