Mã thang, Cops


36

Lưu ý: Thử thách này đã kết thúc. Đệ trình vẫn được chào đón nhưng không thể giành chiến thắng.

Đây là chủ đề của cảnh sát. Chủ đề của bọn cướp đến đây .

Viết mã xuất ra số nguyên 1. Nếu bạn thêm, xóa hoặc thay thế một ký tự (bạn chọn), mã sẽ xuất ra số nguyên 2. Thay đổi thêm một ký tự (giống hoặc khác) và mã sẽ xuất ra 3. Tiếp tục như thế này càng xa càng tốt, nhưng tối đa lên tới 10. Các định dạng đầu ra mặc định như ans = 1được chấp nhận. Bạn có thể bỏ qua đầu ra cho STDERR (hoặc tương đương).

Bạn phải tiết lộ ngôn ngữ, số byte của mã ban đầu của bạn, số lượng số nguyên mà nó hoạt động, cũng như số lượng ký tự tùy chọn của mã ban đầu. Lưu ý: Bạn không phải tiết lộ bất kỳ nhân vật nào, nhưng hãy nhớ rằng việc tiết lộ các nhân vật có thể gây khó khăn hơn cho bọn cướp vì chúng phải sử dụng cùng một nhân vật trong cùng một vị trí. Bạn có thể chọn ký tự nào bạn sử dụng để biểu thị các ký tự chưa được tiết lộ (ví dụ gạch dưới), nhưng hãy đảm bảo chỉ định ký tự này.

Cảnh sát có thể cung cấp mã không bị bẻ khóa sau một tuần và gọi trình "SAFE". Đệ trình chiến thắng sẽ là bài nộp ngắn nhất không bị bẻ khóa tạo ra số 10. Nếu không có bài nộp không bị bẻ khóa nào có thể in 10, mã ngắn nhất tạo ra 9 sẽ giành chiến thắng, v.v. Lưu ý rằng những tên cướp không phải thực hiện các thay đổi giống như bạn và chúng không phải sao chép mã chính xác (trừ khi bạn tiết lộ tất cả các ký tự). Họ chỉ phải sao chép đầu ra.

Đệ trình được đăng muộn hơn ngày 24 tháng 11 được chào đón nhưng không đủ điều kiện để giành chiến thắng (vì có thể sẽ có ít kẻ cướp hơn xung quanh).


Ví dụ bài:

Các bài sau đây là một trình bằng ngôn ngữ MyLang, nó là 9 byte dài, và nó hoạt động cho số 1-8.

MyLang, 9 byte, 8 số

Nội dung này hoạt động trong 1 - 8. Các ký tự không được tiết lộ được chỉ định bằng dấu gạch dưới : _.

abc____i

Bảng xếp hạng

Tuyên bố miễn trừ trách nhiệm: Bảng xếp hạng không được kiểm tra và các bài nộp không bị theo dõi có thể không xuất hiện trong danh sách.

<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>


Không chắc chắn tôi hiểu ... được cung cấp một mã tùy ý trong CJam tạo ra 1, làm cách nào tôi có thể ngăn chặn những tên cướp liên tục thêm vào) để tạo ra các số còn lại? Điều tương tự sẽ có hiệu lực đối với khá nhiều ngôn ngữ
Luis Mendo

2
Nếu điều đó là có thể đối với bất kỳ chương trình nào xuất ra 1thì có vẻ như vậy, CJam là một lựa chọn ngôn ngữ tồi cho thử thách này. Không có cách nào để ngăn chặn những tên cướp làm điều đó.
Stewie Griffin

3
@LuisMendo Chà, chắc chắn nó sẽ khiến điều này trở nên thú vị hơn ...
LegionMammal978

1
@DanielJour Nó có thể được sửa đổi lên đến bất kỳ số nào, nhưng số lượng tối đa mà bọn cướp cần tìm là 10. Quy tắc đó được áp dụng vì nhiều bài nộp có thể được mở rộng đến vô cùng (về lý thuyết), do đó, việc tính điểm dựa trên số lượng đạt được cao nhất sẽ không có ý nghĩa.
Stewie Griffin

1
Bạn có thể muốn thử chỉ loại bỏ một mục nếu tiêu đề chứa crackedtrong một số hình thức. Đây là những gì bản thiết kế lại người dùng hiện đang làm.
Sản xuất ETH

Câu trả lời:


1

Lục giác , 18 byte, 10 số, AN TOÀN

Nội dung này hoạt động trong 1 - 10. Các ký tự không được tiết lộ được chỉ định bằng dấu gạch dưới : _.

.__{_]5[$@.;=@$!!1

Bạn có thể thử Hexagony trực tuyến tại đây.

Giải pháp của tôi:

1:   .<[{8]5[$@.;=@$!!10
2:   .<[{8]5[$@);=@$!!10
3:   2<[{8]5[$@);=@$!!10
4:   3<[{8]5[$@);=@$!!10
5:   4<[{8]5[$@);=@$!!10
6:   5<[{8]5[$@);=@$!!10
6:   7<[{8]5[$@);=@$!!10
8:   7<[{8]5[$@);=@$!!10
9:   8<[{8]5[$@);=@$!!10
10:  9<[{8]5[$@);=@$!!10

Hex cho đầu ra 1:

Hãy thử trực tuyến!

Full Hex:
  . < [ 
 { 8 ] 5
[ $ @ . ;
 = @ $ ! 
  ! 1 0

Important parts:
  . < .
 . 8 . 5
. $ @ . ;
 . . $ .
  . 1 .
  1. <cạnh bộ nhớ là 0, vì vậy nó bật lên.
  2. Lượt truy cập 1
  3. Nhảy tới 5
  4. Nhảy qua 8, nhưng bị đảo ngược <8quay trở lại.
  5. Lượt truy cập 5một lần nữa
  6. Nhảy qua 1
  7. Chạm <vào thời điểm này, giá trị bộ nhớ là 1585 mà, mod 256, sẽ xảy ra là ASCII1
  8. Cuối cùng in và thoát với ;@.

Hex cho đầu ra 2:

Hãy thử trực tuyến!

Important parts:
  . < .
 . 8 . 5
. $ @ ) ;
 . . $ .
  . 1 .

Điều này đi theo cùng một đường dẫn, nhưng trên đường trở lại, nó chạm vào một điểm )tăng cạnh bộ nhớ lên 1586, hoặc 2.


Hex cho đầu ra 3-9:

Hãy thử trực tuyến!

Important parts:
  2 < [
 . . ] .
. $ . ) .
 . @ . !
  . 1 .
  1. Lượt truy cập 2
  2. Bây giờ cạnh bộ nhớ là dương khi nó được < , vì vậy nó quay xuống.
  3. Các ]thay đổi con trỏ lệnh, nhưng ngay lập tức trở lại với[
  4. ) gia tăng 3
  5. ! Bản in 3
  6. $ còn lại từ hai số đầu tiên để chúng tôi nhảy qua cuối (@ )
  7. 1 thay đổi cạnh bộ nhớ, nhưng điều đó không quan trọng bây giờ.
  8. < phản ánh con trỏ trở lại.
  9. Một lần nữa 1không thành vấn đề bởi vì chúng tôi nhấn @để kết thúc chương trình.


10

Octave, 55 byte, 10 số, bị bẻ khóa

(o__(O_o_(@(__o)o__-O}_)_(0<O,{_(_o_O-1)+1_@(_1}_)(__o_

_ là nhân vật chưa biết.

Dung dịch

(o=@(O,o)(@(O,o)o{2-O}())(0<O,{@()o(O-1)+1,@()1}))(0,o)% sau đó thay đổi lần cuối cùng 0thành 1,2,3vv

Được đưa ra x, điều này không tính toán đệ quy x+1. Nó chủ yếu bao gồm hai chức năng ẩn danh. Người ta cung cấp một iftuyên bố để neo đệ quy:

if_ = @( boolean, outcomes) outcomes{ 2 - boolean}();

Đây chỉ là lạm dụng thực tế là một giá trị boolean ước tính đến 0hoặc 1. Hàm này chấp nhận một giá trị boolean và một mảng ô gồm hai hàm và đánh giá một hoặc một trong hai hàm này tùy thuộc vào giá trị boolean. Phần thứ hai là đệ quy thực tế:

plus_one = @(n,f) if_(0<n ,{@()f(n-1)+1, @()1})

Vì một hàm bất kỳ là ẩn danh, bạn không thể truy cập trực tiếp từ itsefl. Đó là lý do tại sao chúng ta cần một đối số thứ haifĐầu tiên. Sau đó, chúng tôi sẽ cung cấp một hàm xử lý cho hàm chính nó như là một đối số thứ hai, do đó, một hàm cuối cùng sẽ trông như vậy:

plus_one_final = @(n)plus_one(n,plus_one);

Vì vậy, trong ký hiệu này, trình của tôi trở thành:

(plus_one=@(n,f)(@(boolean,outcomes)outcomes{2-boolean}())(0<n,{@()f(n-1)+1,@()1}))(n,f)

Tôi đã hỏi về các neo đệ quy cho các hàm ẩn danh trong MATLAB một lúc trước trên stackoverflow .


19
o_O O__o O_O o_O
TuxCrafting

Tôi không chắc chắn liệu điều này có thực sự khó bẻ khóa không =)
flawr

Chà, chắc chắn là địa ngục không dễ bị bẻ khóa! Có thể làm điều đó bằng bút và giấy (!)
Stewie Griffin

Tôi coi đó là một lời khen :) Tôi nghĩ bạn sẽ thích giải pháp của tôi, nhưng tôi sẽ không tiết lộ bất cứ điều gì cho đến khi nó bị bẻ khóa / nó an toàn.
flawr



8

Perl, 12 byte, 10 số, Cracked!

Dấu gạch dưới đại diện cho các ký tự không xác định.

____;say__-9

Có lẽ khá dễ dàng, và nó sẽ không làm tôi ngạc nhiên nếu có nhiều giải pháp. Tuy nhiên, nó có thể là niềm vui để crack.

. 10.)


1
Nứt . Lúc đầu, tôi nghĩ nó giống như thế $_=1;say;#-9, nhưng tôi không thể tìm ra cách lấy 10.
Riley

7

Perl, 46 byte, 10 số, an toàn

Vấn đề

__b_b_\__}_b_b_b_0_;
$b[0]=10;$b{0}=1;say$b[0]

Các vấn đề ngắn hơn có xu hướng bị phá vỡ nhanh chóng, vì vậy tôi nghĩ tôi sẽ thử một vấn đề dài hơn. Những cái dài hơn cũng có xu hướng bị nứt nếu mọi người để lại một khoảng trống đủ để lén một cái gì đó nghịch ngợm như sayhoặc exittrong, vì vậy tất cả các khoảng trống ở đây là ngắn. Các ký tự ẩn được thể hiện bằng cách sử dụng _.

Giải pháp của tôi

sub b{\@_}*b=b$b{0};
$b[0]=10;$b{0}=1;say$b[0]

Để in 2, 3, vv, lên đến 9, tiếp tục thay đổi số lượng giao cho $b{0} trong dòng thứ hai (tức là $b{0}=2, $b{0}=3, vv). Chương trình cho 9 trông như thế này:

sub b{\@_}*b=b$b{0};
$b[0]=10;$b{0}=9;say$b[0]

Sau đó, để sản xuất 10, nhận xét dòng đầu tiên bằng cách thêm vào một # ký tự cho nó.

Giải trình

Điều đầu tiên cần lưu ý là giải pháp không thực sự được chơi ngoài việc loại bỏ khoảng trắng: nếu chúng ta đặt nó ra với khoảng trắng dễ đọc hơn, chúng ta sẽ nhận được điều này:

sub b { \@_ }
*b = b $b{0};
$b[0] = 10;
$b{0} = 1;
say $b[0];

Thông thường, khi bạn truy cập các đối số của chương trình con trong Perl, bạn làm như vậy thông qua việc sao chép chúng ra @_. Có một lý do chính đáng cho việc này: @_bí danh các đối số mà chương trình con được đưa ra (ví dụ, (sub { $_[0] = 3 })->($x)sẽ gán cho$x ), một điều mà thường không mong muốn.

Mặc dù @_có vẻ kỳ diệu, nhưng thực ra nó chỉ sử dụng một tính năng tiêu chuẩn của các phần tử Perl (có sẵn trong XS nhưng chỉ xuất hiện trong một vài trường hợp kỳ lạ trong Perl thuần túy, chẳng hạn như @_chính nó): một mảng không lưu trữ trực tiếp các phần tử của nó , nhưng thay vì tham khảo. Do đó, khi chúng ta gọi btrong dòng thứ hai bên dưới, Perl tạo ra một mảng (gọi nó @_) có phần tử đầu tiên là tham chiếu đến cùng một bộ lưu trữ $b{0}sử dụng. (Các giá trị băm cũng được lưu trữ theo tham chiếu; $ _ [0] và $ b {0} đều tham chiếu cùng một lưu trữ tại thời điểm này.) Vì @_không làm gì đặc biệt theo quan điểm nội bộ, chúng tôi có thể tham khảo với nó giống như chúng ta có thể làm với bất kỳ mảng nào khác, khiến nó tồn tại lâu hơn chương trình con mà nó được định nghĩa.

Biến Perl cũng đề cập đến lưu trữ dữ liệu bằng cách tham khảo. Cách đây rất lâu, mọi người thường sử dụng mã muốn *x = *y;đặt $xlàm bí danh $y(thông qua việc làm cho chúng tham chiếu cùng một thứ), tương tự @xnhư bí danh @y, %xnhư một bí danh %y, v.v. Điều đó thay vì phá vỡ bất biến rằng các biến có tên tương tự không phải hành động tương tự nhau, vì vậy Perl hiện đại cung cấp một giải pháp thay thế; chỉ định một tham chiếu cho một typeglob chỉ ghi đè biến phù hợp với loại tham chiếu (vì vậy *x = \%ybí danh %xsẽ trỏ đến cùng một bộ lưu trữ như %ynhưng để lại, nói, $xmột mình). Cú pháp này đáng chú ý là không quan tâm đến việc bộ lưu trữ mà bạn đặt bí danh có tên hay không, vì vậy khi chúng tôi gán giá trị trả về làb (một tham chiếu mảng giữ cho mảng trước đó được gọi là @_sống) được thay đổi thành bí danh danh sách đối số để gọi*b , những gì xảy ra là@bb (trong khi %bkhông thay đổi). Điều này có nghĩa là, đáng chú ý, điều đó $b[0]$b{0}bây giờ trỏ đến cùng một bộ lưu trữ và việc gán cho cái này do đó sẽ thay đổi cái khác. Mọi thứ từ đó trở đi hoàn toàn đơn giản.

Tài liệu Perl không thực sự nói về loại chi tiết này, vì vậy tôi không ngạc nhiên khi có ai bị bẻ khóa; bản chất của việc @_không hoàn toàn giống như các mảng khác không phải là điều thực sự được nhấn mạnh và hầu hết các phong cách mã hóa đều nhằm mục đích giảm thiểu các hiệu ứng mà điều này gây ra thay vì khuếch đại chúng.


1
I'm so intrigued by this. I've learnt about pseudo-hashes and refreshed my memory on referencing and de-referencing but I can't seem to figure it out!
Dom Hastings

1
@DomHastings, ... and I've been fooling around with various demarcation characters for q and s and y and m (mostly trying to get them to end after the $b[0] assignment), but nothing's working for me (yet).
msh210

You were both on the wrong track, but admittedly, there's not much help given by the language or by my submission as to what the right track is (I had to leave one clue to avoid leaving too large a gap, but there are plenty of reasons that a program might contain a backslash, it's not always related to references).

I feel like I was frustratingly close. I had sub b{\@_} cemented in my mind, and, although I experimented with *b I couldn't get it! Thanks for the explanation. I might have glossed over it in your explanation, but why does sub b{\@_}*b=b$b[0] not do the same?
Dom Hastings

You're trying to make the array element and the hash element share memory, so you need to mention both. The array element's implicitly mentioned when you assign an array reference (\@_) to *b, but you have to mention the hash element explicitly yourself. With *b=b$b[0], you're basically just aliasing the new $b[0] (after changing where @b points) to the $b[0] that existed at the start of the program, which is useless.

5

JavaScript, 30 bytes, 10 numbers, cracked

alert(Array(_)________.length)

Shouldn't be too hard, but hopefully it's just hard enough to provide a challenge. :) Unrevealed characters are marked with _.


Nice one! I had a swell time solving this one, it was easy, yet challenging at the same time.
Kritixi Lithos

5

Perl, 14 bytes, 10 numbers, Cracked

say_!"___"%""_

Works for 1 to 10. _ are hidden characters.

I think this shouldn't be too hard to crack. I have an harder one, for 22 bytes, I'll post it if this one is cracked.


Original code :

say"!"=~y"%""c

And replace the "!" by a string of the length of the number you wish to print, for instance !, !!, !!!, etc.

However, ais523 found another way :

say"!"+1#"%""r

2
Cracked. I suspect this isn't what you were going for at all. (I was trying to do something using regex, but this was much simpler.)


4

Octave, 17 bytes, 10 numbers, Cracked

_od(3_13_13_7_1_)

Original solution

mod(3*1361357,10)
...
mod(3*1361357,17)
mod(3*1361397,17)
mod(9*1361397,17)

_ is the hidden character.



4

Jelly, 7 bytes, 10 numbers, cracked

“1‘ỌȮḊ‘

No wildcards.

The crack achieved (to use an eval with an argument) was, as many seem to be in this thread, not the intended one.

The intended crack was:

“1‘ỌȮḊ‘ - (prints 1)
“1‘     - code page index list of characters "1": [49]
   Ọ    - cast to ordinals: ['1']
    Ȯ   - print (with no line feed) and return input: effectively prints "1"
        -     (but if left at this would then implicitly print another "1")
     Ḋ  - dequeue: []
      ‘ - increment (vectorises): []
        - implicit print: prints ""

“1‘ỌŒḊ‘ - (prints 2)
“1‘Ọ    - as above: ['1']
    ŒḊ  - depth: 1
      ‘ - increment: 2
        - implicit print: prints "2"

“1‘ỌŒḊ‘‘ - (prints 3)
“1‘ỌŒḊ‘  - as above: 2
       ‘ - increment: 3
         - implicit print: prints "3"

... keep adding an increment operator to print 4 - 10.

I would be able to crack it if the '‘' was on the next line. So close... :)
Kritixi Lithos

Cracked but could you explain what happens for 10, because I got lucky on this one while trying things that might work.
Hedi

@Hedi Ninja'd me too quickly, I was working on it.
Erik the Outgolfer

@Hedi - yours was an unintended crack. The way 10 is working for you is, I believe, by evaluating the jelly code in the string 9 with an argument of 0 (the default value of the input), which you then dequeue (no effect) and then increment.
Jonathan Allan

...actually I think the way 10 is working for you is by evaluating the jelly code in the string 9 with an argument of [] - the default value of the input, 0, dequeued - which you then increment., Like “1‘‘‘‘‘‘‘‘‘Ọv0Ḋ¤‘
Jonathan Allan

4

Befunge-93, 11 bytes, 10+ numbers, Cracked

This submission works for at least 1 - 10. Unrevealed characters are indicated with .

□□5:**-□-.@

Try it online

I must say I was impressed that two people could come up with independent solutions for this, neither of which were what I was expecting. While Martin got there first, I'm giving the "win" to Sp3000 as their solution is more portable.

This was my intended solution though:

g45:**-2-.@
g45:**-1-.@
g45:**-1\.@
g45:**-1\+.@
g45:**-2\+.@
...
g45:**-7\+.@

Because a stack underflow in Befunge is interpreted as 0, the g just reads from 0,0 returning the ASCII value of 'g', namely 103. 45:**- subtracts 100, giving you 3. Then 2- gives you 1.

For the third iteration, the - (subtract) is changed to a \ (swap) instruction, so the 3 becomes the topmost stack entry. And in iteration four, a + (add) instruction is inserted, thus adding the 3 to the 1 giving 4.


Cracked. I'm curious to see what solution you had in mind. :)
Martin Ender

@MartinEnder As I commented on your answer, I'd like to leave my intended solution hidden for a while in case someone else wants to attempt a more portable solution. Is that OK?
James Holderness

Of course, that's fine. :)
Martin Ender

"15:**-6-.@ gives 1, but I'm not sure whether the fact that " pushes 32 on top (due to implicit spaces) is an artefact of the TIO interpreter or part of Befunge's spec, because trying a few interpreters it seems not all interpreters do that. Does your intended solution depend on this behaviour?
Sp3000

@Sp3000 That wasn't my intended solution, but that's perfectly valid Befunge - the interpreters that don't support that are incorrect. If you post an answer with the rest of the sequence I'd definitely consider that a complete crack.
James Holderness

4

R, 21 bytes, 10 numbers Cracked

__i___________i______

Works for 10 numbers. _ is hidden character.

Original solution:

which(letters%in%"a")
which(letters%in%"b")
etc.


@StewieGriffin This is my first post on this site and I don't know the norms. I have one more R challenge - a bit trickier, I think. Can I add another answer? Or append it to this one?
Gregor

Adding a new one it's perfectly fine (as a separate one) 😊 welcome to the site 😊
Stewie Griffin

Did I cracked it here ?
Tensibai

@Tensibai Cracked :)
Gregor


3

Octave, 32 bytes, 10 numbers. Cracked

_n_(isprime(floor(s____i__ i____

_ is a hidden character.

You can try Octave online here.


Original solution:

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')))

...


Very nice! Cracked. Not sure if I reproduced your code though?
Stewie Griffin

@StewieGriffin Well done! I should have revealed more characters... :-D
Luis Mendo

1
Damn that was clever :) Too bad you couldn't say it was MATLAB... One more character would probably have made it much harder... I enjoyed it though... I used a full 25 minutes :)
Stewie Griffin

@Stewie Yes, you made good use of non-Matlab features! :-)
Luis Mendo

3

Octave, 17 bytes, 10 numbers, Cracked

_i_(__i__(2_5_))

Unrevealed characters are marked with _.

Intended solution:


    fix(asind(2/59))
    fix(asind(3/59))
    fix(asind(4/59))
    fix(asind(5/59))
    fix(asind(6/59))
    fix(asind(7/59))
    fix(asind(8/59))
    fix(asind(9/59))
    fix(asind(9/55))
    fix(asind(9/50))


cracked (finally=) but probably not with your original approach, right?
flawr

Nice, added my approach in a spoiler tag :)
Stewie Griffin

2
Oh your solution is really clever!!!
flawr

3

Octave, 19 bytes, 10 numbers, cracked

__sca__1_)___'-_6_'

_ is the hidden character.

Intended solution:

pascal(10)('a'-96)'



I couldn't remember any function with sca. Coming from you, I should have thought of matrix functions :-)
Luis Mendo

There is a reason why I made a complete list of Octave function names =)
flawr



3

JavaScript, 22 bytes, 10 numbers, cracked

alert(0_6_4_>_0_2_0_7)

_ is the hidden character.

Hint about the intended solution

The character that needs to be changed to generate all numbers is always the same.



@ais523 Well done!
Arnauld

3

JavaScript 21 Bytes, 10 Numbers Cracked

alert(b_oa_"3____1"))

Unrevealed characters are marked with _

Cracked

My Version:

alert(btoa|"3"&("1"))
alert(btoa|"3"^("1"))
alert(btoa|"3"^("0"))
alert(btoa|"3"^("7"))
alert(btoa|"2"^("7"))
alert(btoa|"1"^("7"))
alert(btoa|"0"^("7"))
alert(btoa|"0"^("8"))
alert(btoa|"0"^("8"))
alert(btoa|"2"^("8"))



3

Python 3, 16 bytes, 10 numbers, cracked

print(?%??f?r?t)

Unrevealed characters are marked with ?. This is probably a bit easy since there's only five question marks, but I'm hoping it'll be a fun one.



3

C#, 90 bytes, 10 numbers, cracked

using ______________________________________________;class C{static void Main(){_______;}}

I honestly have no idea how hard this is to crack.

Edit: Oops, transcription error. One _ too few after using.

Now cracked by Hedi, who found the intended (barring the class name) solution.


d'oh... one too short for write()
masterX244

Didnt help... wrong gap. And that semicolon after first gap thwarted amother idea
masterX244


3

JavaScript 33 Bytes, 10 Numbers Cracked x2

Oops I post posted my line for generating 10 Which Hedi cracked as though it was for 1

alert(_to__"_Xc0__0_B6____Zp=="))

Version intended to post for generating 1

alert(_to__"_Xc0__0_Bf____Zp=="))

Unrevealed characters are marked with _

alert(btoa|"0Xc0"-0xBf|!("Zp=="))
alert(btoa|"0Xc0"-0xBe|!("Zp=="))
alert(btoa|"0Xc0"-0xBd|!("Zp=="))
alert(btoa|"0Xc0"-0xBc|!("Zp=="))
alert(btoa|"0Xc0"-0xBb|!("Zp=="))
alert(btoa|"0Xc0"-0xBa|!("Zp=="))
alert(btoa|"0Xc0"-0xB9|!("Zp=="))
alert(btoa|"0Xc0"-0xB8|!("Zp=="))
alert(btoa|"0Xc0"-0xB7|!("Zp=="))
alert(btoa|"0Xc0"-0xB6|!("Zp=="))

1

I added a crack for the intended version. I'll try to find a way to get to your solution for 10: console.log(atob|"0Xc0"-0xB6|("Zp==")) I think
Hedi

I updated my answer with what should be the intended crack.
Hedi

3

Python, 10+ numbers, 61 bytes, Cracked!

Here was the code I posted:

try:x
except:print(__import__('sys').??c??n??()[????b????e???

The original code was:

try:x
except:print(__import__('sys').exc_info()[2].tb_lineno)

Basically, it throws an error ('x' is not defined) and then prints the line the error was found on. So, just keep adding newlines at the beginning to increment the number.

I knew it wouldn't be hard to crack - I just wanted a funny way to print numbers - but I wasn't expecting Sp3000 to get it so fast, that's some pro skills!


Cracked - amusing, but yeah there aren't really many options :P
Sp3000

@Sp3000 yeah, I wanted to make sure nobody could squeeze in deleting what's on STDOUT and printing a number, but I guess I narrowed it down too much. Ah well.
FlipTack

Revealing sys definitely made it a lot simpler, since it gave a nice starting point for searching :P
Sp3000

2

05AB1E, 11 bytes, Cracked!

3628801__0_

Works from 1-10. _ is a hidden character.

Intended Solution:

3628801R¬0+ # 1
3628801R¬1+ # 2
3628801R¬2+ # 3
3628801R¬3+ # 4
3628801R¬4+ # 5
3628801R¬5+ # 6
3628801R¬6+ # 7
3628801R¬7+ # 8
3628801R¬8+ # 9
3628801R¬9+ # 10


2

Octave, 24 bytes, 9 numbers, cracked

_a__repmat(__one___,__)_

_ is a hidden character.

(Inspired by @LuisMendo's challenge.)


Oh you're way too quick!!!
flawr


2

Octave, 25 bytes, 9 numbers. Cracked

__a__repmat(__one___,__)_

_ is a hidden character.


@StewieGriffin Sorry!! Only 9. My mistake. I'm really sorry. Edited
Luis Mendo


1
Sorry =P I'm gonna post a replacement=)
flawr

@Stewie It's been my fault, sorry! I'll post a modified version later, since my original solution is different
Luis Mendo

For the record, my crack was identical to flawr's. I've posted another Octave one here.
Stewie Griffin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.