Versteck die Nadel im Heuhaufen (Cops)

38

Dies ist Teil einer Herausforderung für . Gehen Sie hier für die Räuber.

Die Herausforderung der Bullen

Sie sollten ein Programm oder eine Funktion in einer Sprache Ihrer Wahl schreiben, die den String ausgibt Haystack. Es muss jedoch möglich sein, eine Teilmenge von Zeichen aus Ihrem Programm zu entfernen (ohne den Rest neu anzuordnen), sodass die resultierende Zeichenfolge auch ein gültiges Programm in derselben Sprache ist, das Needlestattdessen gedruckt wird. Beide Programme / Funktionen können optional (unabhängig voneinander) eine einzelne abschließende Zeile ausgeben, sonst nichts. Bei der Ausgabe wird zwischen Groß- und Kleinschreibung unterschieden. Die Ausgabe muss genau der angegebenen Schreibweise entsprechen.

Ihr Ziel ist es natürlich, die "Nadel" sehr gut zu verstecken. Beachten Sie jedoch, dass Ihr Beitrag mit jeder gültigen Lösung geknackt werden kann , nicht nur mit der von Ihnen beabsichtigten.

Bitte geben Sie in Ihrer Antwort an:

  • Die Sprache (und ggf. die Version) Ihres Beitrags.
  • Die Größe des Haystack-Programms in Byte.
  • Das Haystack-Programm selbst.
  • Die Ausgabemethode, wenn es nicht STDOUT ist.
  • Wenn möglich, einen Link zu einem Online-Dolmetscher / Compiler für die von Ihnen gewählte Sprache.

Ihr Beitrag kann entweder ein Programm oder eine Funktion sein, aber kein Ausschnitt, und Sie dürfen keine REPL-Umgebung annehmen. Sie dürfen keine Eingabe vornehmen und können über STDOUT, Funktionsrückgabewert oder Funktionsparameter (out) ausgeben.

Beide Programme / Funktionen müssen auf einem vernünftigen Desktop-Computer innerhalb von 5 Sekunden abgeschlossen und deterministisch sein. Sie dürfen keine integrierten Funktionen zum Hashing, zur Verschlüsselung oder zur Generierung von Zufallszahlen verwenden (auch wenn Sie den Zufallszahlengenerator auf einen festen Wert setzen).

Im Interesse der Fairness muss es einen frei verfügbaren Dolmetscher oder Compiler für die von Ihnen gewählte Sprache geben.

Eine Antwort ist geknackt, wenn das Nadelprogramm gefunden wird. Wenn Ihre Antwort 7 Tage lang nicht geknackt wurde, können Sie das vorgesehene Nadelprogramm in Ihrer Antwort angeben, wodurch Ihre Übermittlung sicher ist. Solange Sie Ihre Lösung nicht preisgeben, kann sie auch dann von Räubern geknackt werden, wenn die sieben Tage bereits verstrichen sind. Das kürzeste sichere Heuhaufen-Programm (gemessen in Bytes) gewinnt.

Beispiele

Hier einige einfache Beispiele in verschiedenen Sprachen:

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]

Beachten Sie, dass die Teilmenge der entfernten Zeichen nicht zusammenhängend sein muss.

Uncracked Submissions

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

Martin Ender
quelle
1
Verbunden. (Der Hauptunterschied besteht darin, dass die Programme OEIS-Sequenzen implementieren mussten und das geknackte Programm jede andere OEIS-Sequenz ausgeben konnte , was es den Bullen sehr viel schwerer macht, sich vor unbeabsichtigten Rissen zu schützen. Außerdem konnten Räuber Risse von anderen stehlen Räuber durch die Suche nach noch kürzeren Lösungen.)
Martin Ender
Ich würde dies in Haystack tun, aber es hat keine Dokumentation und ich sehe den Code durch :(
Okx
1
Das Stack-Snippet hat die falsche Länge für diese Antwort
mbomb007
1
@ kamoroso94 Ja, aber das bedeutet, dass Sie Kandidatenprogramme nach 5 oder 6 Sekunden beenden können, denn wenn sie noch nicht fertig sind, können sie nicht die Lösung sein, nach der Sie suchen.
Martin Ender

Antworten:

16

Heuhaufen , 84 Bytes, Gebrochen

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

Probieren Sie es online!

Das sieht (für mich) etwas verworren aus, aber wenn Sie die richtige Untergruppe finden, ist es ein bisschen zu einfach ... na ja, nur um uns zum Einstieg zu bringen: P

HyperNeutrino
quelle
Rissig .
fireflame241
1
@icrieverytim 1. oo cool, sie sind beide Unicode-Glyphen 2. die aktuelle ist wissenschaftlich genauer
HyperNeutrino
1. Ja, ich weiß, sie sehen wirklich cool aus. : PI hat sie in dieser Goldmine eines Unicode-Blocks gefunden . Sei nicht überrascht, wenn sie in Neons Codepage landen. 2. TBH, der alte sah besser aus IMO. : P
totalhuman
1
@HyperNeutrino Warum interessieren Sie sich für Benzol?
Michthan
3
@Michthan Wenn man bedenkt, dass ich ein Neutrino bin, ist das eine gute Frage, aber ich weiß nicht: P
HyperNeutrino
12

Hexagony , 37 Bytes

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

Probieren Sie es online!

Nur mein obligatorischer Hexagony-Eintrag ...

Der Einfachheit halber ist hier der aufgeklappte Code:

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

Wie das funktioniert:

Das Programm startet mit H, dann gehen wir zu IP # 5 über. Diese IP beginnt in der Westecke und springt und wickelt sich während der Ausführung ab (in Kraft) ;a;y;s;(wir haben also gedruckt Hays). Dann swird auf einem erhöht tdurch )und gedruckt, wir durchlaufen dann Ne...(cvor zu bekommen a;c;(noch einen kleinen Teil des Sechsecks um Prellen). Das Programm schlägt auf _, reflektiert bis \zu ldem , was zu einem kvon dekrementiert wird (, das durch ein anderes geht, \bevor es gedruckt wird, und das Programm endet auf dem @.

Ausführliche Version

Martin Ender
quelle
3
Diese Sprache regt mich immer noch auf. Ich liebe dich dafür.
Phroureo
Mein Gehirn explodiert gerade. Ich habe versucht, das herauszufinden, um den Code zu knacken, aber YEESH man. Was für ein verdrehter Typ macht das aus?
Phroureo
@phroureo ...> _>
Martin Ender
Wenn Ihre Antwort sicher ist, können Sie mir Schritt für Schritt erklären, was es tut? (Oder wenn Sie bereits eine Schritt-für-Schritt-
Anleitung haben
1
@phroureo Es macht mir nichts aus, eine Erklärung des Cop-Programms hinzuzufügen, bevor es sicher ist, und ich glaube nicht, dass ich es trotzdem für sicher halte (ich bin nicht sehr daran interessiert, meine eigene Herausforderung mit einem Beitrag zu gewinnen, den ich kaum eingereicht habe jede Anstrengung in). Ich werde versuchen, morgen die Erklärung hinzuzufügen. In der Zwischenzeit helfe ich Ihnen gerne mit Hexagony im esolangs Chatroom .
Martin Ender
10

Brain-Flak , 146 Bytes ( geknackt )

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

Probieren Sie es online!

Geplante Lösung, 80 Bytes

([((((()()())){}){}){}](()([()](()({}([((((()()()){})))[]])[]({}({})[{}]()({}((()(({}){}){}){}){}())))[][][][][][]))[]))(((()[]){}){({}[()()])}{})
( ((   )(                  [(  (( (         )()()){})) []]   ({}(  )    ( (  ( ()(({}){}){}){}){}())))            ))    (((()[]){}){({}[()  ])}{})
Weizen-Assistent
quelle
Gebrochen
Nitrodon
8

JavaScript, 95 Bytes (ES6), Gebrochen

Eine Funktion, die eine Zeichenfolge zurückgibt.

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

"Haystack" -Demo

Arnauld
quelle
Sehr schönes Puzzle. Cracked
ShreevatsaR
8

Haskell , 168 Bytes ( geknackt von 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"

Probieren Sie es online! Das Auswerten des Bezeichners hgibt die Zeichenfolge zurück "Haystack", nachdem einige Löschungen hergeben "Needle".

Laikoni
quelle
1
Rissig . Hat ziemlich viel Spaß gemacht zu lösen.
nimi
4

Hexagony , 32 Bytes. Geknackt

Ich konnte Martins nicht lösen , also poste ich meine eigene.

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

Probieren Sie es online!

Hier ist es formatiert:

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

Mein Ziel dabei war, dass beide Lösungen so viele IPs wie möglich verwenden, ich bekam 6 für Needle und nur 5 für Haystack .

H.PWiz
quelle
Cracked
Boboquack
3

Pyth , 44 Bytes ( geknackt )

Kr."Dn2û"2sf!/+rrK2 2r."EL8"2Tr."AhÐP­®Z"2

Probieren Sie es hier aus.

Mr. Xcoder
quelle
Sollte leicht zu knacken sein, nur ein erster Versuch :-)
Mr. Xcoder
@ _ @ Warum gibt es Jelly Code
Leaky Nun
geknackt
Undichte Nonne
3

Java (OpenJDK 8) , 226.217 Byte ( geknackt )

Zum ersten Mal Code Golf, wahrscheinlich sehr einfach, aber es war eine lustige Herausforderung!

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

Probieren Sie es online!

Luke Stevens
quelle
Ihr TIO funktioniert nicht. Sie könnten das ändern wollen , return new Main().d();um System.out.print(new Main().d());im Hauptverfahren.
Kevin Cruijssen
@ KevinCruijssen Vielen Dank für die Heads-up!
Luke Stevens
1
Rissig .
Milch
3

Gleichstrom , 148 Bytes ( geknackt )

6 93 3 9 2 2**+*+483622 1 2 3 3*+3*+89 47*+*+3 5 2* 269 158 9**107 97*2 4*++2 3 3*+42 14 2**+*+5*+5 2148 1 6 2*+*+68262 5 280 7 2 3 3*+5 2**+*+*+*+P

Probieren Sie es online!

Es ist ziemlich einfach, aber ich hoffe, dass es wenigstens ein bisschen Spaß macht, es zu lösen: з

cab404
quelle
Gebrochen
seit dem
2

JavaScript, 119 Bytes (ES6), Gebrochen

Eine Funktion, die eine Zeichenfolge zurückgibt. Ziemlich lang und nicht so schwer, aber hoffentlich lustig.

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

"Haystack" -Demo

Arnauld
quelle
Rissig . Der jsfuck github README.md hat mir sehr geholfen.
Jemand
2

Python 2.7.2, 103/117 Bytes, geknackt

Funktionsversion (117 Byte):

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

Programmversion (103 Byte):

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

Dies sollte Haystackgut gedruckt werden . Getestet auf Python Fiddle .

Übrigens ist dies der erste Versuch.

Ich bin mir nicht sicher, ob die Programmversion als Snippet gezählt wird, also füge ich beide Versionen hier ein.

Shieru Asakoto
quelle
Rissig .
Jacobly
2

Python 2.7.10 mit Numpy 1.12.1, 208 209 Bytes ( geknackt )

Es scheint, dass es in Numpy eine Nadel und einen Heuhaufen gibt! Hier ist der Heuhaufen; sehen Sie, ob Sie die Nadel finden können. Ich hoffe, Sie haben so viel Spaß beim Suchen nach der Nadel, wie ich sie versteckt hatte.

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

Es gibt wie angegeben aus:

Haystack

Sie können repl.it .

wie auch immer
quelle
Nicht, dass es wirklich wichtig wäre, aber das sind 209 Bytes, nicht 208
caird coinheringaahing
Rissig .
Jacobly
2

Java 8, 321 Bytes, Gebrochen

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

Probieren Sie es hier aus.

Besser lesbar:

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

Ich bin mir nicht sicher, ob es zu lang / zu schwer ist. Andererseits ist Java im Allgemeinen ziemlich lang.
Wenn Sie also die 'Nadel' richtig verstecken, erhöht sich natürlich die Anzahl der Bytes ein bisschen. Ich werde später ein paar Spoiler-Tipps hinzufügen.

Kevin Cruijssen
quelle
1
Der TIO hat einen Charakter weniger, ist aber in beide Richtungen geknackt .
Jacobly
2

Ruby , 185 Bytes, geknackt von 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

Probieren Sie es online!

Ich werde versuchen, etwas Hinterhältiges zu erfinden, aber hier ist ein Versuch, "einfach, aber widerlich".

Histokrat
quelle
1
das hat Spaß gemacht ^^
cab404
Gut gemacht! Froh, dass rohe Gewalt nicht zu langweilig war.
Histokrat
2

Brain-Flak , 188 Bytes ( geknackt )

Ich habe gerade die Antwort von Funky Computer Man gesehen , als ich das gepostet habe.

Es ist etwas verschleiert.

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

Probieren Sie es online!

Beabsichtigte Lösung, 96 Bytes:

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

Probieren Sie es online!

H.PWiz
quelle
Du meinst etwas verschleiert, das über die normale Brain-Flak-Verschleierung hinausgeht.
Gryphon - Setzen Sie Monica
@Gryphon Ja, ich habe ein paar zusätzliche Bits hinzugefügt.
H.PWiz
Geknackt
Nitrodon
2

T-SQL, 757 Zeichen CRACKED

Entschuldigung für das Löschen meiner vorherigen Antwort - Ich habe sie zu oft bearbeitet, als ich sie verschleiert habe, und wollte nichts preisgeben. :)

In SQL zu verschleiern ist auf jeden Fall ein bisschen schwierig, es sei denn, Sie möchten verrückte Sachen wie diese machen , und ich war nicht so investiert.

Außerdem entschuldige ich mich nicht, dass ich meine Variablen nach Dota benannt habe.

SQL-Geige

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)

Wenn dies die einfachste Antwort in diesem Thread ist, haben Sie wahrscheinlich Recht. : P Es ist schwer, SQL auszutricksen.

phroureo
quelle
sollte Heuhaufen nicht Heuhaufen sein?
cab404
SQL handhabt die Großschreibung nicht sehr gut (es sei denn, Sie definieren speziell das Schema, das für die Buchstaben verwendet werden soll). Ich habe mich dagegen entschieden. : P
phroureo
1
@phroureo Die Spezifikation gibt ausdrücklich an, dass die Großschreibung korrekt sein muss.
Text
Okay, ich habe den obigen Code korrigiert (obwohl ich die SQL-Geige nicht unbedingt korrigiert habe, da sie genauso funktioniert).
Phroureo
1
geknackt (tut mir leid ...)
Robert Fraser
1

Ly , 40 Bytes, geknackt

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

Probieren Sie es online!

Oh Mann, noch eine Ly CNR Einreichung. Diese haben in der Vergangenheit nicht sehr gut funktioniert (möglicherweise aufgrund von mir und nicht der Sprache), aber wir werden sehen, wie dies abläuft und heute keine Ausnahme ist.

Lösung:

(78)"e"sl(100)"l"l&o;entfernen Sie XXXXXX XXXXX XXXXXX X Xmit sieben führenden Leerzeichen

Textlich
quelle
Geknackt
Nitrodon
1

Java , 345 Bytes, Gebrochen

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

Probieren Sie es online!

Wirklich lang und wahrscheinlich leicht zu knacken, aber zumindest hat es eine Stack<Hay>!

Jonathan S.
quelle
sehr schön! aber ja, ziemlich leicht zu knacken.
Titus
0

TI-BASIC, 119 Byte (sicher)

Ausgabe gespeichert in 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

Lösung

Entfernen Sie die Zeichen aus Str1, um eine Länge von 1 zu erhalten.

"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
kamoroso94
quelle
0

Aceto , 154 Bytes (Sicher)

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

Probieren Sie es online!

'N'ed'd80J0IJic'eUpppppp Probieren Sie es online!

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