Polyglot Anagrams Cops 'Thread


44

Diese Herausforderung hat zwei Themen. Das ist der Faden der Bullen. Der Räuberfaden befindet sich hier .

Ihre Herausforderung besteht darin, eine OEIS- Sequenz zu wählen und zwei vollständige Programme in zwei verschiedenen Sprachen zu schreiben , die das n-te Element in der Sequenz erzeugen, wenn Sie ein n über STDIN oder eine andere Form der Standardeingabe erhalten, wobei n eine beliebige positive Zahl ist. Ihre beiden Programme müssen jedoch Anagramme sein, dh, sie können aus den Buchstaben des anderen neu angeordnet werden.

Programme müssen die Dezimalzahl gefolgt von einem optionalen Leerzeichen an STDOUT ausgeben. Programme können nach STDERR ausgegeben werden, sie sollten jedoch ignoriert werden. In diesem Fall muss eindeutig angegeben werden, dass dies der Fall ist.

Auf Wunsch können Sie auch per Zeichencode ausgeben. Wenn Sie dies jedoch in Ihrer versteckten Lösung tun, müssen Sie dies im Hauptteil Ihrer Einreichung angeben.

Anschließend legen Sie die OEIS-Nummer, den Quellcode und den Namen einer Sprache vor, in der es sich befindet.

Räuber knacken Ihre Einreichung, wenn sie ein Anagramm der ursprünglichen Einreichung finden, das in einer anderen Sprache als der von Ihnen bereits vorgelegten abläuft. Um eine Antwort zu knacken, müssen sie nur eine Sprache und ein Programm finden, die die Sequenz produzieren und ein Anagramm des Originals sind, nicht unbedingt die Antwort, über die Sie nachgedacht haben.

Auf diese Weise erhalten Sie Anreize, es so schwierig wie möglich zu machen, eine Sprache, die die Aufgabe erfüllt, anhand ihrer Symbolliste zu finden.

Wertung

Dies ist daher ist das kürzeste ungeknackte Programm der Gewinner.

Sprachen

Sprachen werden als unterschiedlich betrachtet, wenn die beiden vorgeschlagenen Lösungen die Aufgabe nicht in beiden Sprachen erfüllen. Dies schließt verschiedene Versionen derselben Sprache ein , solange weder die Lösung des Polizisten noch die Lösung des Räubers die korrekte Ausgabe in der Sprache des anderen erzeugen.

Dh wenn es zwei Lösungen 1 und 2 gibt, die in Sprache A und B sind, muss Lösung 2 nicht die richtige Ausgabe in Sprache A produzieren und Lösung 1 muss nicht die richtige Ausgabe in Sprache B produzieren.

Sicherheit

Sobald Ihre Einreichung eine Woche lang nicht geknackt wurde, können Sie Ihre Lösung veröffentlichen und Ihren Beitrag für sicher erklären. Wenn Sie nach einer Woche keine Lösung veröffentlichen, ist Ihre Antwort möglicherweise immer noch geknackt.


4
Um durch zufällige OEIS Sequenzen für Ideen, gehen Sie zu oeis.org/webcam
mbomb007

Wie würde es mit Sprachen funktionieren, die Flags für den Interpreter verwenden möchten, wie z. B. Perl? Sind sie disqualifiziert? Werden Flags als Teil des Codes gezählt? Sind Flags "frei" (nicht im Code enthalten oder gar nicht verbreitet)?
Emigna

Kann das versteckte Programm mit einem Fehler beendet werden (nachdem die Ausgabe erstellt wurde)? Sollte das in der Antwort angegeben werden?
Luis Mendo


1
Es wäre schön, wenn es einen Stapelausschnitt gäbe, der ungerissene Antworten zeigt, die ältesten zuerst.
mbomb007

Antworten:


15

Python 2, 118 Bytes, A042545 Gebrochen

i=input();s=1/(801**.5-28);a=[0,1]
for p in range(i):a+=[a[-2]+a[-1]*int(s)];s=1/(s-int(s))
print a[i]#,,,.//000fhlmo|

Ich hatte keine Lust, eine triviale Sequenz zu implementieren, deshalb habe ich mich für meine PPCG-Benutzer-ID entschieden. Ich schrieb dies zuerst in der anderen Sprache, was Ihnen einen Hinweis darauf geben sollte, was diese Sprache ist, obwohl ich 100 Dollar wetten würde, dass dies in einer Golfsprache geknackt wird, bevor es in der beabsichtigten anderen Sprache geknackt wird.

Hinweis: Aufgrund von Gleitkomma-Genauigkeitsfehlern ist dies nur bis zu einer Eingabe von 14 genau. Die beabsichtigte Lösung ist dieselbe.

Geplante Lösung, JavaScript (ES7)

for(i=prompt(),s=1/(801**.5-28),a=[1,0];i--;s=1/(s-n))
  n=s|0,a.unshift(a[1]+a[0]*n);
alert(a[0])  //#+2:[]giiiiinnpt

Funktioniert ziemlich genau wie die Python-Lösung, obwohl die Sequenz zuerst am größten und nicht zuerst am kleinsten gespeichert wird, da JS die negative Indizierung nicht unterstützt.


2
Ich kann den Fall von A042545 (15) nicht zum Laufen bringen. OEIS sagt, dass es 53000053 ist, aber Ihr Programm sagt, dass es 27666361 ist (zumindest auf meinem Computer).
Boboquack

@boboquack Die Ausgabe für 16ist tatsächlich 53000053, aber danach scheint es keine passenden Begriffe zu geben. Ich frage mich, warum ...
ETHproductions

Vielleicht ein Fließkomma-Fehler, der immer schlimmer wird?
Boboquack


1
Verdammt, ich hatte recht! :( Das war so nah wie ich gekommen bin: gist.github.com/dom111/bd9be933cb8ccd0e303601bf73d525b6 Trotzdem danke für das Training, ich brauchte es |(), konnte es aber einfach nicht bekommen!
Dom Hastings

10

Brain-Flak, 24 Bytes, A000290 , sicher

Noch eine quadratische Lösung. Dieses Mal gibt es nichts als Klammern

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

Die beabsichtigte Lösung war Brain-Flueue , eine Version von Brain-Flak, die Warteschlangen anstelle von Stapeln verwendet. Das Programm war:

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

Die Sprachen werden als unterschiedlich betrachtet, da keines der beiden Programme angehalten wird, wenn es in der anderen Sprache ausgeführt wird.


Dies würde in Glypho funktionieren, wenn die Eingabe / Ausgabe mit Zeichencode erlaubt ist ...
jimmy23013

@ Jimmy23013 Was ist Glypho?
Weizen-Assistent

6
esolangs.org/wiki/Glypho ((([{}{}{]]}[)))((){))(}
jimmy23013

@ WheatWizard Wenn es geknackt ist, können Sie die Antwort bearbeiten, um dies zu zeigen?
mbomb007

@ mbomb007 Es ist nicht geknackt
Wheat Wizard


7

CJam , 7 Bytes, A005843 Gebrochen!

ri2*e#^

Dies ist eine 2*nGrundsequenz.

Erläuterung:

r          e# read input
 i         e# convert to integer
  2*       e# multiply it by 2
    e#^    e# this is a comment that is ignored by the interpreter

Probieren Sie es online!


Ursprüngliche Lösung, Karotte

#^i*2er

Karotte ist ein von mir kreierter Esolang. Ich habe vor langer Zeit aufgehört, es zu entwickeln. Der Grund, warum ich mich dafür entschieden habe, war die Hoffnung, dass es für andere Sprachen schwierig sein würde, die unnötigen Teile des Codes zu kommentieren.

Erläuterung:

#^            This pushes the input to the stack (anything before the ^ is the stack)
  i           Convert stack to integer
   *2         Multiply it by 2
     er       These are ignored because they are not Carrot commands
              Implicit output

Probieren Sie es online!


1
ri#e^*2würde in Jelly funktionieren, wenn *Multiplikation statt Potenzierung wäre. So nah dran ...
ETHproductions


Ich hatte alles außer der rin Pyth. Aufregend, den Originalcode für diesen zu sehen.
Emigna

1
@Emigna Ich habe den Originalcode hinzugefügt
Kritixi Lithos


5

Brain-Flak, 44 Byte, A000290 Gebrochen

<({({})({}[()])}{}))()()()turpentine/"*"*4splint>

Probieren Sie es online!


Ursprüngliche Lösung, Python 2

print(input()**(len(set("{}{}{}[]()<>"))/4))


Jetzt bin ich wirklich neugierig. Was war Ihre ursprünglich beabsichtigte Lösung? Ich kann sagen, dass es Python ist, weil ich len set inputund sehe print(und weil ich weiß, dass Sie Python mögen), aber ich kann nicht herausfinden, wie das eine Zahl
quadriert

@DrMcMoylex hinzugefügt
Weizen-Assistent


5

Python 2, 25 Bytes, A000583 , geknackt

Y=input("");print`Y**4`,X

Dieses Programm wird nach dem Drucken der Ausgabe mit einem Fehler beendet.


Mein versteckter Code (wesentlich anders als die geknackte Lösung!):

Eigentlich 25 Bytes

4,n`*`Y")ii(*nppruttY;="X

Probieren Sie es online!

Erläuterung:

4,n`*`Y")ii(*nppruttY;="X
4,n                        input, repeat 4 times
   `*`Y                    do * until the stack stops changing (fixed-point combinator)
       ")ii(*nppruttY;="X  push this string and immediately pop and discard it


5

Python, 118 Byte, A042545 , Sicher

i=int(input());s=pow(801.0,0.5);a=[0|0,1]
for Moshprtflmah in range(i):s=1./(s%1);a+=[a[-2]+a[-1]*int(s)];
print(a[i])

Diesmal funktioniert es sowohl in 2 als auch in 3. Und es gibt keine Kommentare! Was wirst du machen?

Hinweis: Wie bei der alten Lösung geht die Genauigkeit nach den ersten 15 Termen aufgrund von Gleitkomma-Rechenfehlern verloren.

Geplante Lösung, JavaScript (ES6)

giiiiinnnnprt:
i=prompt([n=+2]);s=Math.pow(801,.5);for(a=[1,0];i--;a.unshift(a[1]+a[0]*(s|0)))s=1/(s%1)
alert(a[0])   

Obwohl ich mehrere alte Versionen behielt, gelang es mir, diese Kopie zu verlieren , aber glücklicherweise war es nicht allzu schwierig, sie aus den anderen zusammenzusetzen. Ich sehe jetzt, dass ich prtin beiden Programmen ein Fremdwort hatte, das hätte ausgespielt werden können. Naja.


Ich dachte, ich würde Sie daran erinnern, dass Sie dies als sicher markieren können, wenn Sie möchten.
Weizen-Assistent

@ WheatWizard Danke, ich habe meine vorgesehene Lösung hinzugefügt.
ETHproductions

5

Python 2, 124 Byte, A144945 , [Sicher]

Wenn Sie dies geknackt hätten, hätten Sie 500 Wiederholungsprämien erhalten! Zu spät!

Anzahl der Möglichkeiten, 2 Königinnen auf ein n X n Schachbrett zu legen, damit sie sich gegenseitig angreifen.

Ich hoffe es ist nicht zu einfach. Ich habe meinen Code so angeordnet, dass das Leerzeichen deutlich sichtbar ist. Das sind nur Leerzeichen und Zeilenumbrüche.

Hinweis: Die Ausgabe der beabsichtigten Lösung erfolgt über einen Zeichencode

n=input();print((3+2)*n*n+~0*6*n+1)*n/3;            +6;



























+7+7+7+7+7+7+7+7+7;+++++++++++++++9+9*9*9

Probieren Sie es online aus

Vorgesehene Lösung, Headsecks :

r2=ni***p**
(


p((0 ;3+++3;+;/


)





i+++nn
 +)7
n

n+++ 


17+~
 +)7;97++++7


69+9n+ ++7+n 69
 +7+ ++7


**7+++tut

Dies entspricht dem folgenden BF-Programm:

>>,[->>>+>>>+>>>+++++<<<<<<<<<]>>>->>>>>>-<<<[[>+<-]>[>>[<<<+>>+>-]<[>+<-]<-]<<<<]>>+++>[-<-[<+<<]<[+[->+<]<+<<]>>>>>]<<<.,.

4

Fuzzy Octo Guacamole, 26 Byte, A070627 [Sicher]

49++*5^pm#]%:"?:.=:#,|"1:@

Testfälle:

1 -> 1
3 -> 23
5 -> 1

Lösung:

^::::|*?1=#@]","%.#49++5pm

Arbeitet in Magistack.


Hallo! Ich möchte Sie nur daran erinnern, dass diese Antwort als sicher eingestuft werden kann. Kein Grund zur Eile, aber niemand hat es in einer Woche geknackt. Gute Arbeit, ich bin gespannt auf eine Lösung
Weizen-Assistent

Cool, ich mache es und das andere mal, wenn ich nach Hause komme.
17.

3

Pyth, 75 Bytes, A004526 Gebrochen, Milch

Mehr ein spielerischer Test als alles andere, aber:

/Q/////////////////****22222 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2;;;;;

Probieren Sie es online!

Milchlösung (konvex):

2/Q2 2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2*2*2*; 2*;                 2; 2; 2;

Probieren Sie es online aus

Vorgesehene Lösung (///):

/*///;2/;// ///22/Q//2;///;//;***2222222222222222222222                    

Probieren Sie es online aus

Übernimmt die Eingabe in Form von 2en vor dem letzten Semikolon und gibt die korrekte Anzahl von Qs aus.

Die Sequenz ist 0-indiziert (dh 0 ist 0, 1 ist 0, 2 ist 1, ...)

Fand leichte syntaktische Fehler in den ///, so bearbeitete alle Lösungen.



3

MATL, 7 Bytes, A000217 , geknackt

:sp{1}x

Die Sequenz ist n(n+1)/2(Dreieckszahlen), am Eingang beginnend , n=1wie durch die Herausforderung angegeben: 1, 3, 6, 10, ... (Ausgang für die Eingabe 0ist nicht das gleiche in den beiden Programmen sein garantiert).

Das Programm in der anderen Sprache wird mit einem Fehler beendet (nachdem die korrekte Ausgabe in STDOUT erstellt wurde).

Probieren Sie es online!

:            % Push [1 2 ... n], where n is implicit input
 s           % Sum of that array. Gives the desired result
   p         % Product of that. Gives the same number
    {1}      % Push a cell array containing number 1
       x     % Delete it


@ StevenH. Gut gemacht! Meine ursprüngliche Lösung warx:ps{}1
Luis Mendo


3

Python 3, 27 Bytes, A000012 , Gebrochen

Diesmal keine Eingabe!

if 1:
    if 1:
        print( '1' )

Die Einrückungen sind Tabulatoren, aber nicht zum Speichern von Bytes - sie werden für Leerzeichen benötigt.

Ich denke nicht, dass es einen TIO-Link oder eine Erklärung braucht!

(Wahrscheinlich wird es nicht lange dauern, in irgendeiner Weise zu knacken)

Beabsichtigte Antwort (Leerzeichen):

-Start-


    if1:if1:print('1')
-End-

(Start und Ende nicht Teil des Programms)

Entschuldigung, ich habe vergessen hinzuzufügen, dass es auf STDERR gedruckt wird:

Probieren Sie es online!



Ich habe das Gefühl, dass dies Whitespace sein soll, aber das würde einen Fehler für STDERR ausgeben, da die erforderlichen Zeilenvorschübe fehlen, um mit [LF] [LF] [LF] zu enden.
Martin Ender

1
@milch Nicht du schon wieder! : D
Boboquack

1
@boboquack Es funktioniert, aber es wird in STDERR gedruckt (was Sie durch Aktivieren des Debug-Modus in TIO sehen können), und die Abfrage besagt, dass Antworten angeben müssen, ob die verborgene Sprache in STDERR schreibt.
Martin Ender


3

Fuzzy Octo Guacamole , 11 Bytes, A001844 [Sicher!]

hha02^d+**+

Ein Riss, der funktioniert, ist dh*h++^2*0ain Pyth. Es ist jedoch nicht das richtige Ausgabeformat.

Mein Code ist immer noch da draußen! (und es ist nicht in Pyth)

Testfälle:

0 -> 1
1 -> 5

Lösung:

^++d0ah*2*h

In Jolf.


1
Ich schwöre, das sieht so aus, als wäre es für Jolf gemacht worden, aber ich kann es einfach nicht herausfinden d...
ETHproductions

Cracked (hoffe ich ...)
ETHproductions

@ETHproductions ah, nett. Nicht sicher, ob es zählt? Siehe Bearbeiten.
10.

Mein Code gibt eine neue Zeile aus, aber kein Leerzeichen. Gleiches gilt für den gültigen Code.
10.

@EasterlyIrk Trotz allem, was ich gesagt habe, halte ich die Antwort nicht für einen Riss. Ich habe alles, was ich gesagt habe, immer noch wahr, aber ich halte führende Whitespace-gültige Ausgaben nicht für gültig und werde die Frage entsprechend anpassen.
Weizen-Zauberer


2

JavaScript ES6, 38 Byte, A000290 , Gebrochen

J=>eval(Array(J).fill(J).join`+`)|2-2;

Dieser quadratische Zug ist ziemlich geschickt, fährt aber nicht überall schnell. (Holen Sie es? Square Train? Wie in, Räder? Nein? Okay, gut. Kritiker .)


Beabsichtigte Antwort: Reticular ( Online ausprobieren ! ),

in2Jo;=>eval(Array(J).fill(J).j`+`)|-2
in      take input, convert to number
  2J    raise to the second power
    o;  output and terminate; ignores following chars

2
Ihr Code versucht , mich davon zu überzeugen , dass die andere Sprache ist J: P
ETHproductions



2

2sable , 13 bytes, A002378 , Gebrochen!

In der Hoffnung, dass ich nichts verpasst habe. Berechnet a (n) = n × (n + 1) :

>*?"!&)<=@\\}

Meine Version:

?"\>@&*})<\=!

Oder die entfaltete Version:

  ? " \
 > @ & *
} ) < \ =
 ! . . .
  . . .

Beachten Sie, dass das >in der oberen linken Ecke nicht verwendet wird (mit Ausnahme des 2sable-Programms). Ich habe das getan, um die Räuber zu verwirren (aber das hat offensichtlich nicht funktioniert, haha).

Probieren Sie es online!



@MartinEnder Gute Arbeit! Ich werde meine Antwort mit der ursprünglichen Einreichung aktualisieren :).
Adnan


2

Befunge 93 , 14 Bytes, A121377 , Von Milch geknackt !

&52* %68*+ .@Q

Unterhaltsame Tatsache: Die beabsichtigte Lösung für dieses Problem ist das erste Mal, dass ich diese Sprache verwendet habe.

Meine Lösung in Pyth. & @ drucke einen Fehler, aber das geht an STDERR, der laut OP ignoriert wird.

+%Q*5 2*6 8.&@


2

Python 2, 35 Byte, A048735 , Sicher

print(lambda u:u&u<<1)(input())>>1

Die ursprüngliche Lösung war in meiner eigenen Programmiersprache Wise .

:<<>&>print(lambda uuu1)(input())1

Die meisten Charaktere sind irrelevante No-Ops. Die wichtigen Charaktere sind die ersten sechs. :Erstellt zwei Kopien des ersten Elements auf dem Stapel. <<>Das Bit wird zweimal nach links und einmal nach rechts verschoben, was einer Bitverschiebung nach links entspricht. &Nimmt das bitweise und des oberen und zweiten Elements (das Original und die bitverschobene Kopie). Das letzte >Bit verschiebt sich einmal nach rechts.


2

05AB1E, 5 Byte, A000012 , Sicher

$;$1?

Folge von Einsen. Probieren Sie es online aus

Beabsichtigte Lösung: Arcyou

1;$$?

Probieren Sie es online aus . Ich konnte keine Dokumentation für diese Sprache finden, daher habe ich keine Erklärung, wie es genau funktioniert.


Dummes Semikolon ... Ich könnte fast Retina gebrauchen, aber ich kann nicht beides haben 1und ;.
mbomb007

1
Dies wurde nicht geknackt
Weizen-Assistent

Es sieht so aus, als ob diese Antwort jetzt als sicher markiert werden kann. Da ich ziemlich viel Zeit damit verbracht habe, diesen zu knacken, bin ich sehr gespannt auf die beabsichtigte Antwort.
Weizen-Assistent

Sollte diese Antwort nicht jetzt als "akzeptiert" markiert werden?
mbomb007

1

Python 2, 70 Bytes, A000217 Gebrochen!

Ich habe das Gefühl, dass dies in der Sprache, die ich für die andere Version verwendet habe, nicht geknackt wird, wir werden sehen :)

o=input()
v=0
i=1
while o:
 v+=i
 i+=1
print v


#|  d00->1@@@++-^,,[

Ich bemerkte später, dass ich den Code falsch verschleiert hatte (dies ändert nichts an der Gültigkeit der geposteten Antwort). Hier ist der Code, mit dem ich in Haystack angefangen habe:

v
0
v
0
i
1
-
>      d0[v
^-1@+@d+1@?,,o|


1

05AB1E , 9 Byte, A000042 Gebrochen!

1×,1*-^$)

Dies ist die unäre Darstellung natürlicher Zahlen (OEIS). Wenn also die Eingabe 3zum Beispiel wäre, dann wäre die Ausgabe 111.

Erläuterung:

                    # implicit input
1                   # pushes 1 to the stack   
 ×                  # pushes "1" × (the input)
  ,                 # outputs the stack
   1*-^$)           # irrelevant

Probieren Sie es online!


Ursprüngliche Lösung, Karotte

1^*$-1×^)

Erläuterung

1^             Push "1" to the stack
  *            Multiply the string by
   $-1         ...the input (as an integer) minus 1 times
      ×,)      Ignored by the interpreter

Der *multipliziert den String mit der (n+1)Zeit, so dass sich a^*3ergibt aaaaund nicht aaa. Deshalb habe ich 1von der Eingabe abgezogen .

Erst jetzt merke ich, dass das )in beiden Sprachen irrelevant war: D

Probieren Sie es online!



Was war die ursprüngliche verborgene Sprache?
Weizen-Zauberer

@ WheatWizard Whoops, danke, dass du das gefunden hast. Ich habe die Sprache jetzt hinzugefügt
Kritixi Lithos

1

J, 2 Bytes, A000290 , Gebrochen

*~

Nun, könnte genauso gut anfangen für diese zwei Bytes. Ausbeuten n × n oder n 2 .

beabsichtigte Lösung, Jolf, 2 Bytes

*~

Gut. Ja. Dies ist meine eigene Sprache, und ich denke, sie funktioniert, weil sie ~nach einem erweiterten Charakter sucht, aber keinen findet. Deshalb ignoriert sie ihn einfach. ¯ \ _ (ツ) _ / ¯ Ups.



@StevenH. gute Arbeit! Ich habe mit vorgesehener Lösung geschnitten.
Conor O'Brien

@ ConorO'Brien Ihre geplante Lösung war keine gültige Lösung. Damit Sprachen als verschieden betrachtet werden, können weder das Original noch die Lösung in beiden Sprachen mehrsprachig sein
Wheat Wizard

@ WheatWizard Oh. Das ist peinlich.
Conor O'Brien



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.