Beschränkte Mini-Herausforderungen Cop's Thread


33

Räuberfaden

Deine Aufgabe als Cops ist es, drei Dinge auszuwählen:

  • Eine Programmiersprache

  • Eine OEIS-Sequenz

  • Ein Bytesatz

Sie müssen dann heimlich ein Programm in dieser Sprache schreiben, das die n-te Termsequenz nur mit den Bytes in der Menge berechnet. Sie werden die drei Informationen enthüllen, damit Räuber versuchen können, das Programm herauszufinden.

Die Antworten werden nach der Anzahl der Bytes im Bytesatz bewertet, wobei mehr Punkte gut sind. Geknackte Antworten haben eine automatische Punktzahl von 0. Wenn Ihre Antwort nach einer Woche nicht geknackt ist, können Sie das beabsichtigte Programm aufdecken und Ihre Antwort als "sicher" markieren.

Die Antworten müssen in der Lage sein, jeden Ausdruck in den B-Dateien der Sequenz zu berechnen, müssen jedoch keine weiteren Ausdrücke berechnen.

Sequenzen können für Cops und Räuber entweder 1 oder 0 indiziert werden.

Hier ist ein Python-Skript , das prüft, ob Ihr Code mit dem angegebenen Bytesatz übereinstimmt.


1
Niedrigere Punktzahl ist besser? Oder höher? Im Grunde genommen versuchen wir also, einen eingeschränkten Zeichensatz zu finden, der es jemand anderem erschwert, ein Programm in der ausgewählten Sprache zu erstellen, nachdem wir bereits eine Lösung ausgearbeitet haben?
BradC

1
Müssen wir alle Bytes in unserer Menge verwenden? Ich würde ja raten, aber es sollte wahrscheinlich in der Herausforderung angegeben werden.
Shaggy

1
@ Shaggy im Allgemeinen nein, Sie können andere für rote Heringe einschließen, aber Räuber können alles verwenden
Stephen

1
Können Räuber dasselbe Byte zweimal oder öfter verwenden?
Mr. Xcoder

2
@Azulflame Die B-Dateien sind Dateien, die mit jeder Sequenz verknüpft sind, auf die zugegriffen werden kann, indem die Adurch a ersetzt bund ein angefügt wird .txt. Zum Beispiel würde oeis.org/b4.txt auf die B-Dateien für diese Sequenz zugreifen.
Weizen-Assistent

Antworten:


11

Haskell , A209229 , ( geknackt )

11 Zeichen (einschließlich Zeilenvorschub):

s<=[ ]
how!

Gibt True / False als Indikatorfunktion für Potenzen von 2 aus:

1 => True
2 => True
3 => False
4 => True
5 => False
6 => False
7 => False
8 => True
9 => False
...

Eingaben sind positive ganze Zahlen.


Gibt 0 falsch?
H.PWiz

@ H.PWiz Mein Code funktioniert nicht für 0, dein Crack kann machen was du willst.
Xnor

Geknackt! Sehr klug ~
Lynn

@Lynn Schön gemacht!
Xnor


5

Haskell, A000045 ( geknackt )

Ich habe mich entschieden, ich denke ich mag tmehr als s.

Verwenden wir stattdessen diese 30 Bytes (einschließlich Zeilenvorschub):

abcdeFgh|jklmnopqrtTuvwxyz
=()

Bitte beachten Sie, dass die allgemeine Herausforderungsbeschreibung dies verlangt

Die Antworten müssen in der Lage sein, jeden Term in den B-Dateien der Sequenz zu berechnen [...].

In diesem Fall steigt die B-Datei auf die 2000. Zahl, was weit über das hinausgeht, was mit berechnet werden kann Int.





4

Haskell, A000045 ( Gebrochen )

Jeder mag Fibonacci-Zahlen, ich mag Haskell ...

Ich habe sorgfältig 30 Bytes für Sie ausgewählt: die Kleinbuchstaben außer f, iund t, um die Großbuchstaben bekommen Fund Tund das Pipe - Symbol |statt, und die drei Symbole =()und Newline. Hier sind sie wieder:

abcdeFgh|jklmnopqrsTuvwxyz
=()



4

Haskell, A009056 ( geknackt )

Ein weiteres einfaches, jetzt wieder mit genügend Buchstaben, um es wie gewöhnliches Haskell aussehen zu lassen, und vielleicht können Sie mich in Erstaunen versetzen, indem Sie eine Lösung finden, die sich von meiner völlig unterscheidet.

Die Sequenz ist Numbers> = 3 und der Zeichensatz besteht aus diesen 30 Bytes:

{[abcdefghijklmnopqr uvwxyz]}.

Der Riss hat einige schöne Techniken. Ich habe nur daran gedacht:

head . flip drop [ floor pi .. ]




3

Unär , A002275 , 1 Byte

Bytesatz:

0

Ich musste es zumindest versuchen: 3

(Ich denke nicht, dass es besonders schwierig sein wird, da jeder Befehl in der Sprache verfügbar ist.)


1
Warum nicht alle Bytes einschließen, um Ihre Punktzahl zu maximieren? Sie haben den niedrigstmöglichen Wert erzielt, wenn es keinen Unterschied macht, alle Bytes einzuschließen.
Weizen-Assistent

Ich dachte, wir würden eine niedrige Punktzahl erreichen (sorry, ich bin neu hier).
sonar235


@muddyfish Ist die Eingabe als Zeichen für Brainfuck zulässig?
sonar235

@ sonar235 Im Allgemeinen erlauben wir die Eingabe als Zeichen für Brainfuck. Obwohl die Werte hier 255 überschreiten, glaube ich nicht, dass eine Antwort, die sie verwendet, gültig sein kann.
Weizen-Assistent



3

Hexagony , A057077 , 77 Bytes

Periodische Abfolge 1, 1, -1, -1. Als Liste:

a(0) = 1
a(1) = 1
a(2) = -1
a(3) = -1
a(4) = 1
a(5) = 1
a(6) = -1
   ...

Zeichensatz (bearbeitet), der einen Zeilenumbruch und ein Leerzeichen enthält:

!% & (), 0123456789;? @ ABCDEFGHIJKLMOPQRSTUVWXYZ ^ abcdefghijklmnopqrstuvwxyz [] #. 

Probieren Sie es online!


Haben Sie den Zeichensatz geändert?
Poke

1
@Poke ist anscheinend umso besser, je höher die Byteanzahl ist. Deshalb habe ich eine Reihe von nicht nützlichen Befehlen hinzugefügt.
Adnan

3

Haskell, A000045 ( geknackt )

Es ist geknackt und ich werde keine neue Version starten, aber wenn Sie mehr spielen möchten: Es ist ohne möglich yund es ist möglich, effizient zu sein.


Ich entschuldige mich dafür, dass ich Sie in die falsche Richtung geführt habe g. Machen wir das auch ohne!

Hier sind die 29 verbleibenden Bytes (einschließlich Newline):

abcdeFh|jklmnopqrtTuvwxyz
=()

Denken Sie auch hier daran, dass dies Intnicht ausreicht, um die 2000. Fibonacci-Zahl zu berechnen, die benötigt wird, da sie in der B-Datei enthalten ist.



3

Haskell, A000045 ( geknackt )

Dies ist irgendwie (wie angekündigt) keine neue Version, aber völlig anders. (Recht?)

Ich hoffe immer noch, dass ich Sie dazu bringen kann, meine nette kleine Beobachtung wiederzuentdecken.

Dieses Mal werden Sie gebeten , die Fibonacci - Folge mit einem charset der Größe 17 zu implementieren, die (soweit ich weiß) enthält nur eine zwei nicht benötigten Zeichen:

eilnt=(,).[ ]_:0!

Beachten Sie, dass es keine Zeilenumbrüche gibt (Sie können jedoch eine Version anzeigen, die diese zur besseren Lesbarkeit enthält) und dass Sie in der Lage sein müssen, die 2000. Fibonacci-Zahl zu berechnen.



3

Cubix, A000027 (SAFE) 17 Punkte

!&')-/0;@Oiru.NSQ

Meine Lösung:

!O!;i)!/u&!!r-)0'u;;!@

schau es dir hier online an

Ich habe das ursprünglich ohne gemacht .NSQ aber ich dachte, ich könnte sie sicher hinzufügen.

Erläuterung:

Diese Sequenz ist nur "The Positive Integers". Cubix verfügt jedoch über drei Eingabebefehle i, die ein einzelnes Zeichen einlesen (pushing, -1wenn die Eingabe leer ist), Aden Rest der Eingabe als Zeichen -1einlesen (pushing a bis zum Ende des Stapels) und Idas nächste Nummer von der Eingabe (drücken, 0wenn keine Übereinstimmung vorliegt). Also habe ich natürlich nur angegeben, iwelche Ziffern als ihr ASCII-Wert eingelesen werden. Oh, oh. Zusätzlich -1ist der übliche Marker für das Ende der Eingabe in Verbindung mit?? , was ich beseitigt habe , und zwingt mich, den !Kontrollfluss zu verwenden (nächste Anweisung überspringen, wenn TOS nicht Null ist). Schließlich dachte ich, ich &müsste Ziffern zum Drucken mit verkettenO (was die Spitze des Stapels als Zahl ausgibt), aber ich merke jetzt, dass das auch nicht nötig war!

Ein anderer Teil der Herausforderung bestand ursprünglich darin, keinen .No-Op-Charakter zu haben, aber Sie können !stattdessen Paare von verwenden, wenn Sie vorsichtig sind:

    ! O
    ! ;
i ) ! / u & ! !
r - ) 0 ' u ; ;
    ! @
    . .

i) : Eingabe lesen, inkrementieren.

!/ : Wenn die Oberseite des Stapels Null ist (Ende der Eingabe), biegen Sie links ab

links: ;O.@ :: oben im Stapel platzieren, als Zahl ausgeben, anhalten.

Andernfalls:

u'0: Zeichencode 0nach oben schieben

)-r: Inkrementieren, Subtrahieren und Drehen

;; : Pop oben auf dem Stapel zweimal

u& : verketten Ziffern

!!: Netto-Null-Effekt, jetzt sind wir i)wieder dabei.


Cubix hat einige Noop-Charaktere, oder? Warum fügst du diese nicht hinzu, um deine Punktzahl zu erhöhen? Oder ist Teil der Herausforderung, dass es keine Noops gibt.
Weizen-Assistent

@ WheatWizard Ich habe beschlossen, barmherzig zu sein und hinzuzufügen, .aber es kann auch ohne getan werden.
Giuseppe

3

Seed , A005408 (Ungerade Zahlen) - Sicher

Hier ist eine etwas schwierigere. Sie können beliebige Zeichen verwenden, die in Seed gültig sind:

[0-9 ]

Sie sollten nicht in der Lage sein, diese in einer Woche zu erzwingen, es sei denn, Sie haben ein Monster von einem Computer. Viel Glück! Es ist knackbar.

Hinweis

Dies ist das Befunge-98-Programm, das in meiner Lösung verwendet wird: 9&2*1-.@(Das 9kann entfernt werden, aber meine Lösung hat zufällig

Lösung

8 47142938850356537668025719950342285215695875470457212766920093958965599014291682211474803930206233718243166021324700185443274842742744297183042397910454208210130742260519105651032450664856693714718759816232968955289663444878636053035645231246428917992493766505872029989544065894418166685284738859999912471659057565000392419689361271972485444731284404987238803115210428572945108908191097214978382112218242627719651728712577306652405452922782307249485947045215982784790396555726144526602778473387279897334709142853151393812930171163300904436548870603006549005515709074682843356844201220668045057407146751793470423217099467145255174198241606814578351260769359571053755888106818197239116973006365593563235361647743411341624822052103816968153274122434280200888824954875622811325064255818154979564925710534165572852442761249176778416688044630942040966271963723430245979221181930857841829694362184653939393940015797332978459794253176110314873994228261888801228999293570329618551223457182420746927212801550646743152754821640064626761542582557138452651970009253770914346130172884305622027370793496993281847017017643506435562229916984107083951938286577012273222191422054315198157936674247934699496471202544270325061352014830137178245082445717253260177560449757186762445707057028987371278573629077370632470496186218574320801798046510846708620502139560277546345198686675095078255875594169064796673074708822106659920187882062247609587560174781170641367430722951002242213604709887062481149928551745163110045572994991844223216663621203042075294195007458339984527333125093390189721042315604498435269143549420166732177200370228527273606218617171975362431824163269672003982537382982066136613799403024924018145511099557720492305303748099327810811511080314262364010281851651151072957475365629128068033597559560186625877942054704386175359499573139930378099420149452745731809033737756051947913924265484582800618244473333957173960222243311738522875022546610298627492222587971756897328087719407454153248557203886421828643453889090192355970705084245312184441674098515659253482621260617211786550204852895652236768886852209506535523414991099331857674826373947830587028494510697603296607361093480842935154672353288419699354739650168309017848485131553416956405911683526896232046773861961911767319373432460217755874481607587604361758089936007730253450733375831228127106295259261723611771334468553746160739548375950046831923765023329346333968732796413192682936767133122325481273354810124729664400173367781325488656859581438769940474229394692089519981810909719628263357284973442177568041416363386891516725592952892168077523560584005586276794967492051823290615767599202657060820223928678900774601616908031321346819422162123048834532926372862962159255934240435694566497798544870186550219886342379298214007368081326725550763589917206162393892085506551547475259270513853987294911388226039365971184089828739349642347312302559286882065147953715607221387657413593069535573044067517274676745306396611760657091792151803798859781616126637075577936361782593546481811651450365118155866449850474140044293772144065341051900055416408240857348697564252386403719942197789892382627153382011984996644288495699209129097948405810551134169739499539470610790009272281731894550593600643079188663110695127017324336488487580799309995227054576681630676222848231145106058050452439356753552872060820230589152143268436210090733908507724084889788244157692417246691477400856716677564609725979550100138132944851304473466485128295568194188600539248624248078558656162635444219199062786468487219220160009464328883337821175254405764395407405891483810757405446047244460754827113527540703326714751461178900155717130399854358953609995319006890674085682111514072508440632941090209366005504352890092326935445829213294943731517698438648298921337375443947066950275955144209037675013663600062205168551851984361951824731229113379464426979717688372371011461890139087487634586087688796134318950140718824105959727161482389914414206768064990410615468858520426399188835467970981786227122743162945627167772066100574532803061925537235491026486409948728571706557098859331941260622260924660292578136091523126589085799981416326395824628987154802653126685882440760385315869346960183809644486238810912663304360284449610976505715001267334297285036791711464142665122000857666018757370925847113798258537503747803972255591351740843663253694303946089997282812556281486820325652814785261116697261899511762129550421005941055852897451832731304151488058522478260009347144486599715629242208891126238083949281490804191584238425634093683587199278186505945727829025071885767559828670803412582690901456978557379916793144695491189633486065077294485660840922713748873840986104486221528464294334436081663106336911265802650605150347413103936140565054608396116572669757269475369570465915381045895991937087068526458273755454602799814909213983801968791431574508976448235055061998715636460946550584682626461010298101802277643570201189324102499951196290880892383380284543173390448406975616650185808619832614403133944687275834716343817926764699295672501869876060896683204343897481630037607159476461359111190545646447421653872016775582115425356868533678655969328210255235050133718364831289991244684695035034122861927276046255405376531096051541299607470934463981741370397268760811035606321455156217990078359217247117349544774085111287345436916077577032709684005131011429476229617901273007027774182864475737502587896225475248267937497254066190335088823904767397814233350286976811901982274477445433872253983823904938249655089770642137858608313524715533520654523880832056453080193644871440738737277389718589793074725139142291918837706550037934799585495183374639955887618135803388399608755212147742199481865453122900714456703147150994585431640652462593333773031385396586933380738103697887063571042512186708015948688088011290197524699274772775288900864690592106393483764109837848793374117655194139018455509931621247697015323332300969105814058088442693320033876473960017819576425062784644138417943454576404265382986995583045527928832

Wie haben Sie das gemacht?
Christopher

@ 2EZ4RTZ Schmerzhaft und mit Pythons Quelle als Referenz. Es kann aber wahrscheinlich viel Golf gespielt werden.
TehPers



2

cQuents , A000027 , Gebrochen


 !"#%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Korrekt! Sie erhalten alle ASCII! Warten Sie ... es gibt keine $... was$ wieder in cQuents? Oh ja, der Index ist eingebaut. Na, Pech gehabt: /

Vorgesehene Lösung:

#|A:A

Probieren Sie es online!



@Adnan yup das funktioniert, ich denke, ich hätte es nicht so sehr öffnen sollen wie ich: PI konnte sich keine anderen Möglichkeiten vorstellen, das zu tun, gute Arbeit. Die vorgesehene Lösung wurde hinzugefügt.
Stephen


2

Ruby , A000004 , 5 Bytes, Gebrochen

Einfach rumspielen und loslegen. Sollte für jeden, der mit Ruby vertraut ist, einfach sein. Es ist eine niedrige Punktzahl, aber was auch immer.

/np.$

Gebrochener, unbeabsichtigter Exploit

Gebrochen (beabsichtigte Antwort mit nFlag)



@Adnan Eh, ich werde es akzeptieren. Sollte das nFlag benötigt haben (aus diesem Grund ist es in der Byte-Sequenz und würde $.gleich 1 machen)
Value Ink



2

R, A000290 , ( rissig )

Bytesatz:

()%cfinotu

nein c, aber alles andere für function? Das ist schrecklich. Ich weiß, wie man das macht, außer dass man Eingaben liest ...
Giuseppe

@ Giuseppe wirbt, das ahätte ein c. Es tut uns leid.
JAD

1
Das bekomme ich dafür, dass ich diese Scheiße manuell mache ...
JAD

Keine Bange; Das ist hart genug!
Giuseppe



2

cQuents , A000217 , Gebrochen

Byteset:

$:=1;
\-

Beachten Sie, dass dies eine Funktion verwendet, für die ich die Dokumentation noch nicht gepusht habe. Wenn Sie bis dahin warten, werde ich diese Funktion heute Abend pushen. (Oder Sie können durch meinen Quellcode schlüpfen ... viel Spaß).Dokumentation gepusht. Wäre ein Byte weniger, wenn ein neuer Bugfix auf TIO wäre.

Beabsichtigte Lösung:

=1-1:--\1$ ;$

Probieren Sie es online!



2

JavaScript (ES6), 13 10 Bytes, A000045 , Gebrochen

Das sollte einfach sein.

Dies ist die Fibonacci-Sequenz: F (n) = F (n-1) + F (n-2) mit F (0) = 0 und F (1) = 1.

Bytesatz:

$()-:<=>?[]_~

Bearbeiten:

Dies kann sogar mit den folgenden 10 Bytes erfolgen:

$()-:=>?_~


1
Dies ist nicht [Code-Golf]: "Die Antworten werden nach der Anzahl der Bytes im Bytesatz mit einer guten Punktzahl bewertet." Mehr Bytes sind besser.
LarsW

@ LarsW auf der anderen Seite, mehr Bytes macht es auch einfacher zu knacken :)
JAD




2

R, A105311 , ( rissig )

'%(),:=acdeginpstx

Versuchen wir das mal ohne loder o.

Da dies geknackt wurde, ist die beabsichtigte Lösung:

cat(diag(diag((a=scan()))%x%diag((a==a):a)),sep=''). diagist eine interessante Funktion, die auf drei verschiedene Arten verwendet werden kann. Wenn es mit einer einzelnen Ganzzahl ( diag(n)) dargestellt wird, wird eine NxN-Matrix mit 1 auf der Diagonale erstellt. Wenn ein Vektor ( diag(1:n)) angezeigt wird, wird eine NxN-Matrix mit dem Vektor auf der Diagonale erstellt. Wenn eine Matrix ( diag(diag(n))) angezeigt wird, wird die Diagonale als Vektor zurückgegeben. %x%berechnete das Kronecker-Produkt aus zwei Matrizen, wobei jedes Element in Matrix 1 mit jedem Element in Matrix 2 separat multipliziert wird. Wenn Sie dies mit einer nLängenidentitätsmatrix und einer 1:nDiagonalmatrix tun , wird eine Längendiagonalmatrix n^2mit 1:nwiederholten nZeiten erstellt. diagextrahiert das noch einmal und catdruckt es aus.


1
Das wird noch mehr Spaß machen :)
Giuseppe

Beinhaltet dies einen Zeilenumbruch?
Giuseppe

@ Giuseppe Keine Zeilenumbrüche
JAD

1
@ Giuseppe und ich haben nur doppelt geprüft, dieses Byteset ist korrekt
JAD

[geknackt! ] ( codegolf.stackexchange.com/a/136457/67312 ) - Ich habe (falsch) verwendet, %o%bevor mir klar wurde, dass %x%es das gibt. Ich glaube , ich hätte tun können , 'i'=='i'für 1aber so oder so funktioniert, so.
Giuseppe
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.