Giấu kim trong Haystack (Cảnh sát)


38

Đây là một phần của thử thách . Tới đây cho phần của bọn cướp.

Thử thách của cảnh sát

Bạn nên viết một chương trình hoặc hàm bằng ngôn ngữ bạn chọn, đầu ra chuỗi Haystack. Tuy nhiên, phải có thể xóa một số tập hợp con các ký tự khỏi chương trình của bạn (không sắp xếp lại phần còn lại), sao cho chuỗi kết quả cũng là một chương trình hợp lệ trong cùng ngôn ngữ, in ra Needlethay thế. Cả hai chương trình / chức năng có thể tùy ý in một dòng mới duy nhất (độc lập với nhau), nhưng không có gì khác. Đầu ra là trường hợp nhạy cảm và phải tuân theo vỏ chính xác được cung cấp.

Mục tiêu của bạn, tất nhiên, là để che giấu "kim" rất tốt. Nhưng lưu ý rằng trình của bạn có thể bị bẻ khóa với bất kỳ giải pháp hợp lệ nào , không chỉ là giải pháp bạn dự định.

Vui lòng bao gồm trong câu trả lời của bạn:

  • Ngôn ngữ (và phiên bản nếu có liên quan) trong bài đăng của bạn.
  • Kích thước của chương trình Haystack tính bằng byte.
  • Chương trình Haystack chính nó.
  • Phương thức đầu ra nếu nó không STDOUT.
  • Nếu có thể, một liên kết đến một trình thông dịch / trình biên dịch trực tuyến cho ngôn ngữ bạn đã chọn.

Nội dung gửi của bạn có thể là chương trình hoặc chức năng, nhưng không phải là đoạn trích và bạn không được thừa nhận môi trường REPL. Bạn không được nhận bất kỳ đầu vào nào và bạn có thể xuất qua STDOUT, tham số trả về hàm hoặc tham số hàm (out).

Cả hai chương trình / chức năng phải hoàn thành trong vòng 5 giây trên một máy tính để bàn hợp lý và cần phải có tính quyết định. Bạn không được sử dụng các hàm dựng sẵn để băm, mã hóa hoặc tạo số ngẫu nhiên (ngay cả khi bạn chọn trình tạo số ngẫu nhiên cho một giá trị cố định).

Vì lợi ích của sự công bằng, phải có một trình thông dịch hoặc trình biên dịch có sẵn miễn phí cho ngôn ngữ bạn chọn.

Một câu trả lời bị bẻ khóa nếu chương trình Kim được tìm thấy. Nếu câu trả lời của bạn không bị bẻ khóa trong 7 ngày, bạn có thể tiết lộ chương trình Kim dự định trong câu trả lời của bạn, điều này làm cho bài nộp của bạn an toàn. Miễn là bạn không tiết lộ giải pháp của mình, nó vẫn có thể bị bọn cướp bẻ khóa, ngay cả khi 7 ngày đã trôi qua. Chương trình Haystack an toàn ngắn nhất (tính bằng byte) sẽ thắng.

Ví dụ

Dưới đây là một vài ví dụ đơn giản trong các ngôn ngữ khác nhau:

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]

Lưu ý rằng tập hợp con của các ký tự bị loại bỏ không phải tiếp giáp nhau.

Đệ trình không bị xáo trộn

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


1
Liên quan. (Sự khác biệt chính là một chương trình đã thực hiện các trình tự OEIS và cho phép chương trình bẻ khóa tạo ra bất kỳ trình tự OEIS nào khác, điều này khiến cảnh sát khó bảo vệ hơn trước các vết nứt vô ý. Nó cũng cho phép kẻ cướp đánh cắp các vết nứt khác. kẻ cướp bằng cách tìm các giải pháp thậm chí ngắn hơn.)
Martin Ender

Tôi sẽ làm điều này trong Haystack nhưng nó không có tài liệu và tôi cbb xem qua mã :(
Okx


1
Đoạn mã ngăn xếp bị sai độ dài cho câu trả lời này
mbomb007

1
@ kamoroso94 Có, nhưng điều đó có nghĩa là bạn có thể chấm dứt các chương trình ứng cử viên sau 5 hoặc 6 giây, bởi vì nếu họ chưa hoàn thành, họ không thể là giải pháp bạn đang tìm kiếm.
Martin Ender

Câu trả lời:


16

Haystack , 84 byte, Cracked

0\\1-c\
//    
?10F17+c8F+4+cd8F+3+c6-c1+c,c2+c8+c|
 0   \1++c,c|
F/c++2F8
c\8F+2+cd

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

Điều này có vẻ (đối với tôi) khá phức tạp nhưng nếu bạn tìm đúng tập hợp con thì hơi quá dễ dàng ... ồ, chỉ để chúng ta bắt đầu: P



1
@icrieverytim 1. oo mát cả hai đều là glyphs unicode 2. hiện tại chính xác hơn về mặt khoa học
HyperNeutrino

1. Vâng, tôi biết, họ trông rất tuyệt. : PI tìm thấy chúng trong mỏ vàng này của một khối Unicode . Đừng ngạc nhiên nếu chúng kết thúc trong trang mã của neon. 2. TBH, cái cũ nhìn IMO tốt hơn. : P
hoàn toàn là

1
@HyperNeutrino Tại sao bạn có hứng thú với benzen?
Michthan

3
@Michthan Xem xét rằng tôi là một neutrino, đó là một câu hỏi hay, nhưng tôi không biết: P
HyperNeutrino

12

Lục giác , 37 byte

H[@;(...e<l.a;./$.>;\sN;\ac.>).;;;._y

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

Chỉ cần nhập Hexagony bắt buộc của tôi ...

Để thuận tiện, đây là mã mở ra:

   H [ @ ;
  ( . . . e
 < l . a ; . 
/ $ . > ; \ s
 N ; \ a c .
  > ) . ; ;
   ; . _ y

Cách thức hoạt động:

Chương trình bắt đầu với H, sau đó chúng tôi chuyển sang IP # 5. IP này bắt đầu ở góc phía tây, nảy và quấn quanh trong khi thực thi (có hiệu lực) ;a;y;s;(vì vậy chúng tôi đã in Hays). Sau đó sđược tăng lên đến một tbằng )và in, sau đó chúng tôi đi qua Ne...(ctrước khi đến a;c;(vẫn nảy xung quanh một phần nhỏ của hình lục giác). Chương trình đạt đến _, phản ánh lên \tới mức lbị giảm xuống kbởi một (, nó đi qua cái khác \trước khi được in và chương trình kết thúc vào @.

Phiên bản dài dòng


3
Ngôn ngữ này vẫn làm tôi khó chịu. Tôi yêu bạn vì điều đó.
phroureo

Não tôi đang nổ tung ngay bây giờ. Tôi đã cố gắng để tìm ra điều này đủ để phá mã, nhưng người đàn ông YEESH. Những loại người xoắn làm cho điều này lên ??
phroureo

@phroureo ...> _>
Martin Ender

Sau khi câu trả lời của bạn an toàn, bạn có thể cho tôi từng bước về những gì nó đang làm không? (Hoặc nếu bạn đã từng bước một nơi nào đó tương tự, hãy chỉ cho tôi ở đó?)
phroureo

1
@phroureo Tôi không ngại thêm lời giải thích về chương trình cảnh sát trước khi nó an toàn và tôi không nghĩ mình sẽ khẳng định nó an toàn (dù sao tôi cũng không muốn chiến thắng thử thách của chính mình bằng một bài nộp mà tôi hầu như không đặt bất kỳ nỗ lực trong). Tôi sẽ cố gắng thêm lời giải thích vào ngày mai. Trong lúc này, tôi rất vui khi được giúp bạn với Hexagony trong phòng chat của esolang .
Martin Ender

10

Brain-Flak , 146 byte ( Cracked )

([((((()()())){}){}){}](()([()](()({}([((((()()()){})))[]])[]({}({})[{}]()({}((()(({}){}){}){}){}())))[][][][][][]))[]))(((()[]){}){({}[()()])}{})

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

Giải pháp dự định, 80 byte

([((((()()())){}){}){}](()([()](()({}([((((()()()){})))[]])[]({}({})[{}]()({}((()(({}){}){}){}){}())))[][][][][][]))[]))(((()[]){}){({}[()()])}{})
( ((   )(                  [(  (( (         )()()){})) []]   ({}(  )    ( (  ( ()(({}){}){}){}){}())))            ))    (((()[]){}){({}[()  ])}{})



8

Haskell , 168 byte (Được bẻ khóa bởi nimi )

hays=map;hay=zipWith;stack=head;h=stack{-
 hay.(hays.(stackany hay$or id).stack hay
<*>hays(sum$stack haystack<$>hay))-}$words
 "Haystack Hayst ackH aysta ckH aystac k"

Hãy thử trực tuyến! Đánh giá mã định danh htrả về chuỗi "Haystack", sau khi xóa một số kết hquả "Needle".


1
Nứt . Đã khá vui để giải quyết.
nimi


4

Lục giác , 32 byte. Nứt

Tôi không thể giải quyết Martin , vì vậy tôi đang đăng bài của riêng tôi.

];N.@cl;e@;;(\H/;ya;_.>s.;t//<._

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

Ở đây nó được định dạng:

   ] ; N .
  @ c l ; e
 @ ; ; ( \ H
/ ; y a ; _ .
 > s . ; t /
  / < . _ .
   . . . .

Mục đích của tôi với điều này là cho cả hai giải pháp sử dụng càng nhiều IP càng tốt, tôi có 6 cho Kim và chỉ 5 cho Haystack .




3

Java (OpenJDK 8) , 226 217 byte (Đã bẻ khóa )

Lần đầu tiên chơi golf, có lẽ rất dễ nhưng đó là một thử thách thú vị!

String d(){int h=3609000-5055+911,m=557558,s=15441301-157*10000;String d="0"+h*2+""+m*20+""+s*7,x="",y;for(int g=0;g<d.length();g+=3){y="";for(int e=0;e<3;e++)y+=d.charAt(e+g);x+=(char)Integer.parseInt(y);}return x;}

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


TIO của bạn không hoạt động. Bạn có thể muốn thay đổi return new Main().d();thành System.out.print(new Main().d());trong phương thức chính.
Kevin Cruijssen

@KevinCruijssen Cảm ơn những người đứng đầu!
Luke Stevens



2

JavaScript, 119 byte (ES6), Cracked

Một hàm trả về một chuỗi. Khá dài và không quá khó, nhưng hy vọng vui vẻ.

_=>(+{}+['H'])[+[3]]+(+[][[]]+[])[+!!3]+(+[][[]]+['y'])[3]+(+[][[]]+['s'])[-~2]+(~![]+['t'])[2]+(+[][[]]+[])[+!!3]+'ck'

Bản demo "Haystack"


Nứt . Github jsfuck README.md đã giúp rất nhiều.
ai đó

2

Python 2.7.2, 103/117 byte, đã bẻ khóa

Phiên bản chức năng (117 byte):

def e():
 a,b,s=20070763850923833476353301471991752,0b1010100010010011,""
 while a>0:
  s=chr(a%b)+s
  a//=b
 print s

Phiên bản chương trình (103 byte):

a,b,s=20070763850923833476353301471991752,0b1010100010010011,""
while a>0:
 s=chr(a%b)+s
 a//=b
print s

Điều này nên in Haystacktốt. Đã thử nghiệm trên Python Fiddle .

Btw đây là nỗ lực đầu tiên.

Không chắc chắn nếu phiên bản chương trình được tính là một đoạn, vì vậy tôi đặt cả hai phiên bản ở đây.



2

Python 2.7.10 với Numpy 1.12.1, 208 209 byte ( đã bẻ khóa )

Dường như có một Cây kim Haystack trong Numpy! Đây là Haystack; xem nếu bạn có thể tìm thấy kim. Tôi hy vọng bạn có nhiều niềm vui khi tìm kiếm Cây kim như tôi đã giấu nó.

import numpy
print "".join([dir(numpy)[int(i)][1-0] for i in numpy.poly1d([-1*1433/252e1,-3232/1920.,4026./72/2/3.,613/(6*4.)*1,-4723./1.8e2,-9763/120.,-2689/(-1+5*17.),1+138*.4*2])(numpy.arange(-12/3,13%9))])

Nó xuất ra theo quy định:

Haystack

Bạn có thể thay thế .


Không phải là nó thực sự quan trọng, nhưng đây là 209 byte, không phải là 208
caird coinheringaahing


2

Java 8, 321 byte, đã bẻ khóa

v->{String h="Haystack";int x=-7;return x<0?h:new String(new java.math.BigInteger(new byte[]{(byte)((~-~-~-~-~-~-~-~-~-~1^-x++*x)+151),new Byte("2"+"1+\"0+\"".length()+(x=h.length()*4/x)+"-x-7")}).toByteArray())+(new StringBuffer("hidden".substring(++x%3^4,--x-x--).replaceFirst("dd","e"+(char)(x*211%+93))).reverse());}

Hãy thử nó ở đây.

Dễ đọc hơn:

v->{
  String h="Haystack";
  int x=-7;
  return x<0?
          h
         :
          new String(new java.math.BigInteger(new byte[]{
            (byte)((~-~-~-~-~-~-~-~-~-~1^-x++*x)+151),
            new Byte("2"+"1+\"0+\"".length()+(x=h.length()*4/x)+"-x-7")
          }).toByteArray())
          +(new StringBuffer("hidden".substring(++x%3^4,--x-x--)
             .replaceFirst("dd","e"+(char)(x*211%+93))
            ).reverse());
}

Không chắc chắn nếu nó quá dài / cứng .. Sau đó, một lần nữa, Java nói chung là khá dài để bắt đầu, do đó, việc ẩn 'Cây kim' đúng cách làm tăng số lượng byte khá nhiều ..
Nếu không ai bẻ khóa nó, tôi ' sẽ thêm một số mẹo spoiler sau này.


1
TIO có một nhân vật ít hơn, nhưng bị nứt một trong hai cách.
jacobly

2

Ruby , 185 byte, bị bẻ khóa bởi cab404

x='yGwztsPXhxDkBKlCYdFjQnpUROfoHvqmTgbaJSLcEiZrIAuMVNW'
s="n=x.to_i 36;x.bytjs.jach_cons(3){|a,b,c|n+=n*b%c;n*=a^b};puts n%8675309==1388649 ?'Njjdlj':'Haystack'"
eval s.tr ?j,s.size.chr

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

Tôi sẽ cố gắng đưa ra một cái gì đó lén lút, nhưng bây giờ đây là một thử tại "đơn giản nhưng đáng ghét".



1
đó là niềm vui ^^
cab404

Làm tốt! Lực lượng vũ phu không quá nhàm chán.
lịch sử

2

Brain-Flak , 188 byte ( Cracked )

Tôi chỉ thấy câu trả lời của Funky Computer Man khi tôi đăng bài này.

Nó hơi khó hiểu.

((((((((((()()()){}){}()){}){}()){}()))<({}[(()()()()){}])(([[]]({})<>)<>)>((()()())){}{})[()]))<[[]()]>((()){}){}((){}[][(<>){}<>])(<>){}(({}<>()[()])[(((()()()){}<[()]>)<(()){}>{}){}()])

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

Giải pháp dự định, 96 byte:

((((((((((()()()){}){}()){}){}()){}()))<({}[(()()()()){}])(([[]]({})<>)<>)>((()()())){}{})[()]))<[[]()]>((()){}){}((){}[][(<>){}<>])(<>){}(({}<>()[()])[(((()()()){}<[()]>)<(()){}>{}){}()])((((((((()()()){}){}){}()){}){}()<>)<>)(()()()){}())<>(((({}[()]<>)()))[(((()()()){}())()){}{}])
(((((((( (()()()){}){}  ){}){}()){}()))      ()()                   <>)     (()()()) {}    () ) <      >((()      ((){}    <>)     )   )  (({}        )[(((()()  ){}  ()  )  () {}   ){}()])

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


Bạn có nghĩa là hơi khó hiểu ngoài việc obfuscation Brain-Flak bình thường.
Gryphon - Phục hồi Monica

@Gryphon Vâng, tôi đã thêm một số bit.
H.PWiz


2

T-SQL, 757 ký tự CRACKED

Xin lỗi vì đã xóa câu trả lời trước đây của tôi - Tôi đã chỉnh sửa nó quá nhiều lần khi tôi giấu giếm và không muốn đưa ra bất cứ điều gì. :)

Trong mọi trường hợp, việc ẩn giấu trong SQL là một chút khó khăn, trừ khi bạn muốn làm những thứ điên rồ như thế này , và tôi đã không đầu tư.

Ngoài ra, tôi không xin lỗi vì đã đặt tên cho các biến của mình sau Dota.

Câu đố SQL

create table a(l int,c int)
insert into a values (1,10),(2,1),(3,8),(4,0)
go
;CREATE FUNCTION b(@ varchar(max)) returns varchar(max) as
begin return 'char('+@+'),'''','end 
go
;CREATE FUNCTION h(@ varchar(max),@a varchar(max), @b varchar(max), @c varchar(max), @d varchar(max), @e varchar(max), @f varchar(max), @g varchar(max), @h varchar(max))
returns varchar(max) as 
begin
return replace(replace(replace(replace(@,@a,@b),@c,@d),@e,@f),@g,@h)
end
declare @x varchar(max),@ int=1,@y varchar(99)=''
,@D varchar(4)='Ha',@O varchar(4)='ys'
,@T varchar(3)='ta',@A varchar(4)='ck'
WHILE @<=4
BEGIN
set @y+=(SELECT dbo.b(c+100)from a where l=@)+' '
set @+=1
END
SELECT @x='select
left(dbo.h('''+@D+@O+@T+@A+''','+ left(@y,len(@y)-1) +'),char(56))'
execute(@x)

Nếu đây là câu trả lời dễ nhất trong chủ đề này, có lẽ bạn đã đúng. : P Thật khó để lừa SQL.


không nên 'haystack' là 'Haystack'?
taxi 404

SQL không xử lý viết hoa rất độc đáo (trừ khi bạn xác định cụ thể lược đồ mà nó được sử dụng cho các chữ cái). Tôi đã chọn không. : P
phroureo

1
@phroureo Thông số kỹ thuật không nói rõ rằng nó phải được viết hoa đúng.
LyricLy

Được rồi, tôi đã sửa mã ở trên (mặc dù tôi không nhất thiết phải sửa SQL Fiddle, vì nó hoạt động giống nhau).
phroureo

1
bị bẻ khóa (tôi xin lỗi ...)
Robert Fraser

1

Ly , 40 byte, bị nứt

(78)"e"&p"Ha"s"yst"l"ck"&o(100)"l"l'&'o;

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

Oh boy, một đệ trình Lý CNR khác. Chúng không hoạt động tốt trong lịch sử (có thể là do tôi chứ không phải ngôn ngữ), nhưng chúng ta sẽ thấy giá vé này và ngày nay cũng không ngoại lệ.

Dung dịch:

(78)"e"sl(100)"l"l&o;, loại bỏ XXXXXX XXXXX XXXXXX X Xvới bảy không gian hàng đầu



1

Java , 345 byte, đã bẻ khóa

import java.util.*;interface Main{static void main(String[]args){Stack<Hay>s=new Stack();s.add(new Needle());for(int i=0;i<1000;i++)s.add(new Hay());System.out.println(s.get(s.indexOf(new Hay())+1).a);}}class Needle extends Hay{{a="Needle";}}class Hay{String a="Haystack";public boolean equals(Object o){return getClass().equals(o.getClass());}}

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

Thực sự dài và có thể dễ dàng để bẻ khóa, nhưng ít nhất nó đã có một Stack<Hay>!


một cái rất đẹp nhưng có, khá dễ để crack.
Tít

0

TI-BASIC, 119 byte (An toàn)

Đầu ra được lưu trữ trong Ans.

"TIBASIC→Str1
length(Ans→X
Str1
For(I,X,2(7-4not(X-1
Ans+sub("ACDEHKLNSTY",inString("ABCDEFGHIJK",sub("KCBADAEDJDHIGF",1+remainder(11I-1,14),1)),1
End
sub(Ans,1+X,length(Ans)-X

Dung dịch

Xóa các ký tự từ Str1để cho nó có độ dài bằng 1.

"C→Str1
length(Ans→X
Str1
For(I,X,2(7-4not(X-1
Ans+sub("ACDEHKLNSTY",inString("ABCDEFGHIJK",sub("KCBADAEDJDHIGF",1+remainder(11I-1,14),1)),1
End
sub(Ans,1+X,length(Ans)-X


0

Aceto , 154 byte (An toàn)

              27 \ 'dNU QJi9MLJ € {{x (}] J {'! O € xiDQxsJ (] sicpicp1   

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

'N'ed'd80J0IJic'eUpppppp Hãy thử trực tuyến!

Explanation:
<space>*2 - Two spaces for the hilbert curve to work right
'N pushes 'N' onto the stack
'e pushes 'e'
d duplicates it
'd pushes d
80 pushes 8, 0
J concats top two values
0I pushes 0, pops, increments, pushes back on, net effect: pushes 1
J concats to '108'
i converts to integer
c pops and pushes ascii equiv on stack
'e pushes 'e' (again)
U reverses the stack
and the p's print out the stack
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.