Samanlıktaki İğneyi Gizle (Polisler)


38

Bu bir mücadelesinin bir parçası . Soyguncular bölümü için buraya gidin .

Polislerin Mücadelesi

Dizeyi çıkaran, seçtiğiniz bir dilde bir program veya işlev yazmalısınız Haystack. Bununla birlikte, bazı karakter alt kümelerini programınızdan kaldırmak (geri kalanını yeniden düzenlemeksizin) mümkün olmalıdır, böylece sonuçta elde edilen dize aynı zamandaNeedle bunun yerine basılan geçerli bir programdır . Her iki program / işlev isteğe bağlı olarak tek bir izleyen yeni satır (birbirinden bağımsız olarak) yazdırabilir, ancak başka bir şey yazmaz. Çıktı büyük / küçük harf duyarlıdır ve sağlanan tam kasayı izlemelidir.

Amacınız elbette "iğneyi" çok iyi gizlemektir. Ama teslim ile kırık olabilir notu o herhangi geçerli çözümü değil, sadece bir amaçladığınız.

Lütfen cevabınıza ekleyin:

  • Gönderiminizin dili (ve varsa sürümü).
  • Haystack programının bayt cinsinden boyutu.
  • Haystack programının kendisi.
  • STDOUT değilse çıkış yöntemi.
  • Mümkünse, seçtiğiniz dil için çevrimiçi bir tercüman / derleyici bağlantısı.

Gönderiniz bir program veya işlev olabilir, ancak bir snippet olmayabilir ve bir REPL ortamı üstlenmemelisiniz. Herhangi bir giriş yapmamalısınız ve STDOUT, fonksiyon dönüş değeri veya function (out) parametresi üzerinden çıkış alabilirsiniz.

Her iki program / işlev makul bir masaüstünde 5 saniye içerisinde tamamlanmalı ve deterministik olmalıdır. Bileşenleri karma, şifreleme veya rasgele sayı üretimi için kullanmamalısınız (rasgele sayı üretecini sabit bir değere yerleştirseniz bile).

Adalet için, seçtiğiniz dil için uygun bir tercüman veya derleyici bulunmalıdır.

İğne programı bulunursa bir cevap kırılır. Cevabınız 7 gün boyunca kırılmadıysa, cevabınızdaki istenen İğne programını açıklayarak, başvurunuzu güvenli kılar. Çözümünüzü açığa vurmazsanız, 7 gün geçse bile, yine de hırsızlar tarafından kırılabilir. En kısa güvenli Haystack programı (bayt olarak ölçülür) kazanır.

Örnekler

İşte farklı dillerde birkaç basit örnek:

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]

Kaldırılan karakterlerin alt kümesinin bitişik olması gerekmediğini unutmayın.

Uncracked Gönderiler

<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
İlgili. (Asıl fark, programların OEIS dizileri uygulaması ve çatlak programın herhangi bir farklı OEIS dizisi üretmesine izin vermesidir, bu da polislerin istenmeyen çatlaklara karşı korunmalarını zorlaştırır. daha kısa çözümler bularak soyguncular.)
Martin Ender

Bunu Haystack'ta yapardım ama hiçbir belgesi yok ve kodu
okurken cbb


1
Yığın pasajı bu cevap
mbomb007

1
@ kamoroso94 Evet, ancak bu aday programları 5 veya 6 saniye sonra sonlandırabileceğiniz anlamına gelir, çünkü bitirmedilerse aradığınız çözüm olamazlar.
Martin Ender

Yanıtlar:


16

Samanlık , 84 bayt, Kırık

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

Çevrimiçi deneyin!

Bu görünüyor (bana) oldukça sarsılmış ama doğru altkümeyi bulursanız, bu biraz fazla kolay ... oh, sadece bizi başlatmak için: P



1
@icrieverytim 1. oo cool ikisi de unicode glifler 2. mevcut olan daha bilimsel olarak doğru
HyperNeutrino 8:17

1. Evet, biliyorum, gerçekten harika görünüyorlar. : PI onları bir Unicode bloğunun altın madeninde buldum . Neon'un kod sayfasına girdiklerinde şaşırmayın. 2. TBH, eskisinin daha iyi IMO görünüyordu. : P
tamamen insan

1
@HyperNeutrino Neden benzene ilginiz var?
Michthan

3
@Michthan Bir nötrino olduğumu düşünerek, bu iyi bir soru, ama bilmiyorum: P
HyperNeutrino 9:17

12

Altıgen , 37 bayt

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

Çevrimiçi deneyin!

Sadece zorunlu Hexagony girişim ...

Kolaylık sağlamak için, işten çıkarılmamış kod:

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

Bu nasıl çalışır:

Program ile başlıyor H, sonra IP # 5'e geçiyoruz. Bu IP, batı köşesinde başlar, yürütürken zıplar ve sarılır (etkilidir) ;a;y;s;(bu nedenle bastık Hays). Sonra sbir artırılır alır ttarafından )ve baskılı, o zaman geçmesine Ne...(calmadan öncea;c; (hala altıgen küçük bir bölümü etrafında zıplayan). Program edecek _, yukarıya yansıtır \için lbir indirildiği alır ki kgöre (bir geçtiği, \basılmadan önce ve program son bulur @.

Ayrıntılı sürüm


3
Bu dil hala beni mahvediyor. Bunun için seni seviyorum
phroureo

Beynim şu anda patlıyor. Bunu, kodu çözecek kadar çözmeye çalışıyordum, ama YEŞİL adam. Ne tür bir bükülmüş adam bunu yapar?
phroureo

@phroureo ...> _>
Martin Ender

Cevabınız güvende olduktan sonra, bana ne yaptığını adım adım verebilir misiniz? (Ya da zaten benzer bir yerde bir adım adım
ilerliyorsanız

1
@phroureo Güvenli olmadan önce polis programına bir açıklama eklemeyi umursamıyorum ve yine de güvenli olduğunu iddia edeceğimi sanmıyorum (zorlukla koyduğum bir yazıyla kendi mücadelemi kazanma konusunda çok hevesli değilim. herhangi bir çaba içinde). Açıklamayı yarın eklemeye çalışacağım. Bu arada, esolangs sohbet odasında Hexagony konusunda size yardımcı olmaktan memnuniyet duyarım .
Martin Ender,

10

Brain-Flak , 146 bayt ( Kırık )

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

Çevrimiçi deneyin!

Amaçlanan çözüm, 80 bayt

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


8

JavaScript, 95 bayt (ES6), Kırık

Bir dize döndüren bir işlev.

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

"Haystack" demosu


Çok güzel bir bulmaca. Cracked
ShreevatsaR,

8

Haskell , 168 bayt ( nimi tarafından çatlak )

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"

Çevrimiçi deneyin! Tanımlayıcı değerlendirilmesi hgetiri dize "Haystack"bazı silme sonra, hverim "Needle".


1
Kırık . Çözmesi oldukça eğlenceliydi.
nimi


4

Altıgen , 32 bayt. Çatlak

Martin'i çözemedim , ben de kendim gönderiyorum.

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

Çevrimiçi deneyin!

İşte biçimlendirilmiş:

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

Bununla amacım her iki çözümün de mümkün olduğunca çok IP kullanmasıydı, İğne için 6 , Haystack için sadece 5 aldım .




3

Java (OpenJDK 8) , 226 217 bayt ( Kırık )

İlk golf kodu, muhtemelen çok kolay ama eğlenceli bir mücadele oldu!

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

Çevrimiçi deneyin!


TIO'nuz çalışmıyor. Sen değiştirmek isteyebilirsiniz return new Main().d();için System.out.print(new Main().d());ana-yöntemde.
Kevin Cruijssen

@KevinCruijssen Başlar için teşekkürler!
Luke Stevens



2

JavaScript, 119 bayt (ES6), Kırık

Bir dize döndüren bir işlev. Oldukça uzun ve çok zor değil, ama umarım eğlenceli.

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

"Haystack" demosu


Kırık . Jsfuck github README.md size çok yardımcı oldu.
birisi

2

Python 2.7.2, 103/117 bayt, Kırık

İşlev Sürümü (117 bayt):

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

Program Sürümü (103 bayt):

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

Bu iyi yazdırmalı Haystack. Python Fiddle'da test edilmiştir .

BT, bu ilk girişimi.

Program sürümünün bir parçacık olarak sayılıp sayılmadığından emin değilim, bu yüzden her iki sürümü de buraya koydum.



2

Python 2.7.10, Numpy 1.12.1, 208 209 bayt ile ( kırık )

Numpy'de İğne ve Samanlık var! İşte Haystack; İğne bulabilir misin bak. Umarım İğne'yi ararken sakladığım kadar eğlenmişsinizdir.

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

Belirtildiği şekilde çıktı verir:

Haystack

Sen edebilirsiniz repl.it .


Gerçekten önemli değil, ama bu 209 bayt, 208 değil
caird coinheringaahing


2

Java 8, 321 bayt, Kırık

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

Burada dene.

Daha okunabilir:

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

Çok uzun / zor olup olmadığından emin değil .. O zaman yine, genel olarak Java'nın başlaması oldukça uzun, bu nedenle 'İğne'yi doğru şekilde gizlemek elbette bayt sayısını biraz arttırıyor.
Kimse çatlamazsa, ben' sonradan bazı spoiler ipuçları ekleyeceğim.


1
TIO'nun daha az karakterli olmasına rağmen her iki şekilde de çatladı .
jacobly

2

Yakut , 185 byte, cab404 tarafından kırık

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

Çevrimiçi deneyin!

Sinsi bir şey bulmaya çalışacağım, ama şimdi burada "basit ama iğrenç" i deneyeceğim.



1
Bu eğlenceliydi ^^
cab404 11:17

Aferin! Mutlu kaba kuvvet çok sıkıcı değildi.
histocrat

2

Brain-Flak , 188 bayt ( Kırık )

Sadece az önce Funky Computer Man's'i gördüm. cevabını .

Bu biraz şaşkın.

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

Çevrimiçi deneyin!

Amaçlanan çözüm, 96 bayt:

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

Çevrimiçi deneyin!


Sadece normal Brain-Flak şaşırtmanın ötesine gizlenmiş demek istiyorsunuz.
Gryphon - Monica

@Gryphon Evet, bazı ekstra bitler ekledim.
H.PWiz


2

T-SQL, 757 karakter CRACKED

Önceki cevabımı sildiğim için özür dilerim - şaşırtığım kadar çok defa düzenlemiştim ve bir şey vermek istemedim. :)

Eğer böyle çılgın şeyler istemedikçe Her durumda, SQL obfuscating, biraz zor bu ve ben yatırım olmadığını.

Ayrıca, Dota'dan sonra değişkenlerimi isimlendirdiğim için asla özür dilemiyorum.

SQL Fiddle

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)

Bu konudaki en kolay cevap buysa, muhtemelen haklısınız. : P SQL'i kandırmak zor.


'Samanlık', 'Haystack' olmamalı mı?
cab404

SQL büyük harfleri çok iyi işlemez (harfler için kullanılması gereken şemayı özellikle tanımlamazsanız). Yapmamayı seçtim. : P
phroureo

1
@ phroureo Spesifikasyon, açıkça doğru bir şekilde büyük harf kullanılması gerektiğini belirtir.
LyricLy

Tamam, yukarıdaki kodu düzelttim (her ne kadar aynı çalıştığından SQL Fiddle'ı mutlaka düzeltmedim).
phroureo

1
kırık (üzgünüm ...)
Robert Fraser

1

Ly , 40 bayt, kırık

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

Çevrimiçi deneyin!

Oh oğlum, başka bir Ly CNR gönderimi. Bunlar tarihsel olarak çok işe yaramadı (muhtemelen benden ve dilden dolayı değil), ancak bu ücretlerin ne kadar olacağını göreceğiz. ve bugünün istisna olmadığını .

Çözüm:

(78)"e"sl(100)"l"l&o;, XXXXXX XXXXX XXXXXX X Xyedi satır boşluğu ile silin



1

Java , 345 bayt, Kırık

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

Çevrimiçi deneyin!

Gerçekten uzun ve muhtemelen çatlaması kolay, ama en azından bir Stack<Hay>!


çok güzel biri! ama evet, kırılması çok kolay.
Titus

0

TI-BASIC, 119 bayt (Güvenli)

Çıkış saklandı 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

Çözüm

Str11 uzunluğunu vermek için karakterleri kaldırın .

"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

Aseto , 154 bayt (Güvenli)

              27 \ 'dNU QJi9MLJ € {{x (}] J {'! O∑ € xiDQxsJ (] sicpicp1.2sJJicp90I.2 + D / edxi - '> xd80J0IJicxp7   

Çevrimiçi deneyin!

'N'ed'd80J0IJic'eUpppppp Çevrimiçi deneyin!

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.