Catatan: Tantangan ini selesai. Kiriman masih diterima tetapi tidak bisa menang.
Ini adalah utas polisi. Utas perampok ada di sini .
Tulis kode yang menampilkan bilangan bulat 1
. Jika Anda menambahkan, menghapus, atau mengganti satu karakter (pilihan Anda), kode tersebut akan menghasilkan bilangan bulat 2
. Ubah satu karakter lagi (sama atau yang lain), dan kode harus ditampilkan 3
. Lanjutkan seperti ini sejauh yang Anda bisa, tetapi maksimum hingga 10. Format output default seperti ans = 1
diterima. Anda dapat mengabaikan output ke STDERR (atau setara).
Anda harus mengungkapkan bahasa, jumlah byte dari kode awal Anda, jumlah bilangan bulat yang berfungsi, serta jumlah karakter opsional dari kode awal. Catatan: Anda tidak harus mengungkapkan karakter apa pun, tetapi ingat bahwa mengungkapkan karakter mungkin mempersulit para perampok karena mereka harus menggunakan karakter yang sama di posisi yang sama. Anda dapat memilih karakter mana yang Anda gunakan untuk menunjukkan karakter yang belum terungkap (misalnya garis bawah), tetapi pastikan untuk menentukan ini.
Polisi dapat memberikan kode yang tidak terpecah setelah satu minggu dan memanggil pengiriman "AMAN". Pengajuan yang menang akan menjadi pengajuan tak terputus terpendek yang menghasilkan angka 10. Jika tidak ada pengajuan tak terputus yang dapat mencetak 10, kode terpendek yang menghasilkan 9 akan menang, dan seterusnya. Perhatikan bahwa perampok tidak harus membuat perubahan yang sama seperti yang Anda lakukan, dan mereka tidak harus mereproduksi kode yang tepat (kecuali jika Anda mengungkapkan semua karakter). Mereka hanya harus mereproduksi output.
Kiriman yang dikirim selambat-lambatnya 24 November disambut tetapi tidak memenuhi syarat untuk menang (karena kemungkinan akan ada lebih sedikit perampok di sekitar).
Contoh posting:
Posting berikut adalah pengiriman dalam bahasa MyLang
, panjangnya 9 byte, dan berfungsi untuk angka 1 - 8.
MyLang, 9 byte, 8 angka
Pengajuan ini bekerja untuk 1 - 8. karakter terungkap ditandai dengan garis bawah: _
.
abc____i
Papan peringkat
Penafian: Papan peringkat tidak diuji dan pengiriman yang tidak terpetakan mungkin tidak muncul dalam daftar.
<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=99546;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>
sumber
1
, bagaimana saya bisa mencegah perampok dari menambahkan)
berulang kali untuk menghasilkan sisa angka? Hal yang sama berlaku untuk beberapa bahasa1
maka tampaknya CJam adalah pilihan bahasa yang buruk untuk tantangan ini. Tidak ada cara untuk mencegah perampok melakukan itu.10
. Aturan itu berlaku karena banyak pengajuan mungkin dapat diperluas hingga tak terbatas (dalam teori), jadi penilaian berdasarkan jumlah yang dicapai tertinggi tidak masuk akal.cracked
dalam beberapa bentuk. Inilah yang sedang dilakukan mendesain ulang skrip pengguna .Jawaban:
Hexagony , 18 Bytes, 10 angka, AMAN
Pengajuan ini bekerja untuk 1 - 10. karakter terungkap ditandai dengan garis bawah:
_
.Anda dapat mencoba Hexagony online di sini.
Solusi saya:
Hex untuk output 1:
Cobalah secara Online!
<
tepi memori adalah0
, jadi itu muncul.1
5
8
, tetapi terbalik<
dan mendapatkan8
di jalan kembali.5
lagi1
<
pada titik ini, nilai memorinya adalah 1585 yang, mod 256, adalah ASCII1
;@
.Hex untuk output 2:
Cobalah secara Online!
Ini mengikuti jalan yang sama, tetapi dalam perjalanan kembali hits
)
yang menambah tepi memori ke 1586, atau2
.Hex untuk output 3-9:
Cobalah secara Online!
2
<
, jadi itu turun.]
mengubah instruksi pointer, tetapi segera datang kembali dengan[
)
kenaikan menjadi3
!
Cetakan3
$
tersisa dari dua angka pertama sehingga kita melompati akhir (@
)1
mengubah tepi memori, tetapi itu tidak masalah sekarang.<
mencerminkan penunjuk kembali.1
tidak masalah karena kami menekan@
untuk mengakhiri program.sumber
Retina , 2 byte, 10 angka, Retak
Berfungsi untuk 1 hingga 10,
_
adalah karakter tersembunyi. Ini seharusnya tidak terlalu sulit, tapi saya harap ini memberikan teka-teki yang agak menarik. :)Anda dapat mencoba Retina online di sini.
sumber
Oktaf, 55 byte, 10 angka, retak
_
adalah karakter yang tidak dikenal.Larutan
sumber
Python 2, 9 byte, 10 angka, retak
Tidak ada karakter tersembunyi. Bisakah Anda memecahkannya tanpa paksa?
sumber
Perl, 12 byte, 10 angka, Retak!
Garis bawah mewakili karakter yang tidak dikenal.
Mungkin cukup mudah, dan tidak akan mengejutkan saya jika ada beberapa solusi. Tetap saja, mungkin menyenangkan untuk memecahkannya.
(Solusi yang dimaksudkan adalah sama dengan crack. Pada dasarnya ini hanya masalah tentang menetapkan 10 ke variabel dalam empat karakter, yang secara mengejutkan sulit di Perl; tidak seperti banyak bahasa golf, itu tidak memiliki variabel yang membantu dimulai pada 10.)
sumber
$_=1;say;#-9
, tetapi saya tidak tahu bagaimana cara mendapatkan 10.Perl, 46 byte, 10 angka, aman
Masalah
Masalah yang lebih pendek cenderung cepat retak, jadi saya pikir saya akan mencoba yang lebih lama. Semakin lama juga cenderung menjadi retak jika orang memiliki cukup celah untuk menyelinap sesuatu yang nakal seperti
say
atauexit
masuk, sehingga semua celah di sini pendek. Karakter tersembunyi diwakili menggunakan_
.Solusi saya
Untuk mencetak 2, 3, dll, hingga 9, terus berubah nomor yang ditetapkan untuk
$b{0}
di baris kedua (yaitu$b{0}=2
,$b{0}=3
, dll). Program untuk 9 terlihat seperti ini:Kemudian untuk menghasilkan 10, komentari baris pertama dengan menambahkan
#
karakter ke dalamnya.Penjelasan
Hal pertama yang perlu diperhatikan adalah bahwa solusinya tidak benar-benar golf selain menghilangkan spasi putih: jika kita meletakkannya dengan spasi putih lebih mudah dibaca, kita mendapatkan ini:
Biasanya, saat Anda mengakses argumen subrutin di Perl, Anda melakukannya dengan menyalinnya
@_
. Ada alasan bagus untuk ini:@_
alias argumen yang diberikan subrutin (jadi, misalnya,(sub { $_[0] = 3 })->($x)
akan ditugaskan$x
), sesuatu yang biasanya tidak diinginkan.Meskipun
@_
mungkin tampak ajaib, sebenarnya hanya menggunakan fitur standar internal Perl (yang sudah tersedia dari XS tetapi hanya muncul dalam beberapa kasus aneh di Perl murni, seperti@_
dirinya sendiri): array tidak menyimpan elemen-elemennya secara langsung , melainkan dengan referensi. Jadi, ketika kita memanggilb
baris kedua di bawah, Perl menghasilkan sebuah array (memanggilnya@_
) yang elemen pertamanya adalah referensi ke penyimpanan yang sama yang$b{0}
menggunakan. (Nilai hash juga disimpan dengan referensi; $ _ [0] dan $ b {0} keduanya merujuk penyimpanan yang sama pada saat ini.) Karena@_
tidak melakukan sesuatu yang istimewa dari sudut pandang internal, kita dapat mengambil referensi untuk itu seperti yang kita bisa dengan array lain, menyebabkannya hidup lebih lama dari subrutin yang didefinisikan dalam.Variabel Perl juga merujuk ke penyimpanan data dengan referensi. Dahulu kala, orang biasa menggunakan kode suka
*x = *y;
mengatur$x
sebagai alias untuk$y
(melalui membuat mereka referensi hal yang sama), juga@x
sebagai alias untuk@y
,%x
sebagai alias untuk%y
, dan sebagainya. Yang agak merusak invarian bahwa variabel dengan nama yang sama tidak harus bertindak sama, jadi Perl modern memberikan alternatif; memberikan referensi ke typeglob hanya menimpa variabel yang cocok dengan jenis referensi (demikian*x = \%y
juga alias%x
untuk menunjuk ke penyimpanan yang sama seperti%y
tetapi tinggalkan, katakanlah,$x
sendirian). Sintaks ini terutama tidak peduli apakah penyimpanan yang Anda gunakan memiliki nama, jadi ketika kami menetapkan nilai pengembalian darib
(yang merupakan referensi array yang membuat array yang sebelumnya disebut@_
hidup)*b
, yang terjadi adalah yang@b
diubah menjadi alias daftar argumen untuk panggilan keb
(sambil meninggalkan%b
tidak berubah). Ini berarti, terutama, bahwa$b[0]
dan$b{0}
sekarang menunjuk ke penyimpanan yang sama, dan menugaskan satu karena itu akan mengubah yang lain. Semuanya sejak saat itu benar-benar mudah.Dokumentasi Perl tidak benar-benar berbicara tentang detail seperti ini, jadi saya tidak terkejut ada yang tahu; sifat
@_
tidak cukup seperti array lain bukanlah sesuatu yang benar-benar ditekankan, dan sebagian besar gaya pengkodean bertujuan untuk meminimalkan efek yang ini daripada memperkuat mereka.sumber
q
dans
dany
danm
(kebanyakan mencoba untuk membuat mereka berakhir setelah$b[0]
penugasan), tetapi tidak ada yang berhasil untuk saya (belum).sub b{\@_}
menyatu dalam pikiran saya, dan, meskipun saya bereksperimen dengan*b
saya tidak bisa mendapatkannya! Terima kasih untuk penjelasannya. Saya mungkin telah mengabaikannya dalam penjelasan Anda, tetapi mengapasub b{\@_}*b=b$b[0]
tidak melakukan hal yang sama?\@_
)*b
, tetapi Anda harus menyebutkan sendiri elemen hash secara eksplisit. Dengan*b=b$b[0]
, Anda pada dasarnya hanya mengganti yang baru$b[0]
(setelah mengubah@b
poin mana ) dengan$b[0]
yang ada pada awal program, yang tidak berguna.JavaScript, 30 byte, 10 angka, sudah di- crack
Seharusnya tidak terlalu sulit, tapi semoga saja cukup sulit untuk memberikan tantangan. :) Karakter yang belum terungkap ditandai dengan
_
.sumber
Perl, 14 byte, 10 angka, Retak
Karya untuk 1 hingga 10.
_
adalah karakter tersembunyi.Saya pikir ini seharusnya tidak terlalu sulit untuk retak. Saya punya yang lebih sulit, untuk 22 byte, saya akan mempostingnya jika ini sudah retak.
Kode asli:
Dan mengganti
"!"
dengan string panjang nomor yang ingin Anda cetak, misalnya!
,!!
,!!!
, dllNamun, ais523 menemukan cara lain:
sumber
JavaScript, 22 byte, 10 angka, sudah di- crack
Mungkin agak mudah retak.
_
menjadi karakter yang tersembunyisumber
xc_de
itu adalah ikan haring merahOktaf, 17 byte, 10 angka, Retak
Solusi asli
_
adalah karakter tersembunyi.sumber
Jelly , 7 byte , 10 angka, retak
Tidak ada wildcard.
Retak yang dicapai (menggunakan eval dengan argumen), seperti yang tampaknya banyak di thread ini, bukan yang dimaksudkan.
Retak yang dimaksud adalah:
sumber
10
, karena saya beruntung yang satu ini ketika mencoba hal-hal yang mungkin berhasil.10
ini bekerja untuk Anda adalah, saya percaya, dengan mengevaluasi kode jelly dalam string9
dengan argumen dari0
(nilai default dari input), yang kemudian Anda dequeue (tidak berpengaruh) dan kemudian bertambah.10
ini bekerja untuk Anda adalah dengan mengevaluasi kode jelly dalam string9
dengan argumen[]
- nilai default input0
,, dequeued - yang kemudian Anda tambahkan., Seperti“1‘‘‘‘‘‘‘‘‘Ọv0Ḋ¤‘
Befunge-93, 11 byte, 10+ angka, Retak
Kiriman ini berfungsi setidaknya untuk 1 - 10. Karakter yang belum diungkap ditandai dengan
â–¡
.Cobalah online
Saya harus mengatakan bahwa saya terkesan bahwa dua orang dapat menemukan solusi independen untuk ini, tidak satu pun dari yang saya harapkan. Ketika Martin sampai di sana lebih dulu, saya memberikan "kemenangan" kepada Sp3000 karena solusi mereka lebih portabel.
Ini adalah solusi yang saya maksudkan:
sumber
"15:**-6-.@
memberi 1, tapi saya tidak yakin apakah fakta yang"
mendorong 32 di atas (karena ruang implisit) adalah artefak dari penerjemah TIO atau bagian dari spesifikasi Befunge, karena mencoba beberapa penerjemah sepertinya tidak semua penerjemah melakukannya. Apakah solusi yang Anda maksudkan bergantung pada perilaku ini?R, 21 byte, 10 angka Retak
Bekerja untuk 10 angka.
_
adalah karakter tersembunyi.Solusi asli:
sumber
Ruby, 16 byte, 10 angka, dipecahkan oleh xsot
#
adalah karakter apa saja.sumber
Oktaf, 32 byte, 10 angka. Retak
_
adalah karakter yang tersembunyi.Anda dapat mencoba Oktaf online di sini .
Solusi asli:
1:
nnz(isprime(floor(sqrt(i):pi')))
2:
nnz(isprime(floor('sqrt(i):pi')))
3:
nnz(isprime(floor('sqrt(i):pia')))
4:
nnz(isprime(floor('sqrt(i):piaa')))
...
sumber
Oktaf, 17 byte, 10 angka, Retak
Karakter yang tidak terungkap ditandai dengan
_
.Solusi yang dimaksudkan:
sumber
Oktaf, 19 byte, 10 angka, retak
_
adalah karakter tersembunyi.Solusi yang dimaksudkan:
sumber
sca
. Berasal dari Anda, saya seharusnya memikirkan fungsi matriks :-)05AB1E , 5 byte, 10 angka, retak!
Tidak terlalu sulit, tapi yang menyenangkan :)
_
adalah karakter acak. Menggunakan pengkodean CP-1252 . Cobalah online!sumber
05AB1E , 6 byte, 10 angka, retak
Percobaan 2, kali ini tanpa string tiga-char: hlm.
_
adalah karakter acak. Menggunakan pengkodean CP-1252 . Cobalah online!sumber
JavaScript, 22 byte, 10 angka, sudah di- crack
_
adalah karakter tersembunyi.Petunjuk tentang solusi yang dimaksud
Karakter yang perlu diubah untuk menghasilkan semua angka selalu sama.
sumber
JavaScript 21 Bytes, 10 Angka Retak
Karakter yang tidak terungkap ditandai dengan
_
Retak
Versi Saya:
sumber
Python 3, 19 byte, 10 angka, retak
Karakter yang tidak terungkap ditandai dengan
?
. Diuji dalam Python 3.5.2.sumber
Python 3, 16 byte, 10 angka, retak
Karakter yang tidak terungkap ditandai dengan
?
. Ini mungkin agak mudah karena hanya ada lima tanda tanya, tapi saya berharap ini akan menyenangkan.sumber
C #, 90 byte, 10 angka, retak
Jujur saya tidak tahu betapa sulitnya untuk memecahkan ini.
Edit: Ups, kesalahan transkripsi. Satu
_
terlalu sedikit setelahnyausing
.Sekarang retak oleh Hedi , yang menemukan solusi yang dimaksudkan (kecuali nama kelas).
sumber
JavaScript 33 Bytes, 10 Angka Retak x2
Ups, saya memposting baris saya untuk menghasilkan 10 Yang Hedi retak seolah-olah untuk 1
Versi yang dimaksudkan untuk memposting untuk menghasilkan 1
Karakter yang tidak terungkap ditandai dengan
_
sumber
console.log(atob|"0Xc0"-0xB6|("Zp=="))
Saya pikirPython, 10+ angka, 61 byte, Retak!
Berikut adalah kode yang saya posting:
Kode aslinya adalah:
Pada dasarnya, ia melempar kesalahan (
'x' is not defined
) dan kemudian mencetak garis kesalahan ditemukan. Jadi, terus tambahkan baris baru di awal untuk menambah angka.Saya tahu itu tidak akan sulit untuk retak - Saya hanya ingin cara yang lucu untuk mencetak angka - tetapi saya tidak mengharapkan Sp3000 untuk mendapatkannya begitu cepat, itu adalah beberapa keterampilan pro!
sumber
STDOUT
dan mencetak nomor, tapi saya kira saya terlalu mempersempitnya. Baiklahsys
pasti membuatnya jauh lebih sederhana, karena memberi titik awal yang bagus untuk mencari: P05AB1E, 11 byte, Retak!
Bekerja dari 1-10.
_
adalah karakter yang tersembunyi.Solusi yang Dimaksud:
sumber
Oktaf, 24 byte, 9 angka, retak
_
adalah karakter yang tersembunyi.(Terinspirasi oleh tantangan @ LuisMendo .)
sumber
JavaScript, 9 byte, 10 angka, Retak
_
adalah karakter tersembunyi.sumber
Oktaf, 25 byte, 9 angka. Retak
_
adalah karakter yang tersembunyi.sumber