건초 더미에서 바늘 숨기기 (Cops)


38

이것은 도전의 일부입니다 . 강도들을 위해 여기가십시오 .

경찰의 도전

선택한 언어로 프로그램이나 함수를 작성해야 문자열이 출력 Haystack됩니다. 그러나, 결과 문자열이되도록, 프로그램에서 (나머지를 재정렬없이) 일부 문자 집합을 제거 할 수 있어야한다 또한 인쇄 같은 언어에서 유효한 프로그램 Needle대신이. 두 프로그램 / 함수 모두 선택적으로 단일 후행 줄 바꿈 (서로 독립적으로)을 인쇄 할 수 있지만 다른 것은 없습니다. 출력은 대소 문자를 구분하며 제공된 정확한 케이스를 따라야합니다.

물론 당신의 목표는 "바늘"을 잘 숨기는 것입니다. 그러나 제출 한 내용은 원하는 솔루션뿐만 아니라 유효한 솔루션 으로 금이 갈 수 있습니다.

답변에 포함하십시오 :

  • 제출 한 언어 (및 관련되는 경우 버전)
  • Haystack 프로그램의 크기 (바이트)입니다.
  • Haystack 프로그램 자체.
  • STDOUT이 아닌 경우 출력 방법.
  • 가능하면 선택한 언어의 온라인 통역사 / 컴파일러에 대한 링크입니다.

제출은 프로그램 또는 기능 일 수 있지만 스 니펫은 아닐 수 있으며 REPL 환경을 가정해서는 안됩니다. 입력을하지 않아야하며 STDOUT, 함수 반환 값 또는 함수 (out) 매개 변수를 통해 출력 할 수 있습니다.

두 프로그램 / 기능 모두 합리적인 데스크탑 컴퓨터에서 5 초 이내에 완료되어야하며 결정적이어야합니다. 난수 생성기를 고정 된 값으로 시드하더라도 해시, 암호화 또는 난수 생성에 내장 기능을 사용해서는 안됩니다.

공정성을 위해 선택한 언어에 대한 무료 통역사 또는 컴파일러가 있어야합니다.

바늘 프로그램이 발견되면 답이 깨집니다. 답변이 7 일 동안 크랙되지 않은 경우 답변에 의도 된 바늘 프로그램이 공개되어 제출 내용이 안전해질 수 있습니다. 해결책을 밝히지 않는 한, 7 일이 지난 후에도 여전히 강도에 의해 금이 갈 수 있습니다. 가장 짧은 안전한 Haystack 프로그램 (바이트 단위로 측정)이 이깁니다.

다른 언어로 된 몇 가지 간단한 예는 다음과 같습니다.

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]

제거 된 문자의 하위 집합이 연속적 일 필요는 없습니다.

크랙되지 않은 제출

<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
관련. (차이점은 프로그램이 OEIS 시퀀스를 구현하고 크래킹 된 프로그램이 다른 OEIS 시퀀스 를 출력 수있게하여 경찰이 의도하지 않은 균열을 방지하기가 훨씬 어렵다는 것입니다. 또한 강도가 다른 사람의 균열을 훔치기도했습니다 더 짧은 해결책을 찾아서 강도.)
마틴 엔더

나는 이것을 Haystack에서 할 것이지만 문서가 없으며 코드를 통해 cbb를
보았습니다


1
스택 조각은의 길이 잘못을 얻는다 이 답변
mbomb007

1
@ kamoroso94 예,하지만 5 초 또는 6 초 후에 후보 프로그램을 종료 할 수 있습니다. 완료되지 않으면 원하는 솔루션이 될 수 없기 때문입니다.
Martin Ender

답변:


16

건초 더미 , 84 바이트, 금이 간

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

온라인으로 사용해보십시오!

이것은 (나에게) 다소 복잡해 보이지만 올바른 하위 집합을 찾으면 너무 쉽습니다 ... 오, 우리를 시작하기 위해 : P



1
@icrieverytim 1. oo 멋지게 둘 다 유니 코드 글리프입니다. 2. 현재는 과학적으로 더 정확합니다
HyperNeutrino

1. 예, 정말 멋져 보입니다. : PI는 이 유니 코드 블록의 금광 에서 발견했습니다 . 그들이 Neon의 코드 페이지에 들어가더라도 놀라지 마십시오. 2. 이전의 TBH가 더 나은 IMO로 보였습니다. : P
완전히 인간적인

1
@HyperNeutrino 왜 벤젠에 관심이 있습니까?
Michthan

3
@Michthan 제가 중성미자 인 것을 고려하면 좋은 질문이지만, 잘 모르겠습니다 : P
HyperNeutrino

12

헥사 고니 , 37 바이트

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

온라인으로 사용해보십시오!

저의 의무적 인 헥사 고니 항목 ...

편의를 위해 펼쳐진 코드는 다음과 같습니다.

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

작동 원리 :

프로그램은로 시작한 H다음 IP # 5로 이동합니다. 이 IP는 서쪽 모서리에서 시작하여 실행 (효과적으로)하는 동안 튀어 오르고 감싸집니다 ;a;y;s;(그래서 인쇄했습니다 Hays). 그런 다음 sA를 증가됩니다 t에 의해 )및 인쇄, 우리는 통과 Ne...(c에 도착하기 전에 a;c;(아직 육각형의 작은 부분을 주위에 수신 거부). 이 프로그램은 안타 _, 통해 반영 \lA를 감소 도착하는 k에 의해 (또 다른 통과하는 \인쇄되기 전에와의 프로그램 종료 @.

자세한 버전


3
이 언어는 여전히 나를 깨뜨린 다. 나는 당신을 사랑합니다.
phroureo

내 뇌가 지금 폭발하고 있습니다. 코드를 해독하기에 충분하다고 생각했지만 YEESH 사람. 어떤 종류의 꼬인 사람이 이것을 구성합니까?
phroureo

@phroureo ...> _>
Martin Ender

당신의 대답이 안전하고 나면, 무슨 일을하는지 단계별로 알려주시겠습니까? (또는 이미 비슷한 곳이 있다면, 저를 가리켜 주시겠습니까?)
phroureo

1
@phroureo 나는 안전하기 전에 경찰 프로그램에 대한 설명을 추가하는 것을 좋아하지 않으며 어쨌든 안전하다고 주장하지 않을 것입니다. 모든 노력). 내일 설명을 추가하려고합니다. 그 동안, esolangs 대화방에서 Hexagony를 도와 드리겠습니다 .
Martin Ender

10

Brain-Flak , 146 바이트 ( 크랙 )

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

온라인으로 사용해보십시오!

의도 된 솔루션, 80 바이트

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


8

자바 스크립트, 95 바이트 (ES6), 크랙

문자열을 반환하는 함수입니다.

f=(k=b=x=35)=>x--?f(k*74837258394056219&268435455):k&2?'N'+(k^124038877).toString(b):'Haystack'

"Haystack"데모


아주 좋은 퍼즐. 깨짐
ShreevatsaR





3

자바 (오픈 JDK 8) , 226 (217) 바이트 ( )

최초의 코드 골프, 아마도 매우 쉬운 일이지만 재미있는 도전이었습니다!

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

온라인으로 사용해보십시오!


TIO가 작동하지 않습니다. 당신은을 변경할 수 있습니다 return new Main().d();System.out.print(new Main().d());메인-방법.
Kevin Cruijssen

@KevinCruijssen 감사합니다!
Luke Stevens



2

자바 스크립트, 119 바이트 (ES6), 크랙

문자열을 반환하는 함수입니다. 꽤 길고 어렵지는 않지만 희망적으로 재미 있습니다.

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

"Haystack"데모


금이 . jsfuck github README.md가 많은 도움이되었습니다.
누군가

2

Python 2.7.2, 103/117 바이트, 크랙

기능 버전 (117 바이트) :

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

프로그램 버전 (103 바이트) :

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

Haystack잘 인쇄되어야 합니다. Python Fiddle 에서 테스트되었습니다 .

그러나 이것이 첫 번째 시도입니다.

프로그램 버전이 스 니펫으로 계산되는지 확실하지 않으므로 두 버전을 모두 여기에 넣습니다.



2

NumPy와 1.12.1 파이썬 2.7.10, 208 209 바이트 ( )

Numpy 에는 바늘 건초 더미가있는 것 같습니다! 여기 건초 더미가 있습니다. 바늘을 찾을 수 있는지 확인하십시오. 바늘을 숨기는 것만 큼 재미있게 검색하기를 바랍니다.

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

지정된대로 출력합니다.

Haystack

repl.it 할 수 있습니다 .


정말 중요한, 그러나 이것은 209 바이트가 아닌 208하지 않는 것이
coinheringaahing 케어 드


2

Java 8, 321 바이트, 크랙

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());}

여기에서 시도하십시오.

더 읽기 쉬운 :

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());
}

너무 길거나 단단하지 않은지 잘 모르겠습니다. 다시 한 번, Java는 일반적으로 꽤 길기 때문에 'Needle'을 올바르게 숨기면 물론 바이트 수가 상당히 증가합니다.
아무도 크랙하지 않으면 나중에 스포일러 팁을 추가하겠습니다.


1
TIO는 하나의 적은 문자를 가지고 있지만 어느 쪽이든 졌습니다.
jacobly

2

cab404에 의해 크랙 된 Ruby , 185 바이트

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

온라인으로 사용해보십시오!

나는 교활한 무언가를 생각해 내려고 노력하지만, 지금은 "단순하지만 눈에 거슬리는"시도가 있습니다.



1
^^
cab404

잘 했어! 기쁘고 무차별 한 힘이 너무 지루하지 않았습니다.
histocrat

2

Brain-Flak , 188 바이트 ( 크랙 )

내가 방금 게시 한 Funky Computer Man의 답변 만 보았습니다 .

다소 난독 화되어 있습니다.

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

온라인으로 사용해보십시오!

의도 된 솔루션, 96 바이트 :

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

온라인으로 사용해보십시오!


당신은 단지 정상적인 Brain-Flak 난독 화를 넘어 다소 난독 화를 의미합니다.
그리폰-복원 모니카

@Gryphon 네, 추가 비트를 추가했습니다.
H.PWiz 2016 년


2

T-SQL, 757 자 크랙

이전 답변을 삭제 한 것에 대한 사과-난독 화하면서 너무 많이 편집했으며 아무것도주고 싶지 않았습니다. :)

어쨌든, 이런 미친 짓을하고 싶지 않다면 SQL에서 난독 화하는 것은 약간 어렵습니다 . 나는 그렇게 투자하지 않았습니다.

또한 Dota 후에 변수 이름을 지정 한 것에 대해 사과하지 않습니다.

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)

이것이이 글타래에서 가장 쉬운 답이라면, 아마도 맞을 것입니다. : P SQL을 속이기 어렵습니다.


'haystack'이 'Haystack'이 아니어야합니까?
cab404

SQL은 대문자를 아주 잘 처리하지 않습니다 (문자에 사용해야하는 스키마를 특별히 정의하지 않는 한). 나는 선택하지 않았다. : P
phroureo

1
@phroureo 스펙은 정확하게 대문자를 사용해야한다고 명시 적으로 명시하고 있습니다.
LyricLy

좋아, 나는 위의 코드를 수정했다.
phroureo

1
금이 왔습니다 (죄송합니다 ...)
Robert Fraser

1

Ly , 40 바이트, 크랙

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

온라인으로 사용해보십시오!

오 소년, 또 다른 Ly CNR 제출. 이것들은 역사적으로 잘 작동하지 않았지만 (언어가 아닌 나 때문에 가능할 것입니다), 우리는이 요금이 어떻게 오늘날인지 예외를 볼 수 있습니다.

해결책:

(78)"e"sl(100)"l"l&o;, XXXXXX XXXXX XXXXXX X X7 개의 선행 공백으로 제거



1

자바 , 345 바이트, 금이 간

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());}}

온라인으로 사용해보십시오!

정말 길고 깨지기 쉬운 것이지만 적어도 그것은 있습니다 Stack<Hay>!


아주 좋은 것! 하지만 그렇습니다.
Titus

0

TI-BASIC, 119 바이트 (안전)

에 저장된 출력 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

해결책

문자를 제거 Str1하여 길이를 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

아세토 , 154 바이트 (안전)

              27 \ 'dNU QJi9MLJ € {{x (}] J {'! o∑ € xiDQxsJ (] sicpicp1.2sJJicp90I.2 + D / edxi- '> xd80J0IJicx'NIx5sJsJidcpIcpL7sssJicpei7 + UUdJicpLI7'JpPp   

온라인으로 사용해보십시오!

'N'ed'd80J0IJic'eUpppppp 온라인으로 사용해보십시오!

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.