干し草の山に針を隠す(警官)


38

これは挑戦の一部です。強盗の部分はここ行きます

警官の挑戦

文字列を出力する、選択した言語でプログラムまたは関数を作成する必要がありますHaystack。しかし、結果の文字列があるように、あなたのプログラムから(残りの順序を変更せずに)文字のサブセットを除去することが可能でなければならない印刷し、同じ言語で有効なプログラムNeedleの代わりに。両方のプログラム/関数は、オプションで単一の末尾の改行を(互いに独立して)出力できますが、それ以外は何も出力しません。出力では大文字と小文字が区別され、指定された正確な大文字小文字に従う必要があります。

もちろん、あなたの目標は「針」を非常によく隠すことです。しかし、あなたの提出物は、あなたが意図したものだけでなく、どんな有効な解決策でクラックされる可能性があることに注意してください。

あなたの答えに含めてください:

  • 提出の言語(および関連する場合はバージョン)。
  • Haystackプログラムのサイズ(バイト単位)。
  • Haystackプログラム自体。
  • STDOUTでない場合の出力メソッド。
  • 可能であれば、選択した言語のオンラインインタプリタ/コンパイラへのリンク。

提出物はプログラムまたは関数のいずれかですが、スニペットではなく、REPL環境を想定してはなりません。入力を受け付けてはならず、STDOUT、関数の戻り値、または関数(出力)パラメーターを介して出力できます。

両方のプログラム/機能は、合理的なデスクトップマシンで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で調べています:(
Okx


1
スタックスニペットはこの答えの
mbomb007

1
@ kamoroso94はい。ただし、5秒または6秒後に候補プログラムを終了できることを意味します。終了していない場合は、探しているソリューションにならないためです。
マーティンエンダー

回答:


16

Haystack、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.かっこいい、両方ともユニコードグリフ2.現在の方が科学的に正確です
-HyperNeutrino

1.ええ、本当にかっこいいですね。:PI は、Unicodeブロックのこの金鉱でそれらを見つけました。ネオンのコードページになってしまったとしても驚かないでください。2. TBH、古いものはIMOより良く見えました。:P
完全に人間の

1
@HyperNeutrinoなぜベンゼンに興味があるのですか?
ミクサン

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)。次にstbyにインクリメントして)印刷し、通過するNe...(c前に通過しますa;c;(六角形の小さなセクションでバウンドします)。プログラムはヒットし_、通って上に反映\するlまでデクリメントますこれkにより(、他の通過する、\印刷される前と上のプログラムを終了します@

詳細バージョン


3
この言語はまだ私をひび割れさせます。私はあなたを愛しています。
フロレオ

私の脳は今爆発しています。私はコードを解読するのに十分これを理解しようとしていましたが、そうです。どんなねじれた男がこれを構成しますか??
フロレオ

@phroureo ...> _>
マーティン・エンダー

あなたの答えが安全になったら、それが何をしているのかを段階的に教えてもらえますか?(または、似たようなステップバイステップを既に持っている場合は、そこに私を向けますか?)
phroureo

1
@phroureo安全になる前に警官プログラムの説明を追加しても構いませんし、とにかくそれを安全だと主張するつもりはありませんでの努力)。明日、説明を追加してみます。それまでの間、エソランズチャットルームで六角形のお手伝いをさせていただきます。
マーティンエンダー

10

Brain-Flak、146バイト(ひび割れ

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

オンラインでお試しください!

意図したソリューション、80バイト

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


8

JavaScript、95バイト(ES6)、クラック

文字列を返す関数。

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

「Haystack」デモ


とても素敵なパズル。ひびが入った
-ShreevatsaR



4

六角形、32バイト。割れた

私はマーティンのを解決できなかったので、私は自分の投稿しています。

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

オンラインでお試しください!

ここでフォーマットされています:

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

これでの私の目的は、両方のソリューションでできるだけ多くのIPを使用することでした。ニードルには6 個、Haystackには5個しかありませんでした。




3

Java(OpenJDK 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());、メイン・メソッドで。
ケビンCruijssen

@KevinCruijssenどうもありがとう!
ルークスティーブンス



2

JavaScript、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 には針干し草の山があるようです!これがHaystackです。針を見つけることができるかどうかを確認してください。私がそれを隠していたのと同じくらいあなたが針を探すのと同じくらい楽しいことを願っています。

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 caird


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は「ニードル」は、正しくはもちろん、バイトカウントかなり増加隠し..だから、かなり長いから始めることである
誰割れている場合、I」後でネタバレを追加します。


1
TIOのキャラクターは1つ少ないですが、どちらの方法でもクラックされました
ジャコブリー

2

Ruby、185バイト、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

オンラインでお試しください!

卑劣なものを考え出そうとしますが、今のところは「シンプルだが不快」なものを試してみましょう。



1
楽しかった^^
cab404

よくやった!嬉しいブルートフォースは退屈ではありませんでした。
-histocrat

2

Brain-Flak、188バイト(ひび割れ

これを投稿したとき、私はちょうどFunky Computer Manの答えを見ました。

多少難読化されています。

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

オンラインでお試しください!

意図したソリューション、96バイト:

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

オンラインでお試しください!


あなたは、通常のBrain-Flakの難読化をやや難読化することを意味します。
グリフォン-モニカの復活

@Gryphonはい、いくつかの余分なビットを追加しました。
H.PWiz


2

T-SQL、757文字のクラック

以前の回答を削除してしまったことをお-びします。難読化するのに何度も編集したため、何も提供したくありませんでした。:)

いずれにせよ、このようなクレイジーなことをしたいのでなければ、SQLの難読化は少し難しいです。私はそれを投資しませんでした。

また、Dotaにちなんで変数に名前を付けたことをunしみません。

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
フロレオ

1
@phroureo仕様には、大文字を正しく使用する必要があることが明示的に記載されています。
LyricLy

さて、上記のコードを修正しました(ただし、SQL Fiddleは同じように機能するため、必ずしも修正しませんでした)。
フロレオ

1
ひび割れ(ごめんなさい...)
ロバートフレイザー

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 X先頭の7つのスペースで削除



1

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


とても素敵なものです!しかし、はい、非常に簡単にクラックできます。
タイタス

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

Aceto、154バイト(安全)

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

オンラインでお試しください!

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