Ograniczone mini wyzwania Wątek gliniarza

33

Wątek rabusia

Twoim zadaniem jako gliniarzy jest wybranie trzech rzeczy:

  • Język programowania

  • Sekwencja OEIS

  • Zestaw bajtów

Następnie musisz potajemnie napisać program w tym języku, który oblicza n-tą sekwencję terminów, używając tylko bajtów w zestawie. Ujawnisz trzy informacje, aby złodzieje mogli spróbować znaleźć program.

Odpowiedzi zostaną ocenione według liczby bajtów w zestawie bajtów, przy czym więcej punktów będzie dobrych. Pęknięte odpowiedzi mają automatyczny wynik równy 0. Jeśli Twoja odpowiedź nie zostanie spakowana po tygodniu, możesz ujawnić zamierzony program i oznaczyć swoją odpowiedź jako „bezpieczną”.

Odpowiedzi muszą być zdolne do obliczenia każdego terminu w plikach b sekwencji, ale nie są wymagane do obliczenia żadnych terminów później.

Sekwencje mogą być indeksowane 1 lub 0 zarówno dla gliniarzy, jak i rabusiów.

Oto skrypt w języku Python, który sprawdza, czy kod pasuje do podanego zestawu bajtów.

Kreator pszenicy
źródło
1
Niższy wynik jest lepszy? Lub wyżej? Zasadniczo więc staramy się znaleźć ograniczony zestaw znaków, który utrudnia komuś stworzenie programu w wybranym języku, po tym, jak już opracowaliśmy rozwiązanie?
BradC
1
Czy musimy używać wszystkich bajtów w naszym zestawie? Myślę, że tak, ale prawdopodobnie powinno to zostać określone w wyzwaniu.
Kudłaty
1
@ Shaggy generalnie nie, możesz uwzględniać innych dla czerwonych śledzi, ale złodzieje mogą korzystać ze wszystkiego
Stephen
1
Czy złodzieje mogą użyć tego samego bajtu dwa razy lub więcej?
Pan Xcoder
2
@Azulflame Pliki b to pliki skojarzone z każdą sekwencją, do których można uzyskać dostęp, zastępując Aje a bi dodając a .txt. Na przykład oeis.org/b4.txt uzyskałby dostęp do plików b dla tej sekwencji.
Wheat Wizard

Odpowiedzi:

11

Haskell , A209229 , ( pęknięty )

11 znaków (w tym nowa linia):

s<=[ ]
how!

Zwraca True / False jako funkcję wskaźnika dla potęg 2:

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

Dane wejściowe są dodatnimi liczbami całkowitymi.

xnor
źródło
Czy 0 daje wartość False?
H.PWiz
@ H.PWiz Mój kod nie działa na 0, twój crack może zrobić, co chcesz.
xnor
Pęknięty! Bardzo sprytne ~
Lynn
@ Lynn Ładnie zrobione!
xnor 27.07.17
5

Python 2 , A000045 ( Cracked )

ml:= input(as,forge)

zawiera białe znaki i nowy wiersz
Wypróbuj online!
Zamierzone rozwiązanie

Pręt
źródło
1
+1 Jestem zaskoczony, to nie używa +w ogóle
Pan Xcoder
2
Gratulacje na 10k btw :)
Adnan
Pęknięty
Adnan
@ Mr.Xcoder Nie znasz Pythona tak dobrze, ale by plusdziałał?
JAD
@JarkoDubbeldam Nie, sumchciałbym
Pan Xcoder
5

Haskell, A000045 ( pęknięty )

Podjąłem decyzję, myślę, że lubię tbardziej niż s.

Użyjmy więc tych 30 bajtów (w tym nowego wiersza):

abcdeFgh|jklmnopqrtTuvwxyz
=()

Należy pamiętać, że wymaga tego ogólny opis wyzwania

Odpowiedzi muszą być w stanie obliczyć każdy termin w plikach b sekwencji [...].

W tym przypadku plik b idzie do 2000-tej liczby, co znacznie wykracza poza to, co można obliczyć za pomocą Int.

Christian Sievers
źródło
Pęknięty !
Lynn
Pęknięty
H.PWiz
4

Oktawa, A000290 , Pęknięty !

Sekwencja to liczby kwadratowe: 0, 1, 4, 9, 16, 25, 36, 49 ... (abyś nie musiał sprawdzać linku).

'()/@^_
Stewie Griffin
źródło
Pęknięty!
Conor O'Brien
To było rzeczywiście zamierzone rozwiązanie :)
Stewie Griffin
4

Haskell, A000045 ( pęknięty )

Wszyscy lubią liczby Fibonacciego, lubię Haskell ...

Starannie wybrałem dla ciebie 30 bajtów: oprócz małych liter f, ia zamiast tego totrzymujesz wielkie litery Fi Tsymbol potoku |oraz trzy symbole =()i znak nowej linii. Oto znowu:

abcdeFgh|jklmnopqrsTuvwxyz
=()
Christian Sievers
źródło
Pęknięty
xnor 27.07.17
4

Haskell, A034262 , 43 bajty, pęknięty

!"#%',.=?ABCDEFGHIJKLMNOPQRSTUVWXYZ[]_{|}~

Oblicza a(n) = n³ + n.

Laikoni
źródło
Nie mogę teraz pobrać pliku b. Czy zwrot jest Intwystarczająco dobry?
Christian Sievers
1
Pęknięty ?
Christian Sievers
@ChristianSievers Tak, to dokładnie moje rozwiązanie.
Laikoni
4

Haskell, A009056 ( pęknięty )

Kolejny prosty, teraz znowu z wystarczającą liczbą liter, aby wyglądał jak zwykły Haskell i być może zdziwisz mnie, znajdując rozwiązanie zupełnie inne niż moje.

Sekwencja to Liczby> = 3, a zestaw znaków składa się z tych 30 bajtów:

{[abcdefghijklmnopqr uvwxyz]}.

Crack ma kilka fajnych technik. Właśnie o tym myślałem:

head . flip drop [ floor pi .. ]

Christian Sievers
źródło
1
Pęknięty .
nimi
3

C (C99), A000005 , 25 Bytes #, pęknięty!

Są to bajty pełnego problemu, biorą n jako argument wiersza poleceń i wypisują odpowiedź na standardowe wyjście (spacja jest uwzględniona w bajtecount).

<=>,;!"()*%+acdfhimnoprt 
dj0wns
źródło
ok zastanawiałem się lol. jako argument wiersza poleceń?
Conor O'Brien
Tak,
wyjaśnię to
1
Pęknięty! było fajnie: D
Conor O'Brien
3

Unary , A002275 , 1 bajt

Zestaw bajtów:

0

Musiałem przynajmniej spróbować: 3

(Nie sądzę, aby było to szczególnie trudne, ponieważ każde polecenie w języku jest dostępne)

sonar235
źródło
1
Dlaczego nie dołączyć wszystkich bajtów, aby zmaksymalizować swój wynik? Zdobyłeś najniższą możliwą liczbę, gdy uwzględnienie wszystkich bajtów nie miałoby znaczenia.
Wheat Wizard
Myślałem, że idziemy na niski wynik (przepraszam, jestem tu nowy).
sonar235 27.07.17
1
Cracked
Blue
@muddyfish Czy wejście jest postacią dozwoloną dla pieprzenia mózgu?
sonar235
@sonar235 In general we do allow input as character for brainfuck. Although since values here exceed 255, I don't think an answer that uses them can be valid.
Wheat Wizard
3

JavaScript (ES6), 17 bytes, A000290 (Cracked)

Again, this is the simple square sequence a(n) = n2.

Byte set:

$()=>CI`abelotv{}
Arnauld
źródło
Cracked!
LarsW
3

Hexagony, A057077, 77 bytes

Periodic sequence 1, 1, -1, -1. As a list:

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

Character set (edited), which includes a newline and a space character:

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

Try it online!

Adnan
źródło
Any reason you modified the character set?
Poke
1
@Poke apparently the higher the byte count the better, so I just added a bunch of non-useful commands.
Adnan
3

Haskell, A000045 (cracked)

It's cracked, and I won't start a new version, but if you want to play more: it's possible without y, and it's possible to be efficient.


I apologize for leading you in wrong directions by giving a g. Let's do the same without!

Here are the 29 remaining bytes (including newline):

abcdeFh|jklmnopqrtTuvwxyz
=()

Again, remember that Int won't be enough to compute the 2000th Fibonacci number which is needed because it is in the b-file.

Christian Sievers
źródło
Cracked
nimi
3

Haskell, A000045 (cracked)

This is kindof (as announced) not a new version, but completely different. (Right?)

I still hope I can make you rediscover my nice little observation.

This time you are asked to implement the Fibonacci sequence using a charset of size 17, which (as far as I know) contains only one two unneeded chars:

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

Note that there is no newline (but feel free to show a version which has them for readability) and remember that you have to be able to compute the 2000th Fibonacci number.

Christian Sievers
źródło
Cracked.
nimi
3

Cubix, A000027 (SAFE) 17 points

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

My solution:

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

watch it online here

I originally did this without .NSQ but I figured I could add them safely.

Explanation:

This sequence is just "The Positive Integers". However, Cubix has three input commands, i, which reads in a single char (pushing -1 if input is empty), A, which reads in the rest of the input as chars (pushing a -1 to the bettom of the stack), and I, which reads the next number off the input (pushing 0 if there isn't a match). So naturally, I only provided i which reads in digits as their ascii value. uh-oh. Additionally, -1 is the usual marker for end of input, in conjunction with ? so I got rid of ?, forcing me to use ! (skip next instruction if TOS is not zero) for control flow. Finally, I thought I needed & to concatenate digits for printing with O (which outputs the top of stack as a number), but I realize now that that wasn't necessary either!

Another part of the challenge was originally to not have . the no-op character, but you can use pairs of ! instead if you're careful:

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

i) : read input, increment.

!/ : if top of stack is zero (end of input), turn left

left: ;O.@ : pop top of stack, output as number, halt.

otherwise:

u'0: push char code of 0 to top of stack

)-r: increment, subtract, and rotate

;; : pop top of stack twice

u& : concatenate digits

!! : net zero effect, now we are at i) again.

Giuseppe
źródło
Cubix has some noop characters right? Why don't you add those to increase your score? Or is part of the challenge that there are no noops.
Wheat Wizard
@WheatWizard I decided to be merciful and add . but it can be done without it.
Giuseppe
3

Seed, A005408 (Odd Numbers) - Safe

Here's a slightly more challenging one. You may use any characters valid in Seed:

[0-9 ]

You shouldn't be able to brute force this one in a week unless you have a monster of a computer. Good luck! It's crackable.

Hint

This is the Befunge-98 program used in my solution: 9&2*1-.@ (the 9 can be removed, but my solution just happens to have

Solution

8 47142938850356537668025719950342285215695875470457212766920093958965599014291682211474803930206233718243166021324700185443274842742744297183042397910454208210130742260519105651032450664856693714718759816232968955289663444878636053035645231246428917992493766505872029989544065894418166685284738859999912471659057565000392419689361271972485444731284404987238803115210428572945108908191097214978382112218242627719651728712577306652405452922782307249485947045215982784790396555726144526602778473387279897334709142853151393812930171163300904436548870603006549005515709074682843356844201220668045057407146751793470423217099467145255174198241606814578351260769359571053755888106818197239116973006365593563235361647743411341624822052103816968153274122434280200888824954875622811325064255818154979564925710534165572852442761249176778416688044630942040966271963723430245979221181930857841829694362184653939393940015797332978459794253176110314873994228261888801228999293570329618551223457182420746927212801550646743152754821640064626761542582557138452651970009253770914346130172884305622027370793496993281847017017643506435562229916984107083951938286577012273222191422054315198157936674247934699496471202544270325061352014830137178245082445717253260177560449757186762445707057028987371278573629077370632470496186218574320801798046510846708620502139560277546345198686675095078255875594169064796673074708822106659920187882062247609587560174781170641367430722951002242213604709887062481149928551745163110045572994991844223216663621203042075294195007458339984527333125093390189721042315604498435269143549420166732177200370228527273606218617171975362431824163269672003982537382982066136613799403024924018145511099557720492305303748099327810811511080314262364010281851651151072957475365629128068033597559560186625877942054704386175359499573139930378099420149452745731809033737756051947913924265484582800618244473333957173960222243311738522875022546610298627492222587971756897328087719407454153248557203886421828643453889090192355970705084245312184441674098515659253482621260617211786550204852895652236768886852209506535523414991099331857674826373947830587028494510697603296607361093480842935154672353288419699354739650168309017848485131553416956405911683526896232046773861961911767319373432460217755874481607587604361758089936007730253450733375831228127106295259261723611771334468553746160739548375950046831923765023329346333968732796413192682936767133122325481273354810124729664400173367781325488656859581438769940474229394692089519981810909719628263357284973442177568041416363386891516725592952892168077523560584005586276794967492051823290615767599202657060820223928678900774601616908031321346819422162123048834532926372862962159255934240435694566497798544870186550219886342379298214007368081326725550763589917206162393892085506551547475259270513853987294911388226039365971184089828739349642347312302559286882065147953715607221387657413593069535573044067517274676745306396611760657091792151803798859781616126637075577936361782593546481811651450365118155866449850474140044293772144065341051900055416408240857348697564252386403719942197789892382627153382011984996644288495699209129097948405810551134169739499539470610790009272281731894550593600643079188663110695127017324336488487580799309995227054576681630676222848231145106058050452439356753552872060820230589152143268436210090733908507724084889788244157692417246691477400856716677564609725979550100138132944851304473466485128295568194188600539248624248078558656162635444219199062786468487219220160009464328883337821175254405764395407405891483810757405446047244460754827113527540703326714751461178900155717130399854358953609995319006890674085682111514072508440632941090209366005504352890092326935445829213294943731517698438648298921337375443947066950275955144209037675013663600062205168551851984361951824731229113379464426979717688372371011461890139087487634586087688796134318950140718824105959727161482389914414206768064990410615468858520426399188835467970981786227122743162945627167772066100574532803061925537235491026486409948728571706557098859331941260622260924660292578136091523126589085799981416326395824628987154802653126685882440760385315869346960183809644486238810912663304360284449610976505715001267334297285036791711464142665122000857666018757370925847113798258537503747803972255591351740843663253694303946089997282812556281486820325652814785261116697261899511762129550421005941055852897451832731304151488058522478260009347144486599715629242208891126238083949281490804191584238425634093683587199278186505945727829025071885767559828670803412582690901456978557379916793144695491189633486065077294485660840922713748873840986104486221528464294334436081663106336911265802650605150347413103936140565054608396116572669757269475369570465915381045895991937087068526458273755454602799814909213983801968791431574508976448235055061998715636460946550584682626461010298101802277643570201189324102499951196290880892383380284543173390448406975616650185808619832614403133944687275834716343817926764699295672501869876060896683204343897481630037607159476461359111190545646447421653872016775582115425356868533678655969328210255235050133718364831289991244684695035034122861927276046255405376531096051541299607470934463981741370397268760811035606321455156217990078359217247117349544774085111287345436916077577032709684005131011429476229617901273007027774182864475737502587896225475248267937497254066190335088823904767397814233350286976811901982274477445433872253983823904938249655089770642137858608313524715533520654523880832056453080193644871440738737277389718589793074725139142291918837706550037934799585495183374639955887618135803388399608755212147742199481865453122900714456703147150994585431640652462593333773031385396586933380738103697887063571042512186708015948688088011290197524699274772775288900864690592106393483764109837848793374117655194139018455509931621247697015323332300969105814058088442693320033876473960017819576425062784644138417943454576404265382986995583045527928832
TehPers
źródło
How did you generate this?
Christopher
@2EZ4RTZ Painfully, and with Python's source as a reference. It can probably be golfed a lot though.
TehPers
2

R, A000142, (Cracked)

Byte set:

-()*,`=cfinotu

Intended solution:

f=function(n,c=n==n)'if'(n,f(n-(n==n),c*n),c*(n==n))

JAD
źródło
cracked!
Giuseppe
2

cQuents, A000027, Cracked


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

That's right! You get all of ASCII! Wait... there's no $... what's $ again in cQuents? Oh, yeah, the index builtin. Well, tough luck :/

Intended Solution:

#|A:A

Try it online!

Stephen
źródło
Cracked?
Adnan
@Adnan yup that works, I guess I shouldn't have opened it up as much as I did :P I couldn't think of any different ways to do it, good job. Added intended solution.
Stephen
2

Python 3, A007504 (Cracked)

This byteset, including newline:

bfuwo)nm1h[=(t+;0a
sig%pr, le:]

My code does not provide infinite output, but can compute the entire b-list.

Azulflame
źródło
1
Welcome to PPCG!
Zacharý
1
Cracked
Jonathan Allan
1
Scrap that I used a . :(
Jonathan Allan
1
I've fixed the crack.
Jonathan Allan
1
...and migrated to Python 3.
Jonathan Allan
2

R, A000290, (cracked)

Byte set:

()%cfinotu
JAD
źródło
no c, but everything else for function? That's horrifying. I know how to do this except for reading in input...
Giuseppe
@Giuseppe woops, the a shouldve been a c. sorry.
JAD
1
This is what I get for doing this shit manually...
JAD
No worries; this is tough enough!
Giuseppe
cracked
Giuseppe
2

cQuents, A000217, Cracked

Byteset:

$:=1;
\-

Note that this uses a feature that I haven't pushed the documentation for yet, so I'll push that tonight, if you wait until then. (Or you can slop through my source code... have fun). Documentation pushed. Would be a byte less if a recent bugfix was on TIO.

Intended solution:

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

Try It Online!

Stephen
źródło
Cracked!
notjagan
2

JavaScript (ES6), 13 10 bytes, A000045, Cracked

This should be easy.

This is the Fibonacci sequence: F(n) = F(n-1) + F(n-2) with F(0) = 0 and F(1) = 1.

Byte set:

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

Edit:

It can be even done with the following 10 bytes:

$()-:=>?_~
Ra8
źródło
Cracked!
Kritixi Lithos
1
This isn't [code-golf]: "Answers will be scored by the number of bytes in the byte set with score being good." More bytes are better.
LarsW
@LarsW on the other hand, more bytes also makes it easier to crack :)
JAD
2

Befunge, A000142, 29 Bytes, (Cracked)

Byte Set: @.$_ ^*:\v>-1&

If you can't tell, that Byte set includes a space.

This should be moderately easy to solve.

Edit: Forgot the "A" before the OEIS

Jordan
źródło
Cracked
KSmarts
2

R, A105311, (cracked)

'%(),:=acdeginpstx

Let's try this without the l or o.

Since this has been cracked, the intended solution:

cat(diag(diag((a=scan()))%x%diag((a==a):a)),sep=''). diag is an interesting function, that can be used in three different ways. When presented with a single integer (diag(n)), it creates a NxN matrix with 1 on the diagonal. When presented with a vector (diag(1:n)), it creates an NxN matrix with the vector on the diagonal. When presented with a matrix (diag(diag(n))), it returns the diagonal as a vector. %x% computed the Kronecker product of two matrices, where each element in matrix 1 is multiplied with each element in matrix 2 separately. Doing this with a length n identity matrix and a 1:n diagonal matrix, creates a length n^2 diagonal matrix with 1:n repeated n times. diag extracts that again, and cat prints.

JAD
źródło
1
this'll be even more fun :)
Giuseppe
does this include a newline?
Giuseppe
@Giuseppe No newlines
JAD
1
@Giuseppe and I just double double checked, this byteset is correct
JAD
[cracked! ](codegolf.stackexchange.com/a/136457/67312) -- I (incorrectly) used %o% before I realized that %x% existed. I guess I could have done 'i'=='i' for 1 but either way works, so.
Giuseppe