Quine Anagramme! (Polizistenthread)


22

Das ist der Faden der Bullen. Für den Räuber-Thread klicken Sie hier .

Aufgabe der Polizei

  • Schreiben Sie zunächst ein Quine in einer Sprache Ihrer Wahl.
  • Als nächstes rühre das Quine. Stellen Sie sicher, dass Sie dies gut machen, da die Räuber versuchen werden, es zu entschlüsseln und den ursprünglichen Quellcode zu finden! Beachten Sie, dass der verschlüsselte Code nicht funktionieren muss.
  • Schreibe eine Antwort auf diesen Thread. Geben Sie die Sprache, die Anzahl der Bytes und den verschlüsselten Code an.

Ihr Programm druckt möglicherweise nicht auf STDERR.

Hier ist ein Beispiel für eine Cop-Einreichung:

Python, 29 Bytes

nt _%=_r;_riinp;pr_='t _%%%_'

Aufgabe der Räuber

Für den Räuber-Thread klicken Sie hier .

Sichere Einreichungen

Wenn Ihr Beitrag nach einer Woche noch nicht geknackt wurde, können Sie die Lösung hinzufügen und angeben, dass er sicher ist. Wenn Sie dies nicht tun, ist Ihr Beitrag möglicherweise immer noch geknackt.

Wertung

Dies ist , sodass der Benutzer mit der sicheren Übermittlung mit den wenigsten Bytes der Gewinner dieses Abschnitts ist.

Bestenliste

Hier ist ein Stack-Snippet, um ein Lernboard für diese Herausforderung zu generieren. Formatieren Sie Ihren Beitrag folgendermaßen, damit er richtig angezeigt wird:

# Language Name, N bytes

... other stuff ...

Wenn Ihr Beitrag geknackt wird, formatieren Sie ihn bitte wie folgt:

# Language Name, N bytes, [Cracked!](link)

... other stuff ...

Wenn Ihr Beitrag sicher ist, formatieren Sie ihn wie folgt:

# Language Name, N bytes, Safe!

... other stuff ...

<script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 99469;</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>


7
Eng verwandt. (Dieselbe Herausforderung, außer dass die Antworten keine Quines sein mussten.)
Martin Ender,

1
Soll der verschlüsselte Code auch ein Quine sein? Muss es überhaupt ein gültiges Programm sein? Ich habe versucht, das Beispiel-Python auf Codepad auszuführen, aber es wird ein Syntaxfehler angezeigt .
Milch

@milk Nein, es muss kein gültiges Programm sein.
Oliver Ni

Antworten:


15

C #, 288 Bytes

Stag is a great shoW.        "="=""="="Agent"plastic"Was"tryin"to"Release"an"Astroid"."$Money$"st@le"tigers"and"Agent"plastic"got"mad"."$Money$"sic","man","t0tally"rad"."Sistrs"Rms"titAnic";"Civic"Ace"in"{sC@m}{hic}{vicis}..{cats}sAc}((@))((@)){{{>>{{{{{{}}}}}}}}}\\\\\\\;;;(@)((@)()),,;;

Meine Strategie ist es, dass alle kurzen geknackt werden und niemand stört sich daran, wie lange es dauert.


10

JavaScript, 1574 Bytes, Sicher!

Ich habe viel zu viel Zeit damit verbracht. Siehe die Verschleierung.

(notice that an unmatch parenthesis remains throughout the entire text.

dear "sir",

|    i cannot express my loathing to you and your things. they truly are a loathsome sight. (regar'less of their quality, they function as the most appalling devices...)[1]

|    these avocads of thine possession are most unpleasent. (ce n'est pas faux.) Queer; Careful; An' in total repulsing. in this form, those are not seulement cringe... So; CAB's is quite Cruel. (Cruel indeed...)

|    intention is not great (heh, intention, ;}) run, no, run, since {tu est le ;AqC;};

{{{{============================================}}}}

[1]: see? am i not insane? You may dictate the opposite, so i dictate thus.

9 + 4 is 13. Y is this. Y + 4 is 9 + 9 minus one. N is this. f(x) is {x + x}, so f(N) is N plus N is N + N is 3.

:^) i'm cruel; not so cruel.)
                                  rrrrrrrrrr 0nnnccnnggrrrrttssBBC
{({[}(<[<))(((((){{})}[}][[]{}(]))))|} f f r 0nnnccnngrrrrrttesBBA
())(((()))))()))()()()((((()))}{{})((} f f r 0nnnccnngrrrrrttesBBY
]]}(([][]{{{}}})()({}(){}{()}{}()[])][ f f r 4nnnccnngrrrrrttesBSY
))({})(}{)({{{{(()))())))))))()))()()( f f r 4nnnccnngrrrrrtpesqSY
)()()((((((((((Z))))))))()(()((()((((( f f r 5nnnccnngrrrrrtlefoSY
(((;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;''' f f r 3nnncccngrrrrxtleifSY
''''''''''''''''''',,,,,,,,[[[[[[]]]]] f f r 3nnncccngrrrrxtleifZQ
[ ] ] + + + + + + + + + + + + + + + ++ f f r 9nnncccggrrrrxtleifZQ
+ + + + too not fun...fffffffffffffuuu f f r 5nnncccggrrrrxtlli0ZQ
uuuuuuuuuuuu.. | | | |99S            ) f f r 0nnncccggrrrrxxll01QQ

Hier ist die Originalquelle!

function Y(x){return x.charCodeAt()};
function Q(x){return String.fromCharCode(x)};
N=Array.prototype;
function B(f,g,h){return function(){
  return f(g.apply(h||this,arguments));
}};
function S(f,h){return function(){
  return f.apply(h||this,N.reverse.call(arguments))}}
function id(x){return x};
function format(){
  args = N.slice.call(arguments);
  str = args.shift(); res = []+[];
  for(i = 0; i < str.length; i++){
    c = function(){return str[i]};
    if(B(Y,c) == 95){
      res += args.shift();
    } else if(S(B)(c,Y)() == 94){
      res += q = B(id,Q)(34);
      res += args.shift();
      res += q;
    } else if(Y(c()) == 39){
      i++;
      res += c() == ([][0]+[])[1] ? Q(10) : []+[];
    } else res += c();
  }
  return res;
}
console.log(format(Z="function Y(x){return x.charCodeAt()};'nfunction Q(x){return String.fromCharCode(x)};'nN=Array.prototype;'nfunction B(f,g,h){return function(){'n  return f(g.apply(h||this,arguments));'n}};'nfunction S(f,h){return function(){'n  return f.apply(h||this,N.reverse.call(arguments))}}'nfunction id(x){return x};'nfunction format(){'n  args = N.slice.call(arguments);'n  str = args.shift(); res = []+[];'n  for(i = 0; i < str.length; i++){'n    c = function(){return str[i]};'n    if(B(Y,c) == 95){'n      res += args.shift();'n    } else if(S(B)(c,Y)() == 94){'n      res += q = B(id,Q)(34);'n      res += args.shift();'n      res += q;'n    } else if(Y(c()) == 39){'n      i++;'n      res += c() == ([][0]+[])[1] ? Q(10) : []+[];'n    } else res += c();'n  }'n  return res;'n}'nconsole.log(format(Z=^,Z))",Z))


avocadsmacht mich fertig
Kritixi Lithos


5

Unterlast , 20 Bytes, Gebrochen!

~*)(a):*(*a:S(*S*~S)

Ich habe dies durch zufälliges Ordnen der Zeichen verschlüsselt, denn was könnte mehr verschlüsselt sein als zufällig?

Ein korrekt geschriebener Underload-Interpreter stürzt ab, wenn eine neue Zeile auf der obersten Ebene des Programms angezeigt wird. Wie bei Golfwettbewerben üblich, gibt es am Ende des Programms keine Zeilenumbrüche. Ich möchte diese Erinnerung nur hier platzieren, da es sehr einfach ist, beim Kopieren des Programms in einen Interpreter versehentlich eine hinzuzufügen.


Willkommen bei PPCG! :)
Martin Ender

2
Nun, ich habe PPCG eine Weile indirekt kommentiert, indem ich PPCG-Benutzer in anderen Foren (Reddit, IRC usw.) aufgespürt und sie angeschrien habe, bis sie veröffentlicht haben, was ich will.

Geknackt Danke, das war eine lustige Herausforderung. :)
Martin Ender

5

Netzhaut , 20 Bytes, Gebrochen

S`(\?)\1*

S`(\?)\1*

Das Programm (und die Ausgabe) enthalten genau zwei Zeilenvorschübe.

Sie können Retina hier online testen.

Ein kleiner Hinweis:

Bei der Entwicklung dieses Polizisten habe ich eine neue kürzeste Retina-Quine gefunden, die ich unserer Quine-Challenge hinzufügen werde, sobald diese Antwort entweder geknackt oder sicher ist.


Ich gehe davon aus, dass es einen Trockenlauf *gibt und \eine Konfigurationsoption, um einen zusätzlichen Zeilenvorschub zu verhindern.
mbomb007

5

CJam, 39 Bytes, Sicher

!""$)+023345679:AEORYZZ\_```bbceeffimmz

Lösung:

")A!0z`eZOmRZ$Yei`E"_`\32fm95b67b43f+:c

Verwendet eine Basiscodierung zur Verschleierung. Da die Zeichen jedoch alle in ASCII sind, hätte ich gedacht, dass jemand in der Lage sein könnte, herauszufinden, 32fm95b??b??f+:cwas ausreichen würde, um den Rest brutal zu erzwingen.


Ich wusste nicht, wie ich eine Permutation auswählen sollte, wenn ich antwortete. Sortieren ist eine gute Idee
Luis Mendo

4

Pyth, 38 Bytes, sicher

Nicht ganz golfen, aber funktioniert.

````::""@@@@++++22ggKKKKKKKKNNNNZZZZ

Unsortierte Version:

K"K++@KZ:`K@`NZNgK2"++@KZ:`K@`NZNgK2

1
Ich habe eine Quine, aber es fehlen zwei der @und eine 2... Es ist so nah!
Steven H.

Schnell ! Du hast nicht viel Zeit!
FliiFe

Ich denke es ist vorbei. Ich kann es nicht herausfinden ... :( Herzlichen Glückwunsch zu einer sicheren Lösung!
Steven H.

Da haben Sie die Lösung! Was hast du aus Neugier gefunden?
FliiFe

Ich hatte K"K2:K@Kg`Z`Z++NKN":K@Kg`Z`Z++NKN.
Steven H.

3

Vim, 22 Bytes, Gebrochen!

pit^[^[p00tqqqq^V"ltxltx"

Das ^[ist die wörtliche Escape - Taste, und ^Vist Ctrl-V, und wird daher als ein Byte gezählt und ist zusammen in dem verschlüsselten Code gehalten.




3

JavaScript, 147 Bytes, Gebrochen von ETHProductions

Ich werde sehr beeindruckt sein, wenn es jemand schafft, dies zu knacken ...

   """"''''((((()))))+++++++++.//99;;;;;;=========>>[[[[[]]]]]``````````````cccdddddddeeeeeeeeeeeffiiiiiiinnnnnnnoooooooorrrrrrrrsttttuuwwwwwwx{{}}

Beabsichtigte Lösung:

e=o=>{n=o;``[r=`constructor`][r](`return e=>{`+o+`}`)````};d=e+"";e`for(i in window)if(/ert/.exec(i))w=window[i];w('e='+d+';d=e+"";e'+d[9]+n+d[9])`

@ETHproductions Ja, es gibt kein lfür alertoder console.log, nein mfür confirmoder prompt... Ja, ich bin böse>: D Soll ich dem Cracker ein Kopfgeld gewähren?
jrich

Nun, es gibt diese Funktion, die zurückkehrt und nicht alarmiert (und ich bin mir ziemlich sicher, dass die OP-Version so funktioniert hat), und ich könnte Ihrer Lösung auf einfache Weise das Gleiche antun ... aber ist das legal?
ETHproductions

@ETHproductions, die es total ruinieren würden :( Ich werde nein sagen, aber wenn die
öffentliche

Ja, ich mag Return-Quines nicht, aber ich bin mir zu 99% sicher, dass es keinen anderen Weg gibt, diese bestimmte Lösung zu knacken. Ich werde versuchen, einen gültigen Crack für dich zu bekommen :)
ETHproductions

@ETHproductions Vielleicht habe ich es mir im Nachhinein zu schwer gemacht, aber viel Glück!
jrich

3

Haskell, 86 Bytes, geknackt von Nimi

putStr$"Study:ric====>>>>yummy:candy:circus:party:in:syrirrr!!!!!!$[;['=['[$]']='];]$"

Dies ist ein gültiger Haskell-Ausdruck, der Folgendes ausgibt:

Study:ric====>>>>yummy:candy:circus:party:in:syrirrr!!!!!!$[;['=['[$]']='];]$

Also, wenn Ric studiert, kann er zur leckeren Süßigkeiten-Zirkusparty gehen! Das heißt, wenn er herausfindet, wo Syrirrr ist.



3

V , 20 Bytes - Sicher!

"$ 033lpqxx | áäéééñññ

Beachten Sie den nachgestellten Zeilenumbruch.

Ich war mir nicht sicher, wie ich sie verschlüsseln sollte, also sortierte ich die Zeichen nur nach ASCII-Werten.

Im Gegensatz zu den meisten V-Antworten enthält diese keine nicht druckbaren Zeichen. Hier ist ein Hexdump:

0000000: 2224 3033 336c 7071 7878 7ce1 e4e9 e9e9  "$033lpqxx|.....
0000010: f1f1 f10a                                ....

Entschlüsselter Code:

éññ3äl0éé $ áx3 | "qpñx

Probieren Sie es online!

Seite nicht über diesen Link. In früheren Versionen von V wurde eine neue Zeile immer automatisch gedruckt, weshalb diese Version die nachfolgende neue Zeile enthält. Der Interpreter zu der Zeit, als ich dies schrieb, war ein gültiger Quine, obwohl Sie jetzt einfach die neue Zeile entfernen können, um sie gültig zu machen.

Erläuterung:

éñ                      " Insert a 'ñ' character
  ñ              ñ      " Put all of the following into register 'q' and run it when it's done recording
   3äl                  " Make 3 copies of the character under the cursor
      0                 " Move to the first column
       éé               " Insert an 'é' character
         $              " Move to the last column
          áx            " Append an 'x'
            3|          " Move to the third column
              "qp       " Paste register 'q' (all of the commands we just ran)
                  x     " Delete a character

3

Haskell, 99 Bytes, sicher

"super.quine?"=>#$$$%%%%%&&(())))**++++,,,,/;<<==>>STaabbdeffggghhhjlmmnoppqqrrsssttttuuuvvwwwwxxxx

Eine weitere Haskell-Quine, diesmal mit ungeraden 99 Bytes.

g% w = (g <$> w) ++ w ++ rein (g.last $ w); main = putStr $ pred% "h & x>) h =%? x * ,, x ,, qvsf) h / mbtu% x * qvuTus% qsfe & # "
Probieren Sie es auf Ideone. Die Leerzeichen in "g <$> w" müssen entfernt werden, da sonst die Zeichen <, $ und> verschwinden (höchstwahrscheinlich als HTML-Tag interpretiert). Die Kauderwelsch-Zeichenfolge ist eine Zeichenfolge des Programms, wobei jedes Zeichen seinem Nachfolger zugeordnet ist, einschließlich eines Finales "(das in die Zeichenfolge aufgenommen werden kann, ohne dass ein Escapezeichen erforderlich ist, weil es zugeordnet ist #). Die Hilfsfunktion %nimmt den String und ordnet jedes Zeichen mit pred( code"yielding) seinem Vorgänger zu. Anschließend werden der ursprüngliche String (yielding code"gibberish_code) und der letzte Buchstabe des dekodierten Strings ( yielding) angehängt code"gibberish_code". Um ein Zeichen cin eine Zeichenfolge umzuwandeln , reicht es normalerweise aus, es in eine Liste aufzunehmen, [c]da Zeichenfolgen in Haskell einfach Zeichenlisten sind, jedoch der Nachfolger von[ist \, die in der Nachfolge-codierter String, so dass anstelle entweichenden müssten pureverwendet , die willkürliche Arten in eine Monad Aufzüge (zu verwenden , die Monad wird aus dem Kontext gefolgert) wird.


Fast dort. Ich habe ein zusätzliches spaceund !weiß aber nicht, wie ich es loswerden soll. Gute Idee, habe eine +1.
nimi

@nimi Tahnks, ich bin gespannt, was dein Ansatz anders gemacht hat.
Laikoni

Ich hatte g%w=g w++w++pure(last.g$w);main=putStr$(pred<$>)%"...#". Also habe ich es im Grunde nicht geschafft, die <$>in die Funktion zu bewegen %. Jetzt, wo ich Ihre Lösung sehe, ist es offensichtlich.
nimi


1

Javascript ES6, 49 Bytes (geknackt)

{{$((((((('`fuck rent =+> turn off fin`')))))))}}

Ist es schlecht, wenn ich mich mehr darauf konzentriere, in der verschlüsselten Lösung zusammenhängende Wörter zu bilden?

In jedem Fall ist dies meine erste Herausforderung für Cops and Robbers.

Update : Siehe Kommentare für geknackten Code.



1

FurryScript, 199 Bytes, Sicher!

UT  TTEDU DT   T U T D   ES DGT GEL L   GL
-<<<<<<+++++++[[[[#BESTQUINEEVER!#BESTQUINEEVER!#BESTQUINEEVER!#BESTQUINEEVER!#BESTQUINEEVER!#]]]]+++++++>>>>>>-

X   XG WPW   SS  X  PW S US WWTLWP  XS  PE

Sollte ziemlich leicht zu knacken sein.

Entschlüsselter Code

BESTQUINE[ DUP LT +SW +GT +< BESTQUINE#> ]
EVER![ DUP EX+ SW EX- LT +SW +GT +< EVER!#> ]
<BESTQUINE[ DUP LT +SW +GT +< BESTQUINE#> ]> BESTQUINE#
<EVER![ DUP EX+ SW EX- LT +SW +GT +< EVER!#> ]> EVER!#

Nur das normale Quine, aber mit zwei Subroutinen und etwas mehr Code, um die Strings zu tauschen.


1

Vim, 17 Bytes

<CR>""&(())::::\npps

Das <CR>ist die Eingabetaste ( ^Moder ^J) im Eingang und eine hinzue Neuen - Zeile in der Ausgabe. Es ist nicht das implizite Ende der Datei-Newline (siehe :help 'eol'). Die 17 Bytes werden einem leeren Puffer hinzugefügt. (Zeilenumbrüche in einem Texteditor sind seltsam. Lassen Sie mich wissen, wenn dies nicht klar ist.)




0

Python 2, 105 Bytes, geknackt!

    ######%%%%''(((((((())))))))****--0011::::;;==@@@@@@@@@@[[[[]]]]aaaaaaggggggiiiiiiiinnpprrrrrrrrrtt~~

Der andere wurde geknackt, daher ist dieser schwieriger.

print "Um die Lösung zu finden, machen Sie sich an die Arbeit!"



@ Sp3000 Oh je, aber ich hatte tatsächlich eine originale Quine, die mehr als das tat. Wie auch immer, Sie haben es auf die faule Art gemacht: P
Erik der Outgolfer


0

QB64 , 89 Bytes

(_+cad:effecs:fact), =+cred:scarf:attaccd?, =+eff4c3d:cars:craccd?, (_+csc:f4c3d:fact), "

Einige hervorstechende Punkte:

  • Der Code funktioniert in QBasic nicht: Er verwendet QB64-spezifische Funktionen
  • Die Syntaxerweiterung ist deaktiviert
  • Keine Dollarzeichen und nur ein Anführungszeichen
  • "Poesie" wäre eine Strecke, aber es reimt sich


0

OIL , 77 Bytes, sicher

0
0
1
1
1
1
1
1
1
1
1
2
2
4
4
4
6
8
10
11
11
11
12
17
18
18
18
18
22
26
26
32

Viel Glück damit.

Lösung, "kommentiert" (entfernen Sie Kommentare vor dem Ausführen oder es funktioniert nicht):

0 # nop twice
0
1 # copy element from cell 1 to 1 (so do nothing again)
1
1
4 # print what's in cell 1 (a zero)
1
11 # print a newline
4 # and the same thing again; printing zero and a newline
1
11
1 # copy what's in cell 2 (a 1) into cell 2
2
2
1 # copy what's in cell 12 (two lines before; a 2) into cell 18
12
18
10 # check if the value in the cell of the following line (starting with 2; we'll jump back here)
18 # (this is cell 18)
1 # is equal-ish to the one in cell 1 (a zero)
32 # if yes, jump somewhere
22 # otherwise jump one cell ahead
1 # copy what's currently in cell 18 (first a 2) into cell 26
18
26
4 # print cell 26
26
8 # increment cell 18
18
11 # print a newline
6 # and jump back to cell 17
17

Zusammenfassend funktioniert es also, indem zuerst zwei Nullen gedruckt werden und dann jede Zeile beginnend mit der dritten mit Null verglichen wird. Wenn sie nicht Null ist, wird sie gedruckt, andernfalls wird sie beendet (da OIL Null aus einer leeren / nicht vorhandenen Zeile liest Zelle). Alle variablen Zeilen enthalten den Wert, den sie haben, wenn sie gedruckt werden. .


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.