Mini desafíos restringidos Hilo de policía


33

Hilo de ladrón

Su tarea como policías es seleccionar tres cosas:

  • Un lenguaje de programación

  • Una secuencia OEIS

  • Un conjunto de bytes

Luego, debe escribir en secreto un programa en ese lenguaje que calcule la secuencia del enésimo término utilizando solo los bytes del conjunto. Revelarás las tres piezas de información para que los ladrones puedan intentar descifrar el programa.

Las respuestas se puntuarán por el número de bytes en el conjunto de bytes, y la puntuación será buena. Las respuestas agrietadas tienen un puntaje automático de 0. Si su respuesta no está descifrada después de una semana, puede revelar el programa deseado y marcar su respuesta como "segura".

Las respuestas deben ser capaces de calcular cada término en los archivos b de la secuencia, pero no se requiere que calculen ningún término después.

Las secuencias pueden ser indexadas 1 o 0 para policías y ladrones.

Aquí hay un script de Python que comprueba si su código coincide con el conjunto de bytes dado.


1
¿Puntuación más baja es mejor? ¿O mas alto? Entonces, en esencia, estamos tratando de encontrar un conjunto de caracteres restringido que dificulte que alguien más haga un programa en el idioma elegido, después de que ya hayamos encontrado una solución.
BradC

1
¿Necesitamos usar todos los bytes en nuestro conjunto? Supongo que sí, pero probablemente debería especificarse en el desafío.
Shaggy

1
@Shaggy generalmente no, puedes incluir a otros para las pistas falsas, pero los ladrones pueden usarlo todo
Stephen

1
¿Pueden los ladrones usar el mismo byte dos veces o más?
Sr. Xcoder

2
@Azulflame Los archivos b son archivos que están asociados con cada secuencia a la que se puede acceder reemplazando Apor a by agregando a .txt. Por ejemplo, oeis.org/b4.txt accedería a los archivos b para esa secuencia.
Wheat Wizard

Respuestas:


11

Haskell , A209229 , ( agrietado )

11 caracteres (incluida la nueva línea):

s<=[ ]
how!

Salidas Verdadero / Falso como función de indicador para potencias de 2:

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

Las entradas son enteros positivos.


¿0 da falso?
H.PWiz

@ H.PWiz Mi código no funciona para 0, tu crack puede hacer lo que quieras por él.
xnor

¡Agrietado! Muy inteligente ~
Lynn

@ Lynn ¡Bien hecho!
xnor


5

Haskell, A000045 ( agrietado )

Decidí, creo que me gusta tmás que s.

Entonces usemos estos 30 bytes (incluyendo nueva línea) en su lugar:

abcdeFgh|jklmnopqrtTuvwxyz
=()

Tenga en cuenta que la descripción general del desafío exige que

Las respuestas deben ser capaces de calcular cada término en los archivos b de la secuencia [...].

En este caso, el archivo b sube al número 2000, que está mucho más allá de lo que se puede calcular usando Int.





4

Haskell, A000045 ( agrietado )

A todos les gustan los números de Fibonacci, a mí me gusta Haskell ...

He seleccionado cuidadosamente 30 bytes para usted: las letras minúsculas a excepción f, iy t, se obtiene las letras mayúsculas Fy Ty el símbolo de canalización |lugar, y los tres símbolos =(), y de nueva línea. Aquí están de nuevo:

abcdeFgh|jklmnopqrsTuvwxyz
=()



4

Haskell, A009056 ( agrietado )

Otra simple, ahora de nuevo con suficientes letras para que parezca Haskell ordinario y tal vez para que me sorprendas al encontrar una solución completamente diferente a la mía.

La secuencia es Números> = 3 y el juego de caracteres consta de estos 30 bytes:

{[abcdefghijklmnopqr uvwxyz]}.

El crack tiene algunas buenas técnicas. Estaba pensando en esto:

head . flip drop [ floor pi .. ]




3

Unario , A002275 , 1 Byte

Conjunto de bytes:

0

Al menos tuve que intentarlo: 3

(No creo que sea particularmente difícil de ver ya que todos los comandos en el idioma están disponibles)


1
¿Por qué no incluir todos los bytes para maximizar su puntaje? Ha obtenido la menor cantidad posible, cuando no habría diferencia para incluir todos los bytes.
Wheat Wizard

Pensé que íbamos por un puntaje bajo (lo siento, soy nuevo aquí).
sonar235


@muddyfish ¿Se permite la entrada como personaje para brainfuck?
sonar235

@ sonar235 En general, permitimos la entrada como carácter para brainfuck. Aunque dado que los valores aquí exceden 255, no creo que una respuesta que los use pueda ser válida.
Wheat Wizard



3

Hexagonía , A057077 , 77 bytes

Secuencia periódica 1, 1, -1, -1. Como una lista:

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

Conjunto de caracteres (editado), que incluye una nueva línea y un espacio:

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

Pruébalo en línea!


¿Alguna razón por la que modificó el conjunto de caracteres?
Poke

1
@Poke aparentemente cuanto mayor sea el recuento de bytes, mejor, así que acabo de agregar un montón de comandos no útiles.
Adnan

3

Haskell, A000045 ( agrietado )

Está agrietado, y no comenzaré una nueva versión, pero si quieres jugar más: es posible sin él y, y es posible ser eficiente.


Pido disculpas por guiarte en direcciones equivocadas dando un g. ¡Hagamos lo mismo sin!

Aquí están los 29 bytes restantes (incluida la nueva línea):

abcdeFh|jklmnopqrtTuvwxyz
=()

Nuevamente, recuerde que Intno será suficiente para calcular el número 2000 de Fibonacci que se necesita porque está en el archivo b.



3

Haskell, A000045 ( agrietado )

Esta es una especie de (como se anunció) no una nueva versión, sino completamente diferente. (¿Correcto?)

Todavía espero poder hacerte redescubrir mi pequeña observación agradable.

Esta vez se le pide que implemente la secuencia de Fibonacci usando un juego de caracteres de tamaño 17, que (que yo sepa) contiene solo uno de los dos caracteres innecesarios:

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

Tenga en cuenta que no hay una nueva línea (pero siéntase libre de mostrar una versión que las tenga para facilitar la lectura) y recuerde que debe poder calcular el número 2000 de Fibonacci.



3

Cubix, A000027 (SAFE) 17 puntos

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

Mi solución:

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

Míralo en línea aquí

Originalmente hice esto sin, .NSQpero pensé que podría agregarlos de manera segura.

Explicación:

Esta secuencia es solo "Los enteros positivos". Sin embargo, Cubix tiene tres comandos de entrada i, que se leen en un solo carácter (presionando -1si la entrada está vacía), Aque se lee en el resto de la entrada como caracteres (empujando -1a en la parte inferior de la pila), y I, que lee el siguiente número fuera de la entrada (presionando 0si no hay una coincidencia). Entonces, naturalmente, solo proporcioné ilas lecturas en dígitos como su valor ascii. UH oh. Además, -1es el marcador habitual para el final de la entrada, junto con ?lo que eliminé ?, lo que me obliga a usar !(omitir la siguiente instrucción si TOS no es cero) para el flujo de control. Finalmente, pensé que necesitaba &concatenar dígitos para imprimir conO (que genera la parte superior de la pila como un número), ¡pero ahora me doy cuenta de que eso tampoco era necesario!

Otra parte del desafío fue originalmente no tener .el carácter no operativo, pero puedes usar pares de !en su lugar si tienes cuidado:

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

i) : lectura de entrada, incremento.

!/ : si la parte superior de la pila es cero (final de la entrada), gire a la izquierda

izquierda:: ;O.@emerge la parte superior de la pila, salida como número, alto.

de otra manera:

u'0: empuje el código char de la 0parte superior de la pila

)-r: incrementar, restar y rotar

;; : aparece la parte superior de la pila dos veces

u& : concatenar dígitos

!!: efecto neto cero, ahora estamos de i)nuevo.


Cubix tiene algunos personajes noop ¿verdad? ¿Por qué no agrega esos para aumentar su puntaje? O es parte del desafío que no hay noops.
Wheat Wizard

@WheatWizard Decidí ser misericordioso y agregar, .pero se puede hacer sin él.
Giuseppe

3

Semilla , A005408 (números impares) - Seguro

Aquí hay uno un poco más desafiante. Puedes usar cualquier personaje válido en Seed:

[0-9 ]

No deberías ser capaz de hacer fuerza bruta en una semana a menos que tengas una computadora monstruosa. ¡Buena suerte! Es quebradizo.

Insinuación

Este es el programa Befunge-98 utilizado en mi solución: 9&2*1-.@( 9se puede eliminar, pero resulta que mi solución tiene

Solución

8 47142938850356537668025719950342285215695875470457212766920093958965599014291682211474803930206233718243166021324700185443274842742744297183042397910454208210130742260519105651032450664856693714718759816232968955289663444878636053035645231246428917992493766505872029989544065894418166685284738859999912471659057565000392419689361271972485444731284404987238803115210428572945108908191097214978382112218242627719651728712577306652405452922782307249485947045215982784790396555726144526602778473387279897334709142853151393812930171163300904436548870603006549005515709074682843356844201220668045057407146751793470423217099467145255174198241606814578351260769359571053755888106818197239116973006365593563235361647743411341624822052103816968153274122434280200888824954875622811325064255818154979564925710534165572852442761249176778416688044630942040966271963723430245979221181930857841829694362184653939393940015797332978459794253176110314873994228261888801228999293570329618551223457182420746927212801550646743152754821640064626761542582557138452651970009253770914346130172884305622027370793496993281847017017643506435562229916984107083951938286577012273222191422054315198157936674247934699496471202544270325061352014830137178245082445717253260177560449757186762445707057028987371278573629077370632470496186218574320801798046510846708620502139560277546345198686675095078255875594169064796673074708822106659920187882062247609587560174781170641367430722951002242213604709887062481149928551745163110045572994991844223216663621203042075294195007458339984527333125093390189721042315604498435269143549420166732177200370228527273606218617171975362431824163269672003982537382982066136613799403024924018145511099557720492305303748099327810811511080314262364010281851651151072957475365629128068033597559560186625877942054704386175359499573139930378099420149452745731809033737756051947913924265484582800618244473333957173960222243311738522875022546610298627492222587971756897328087719407454153248557203886421828643453889090192355970705084245312184441674098515659253482621260617211786550204852895652236768886852209506535523414991099331857674826373947830587028494510697603296607361093480842935154672353288419699354739650168309017848485131553416956405911683526896232046773861961911767319373432460217755874481607587604361758089936007730253450733375831228127106295259261723611771334468553746160739548375950046831923765023329346333968732796413192682936767133122325481273354810124729664400173367781325488656859581438769940474229394692089519981810909719628263357284973442177568041416363386891516725592952892168077523560584005586276794967492051823290615767599202657060820223928678900774601616908031321346819422162123048834532926372862962159255934240435694566497798544870186550219886342379298214007368081326725550763589917206162393892085506551547475259270513853987294911388226039365971184089828739349642347312302559286882065147953715607221387657413593069535573044067517274676745306396611760657091792151803798859781616126637075577936361782593546481811651450365118155866449850474140044293772144065341051900055416408240857348697564252386403719942197789892382627153382011984996644288495699209129097948405810551134169739499539470610790009272281731894550593600643079188663110695127017324336488487580799309995227054576681630676222848231145106058050452439356753552872060820230589152143268436210090733908507724084889788244157692417246691477400856716677564609725979550100138132944851304473466485128295568194188600539248624248078558656162635444219199062786468487219220160009464328883337821175254405764395407405891483810757405446047244460754827113527540703326714751461178900155717130399854358953609995319006890674085682111514072508440632941090209366005504352890092326935445829213294943731517698438648298921337375443947066950275955144209037675013663600062205168551851984361951824731229113379464426979717688372371011461890139087487634586087688796134318950140718824105959727161482389914414206768064990410615468858520426399188835467970981786227122743162945627167772066100574532803061925537235491026486409948728571706557098859331941260622260924660292578136091523126589085799981416326395824628987154802653126685882440760385315869346960183809644486238810912663304360284449610976505715001267334297285036791711464142665122000857666018757370925847113798258537503747803972255591351740843663253694303946089997282812556281486820325652814785261116697261899511762129550421005941055852897451832731304151488058522478260009347144486599715629242208891126238083949281490804191584238425634093683587199278186505945727829025071885767559828670803412582690901456978557379916793144695491189633486065077294485660840922713748873840986104486221528464294334436081663106336911265802650605150347413103936140565054608396116572669757269475369570465915381045895991937087068526458273755454602799814909213983801968791431574508976448235055061998715636460946550584682626461010298101802277643570201189324102499951196290880892383380284543173390448406975616650185808619832614403133944687275834716343817926764699295672501869876060896683204343897481630037607159476461359111190545646447421653872016775582115425356868533678655969328210255235050133718364831289991244684695035034122861927276046255405376531096051541299607470934463981741370397268760811035606321455156217990078359217247117349544774085111287345436916077577032709684005131011429476229617901273007027774182864475737502587896225475248267937497254066190335088823904767397814233350286976811901982274477445433872253983823904938249655089770642137858608313524715533520654523880832056453080193644871440738737277389718589793074725139142291918837706550037934799585495183374639955887618135803388399608755212147742199481865453122900714456703147150994585431640652462593333773031385396586933380738103697887063571042512186708015948688088011290197524699274772775288900864690592106393483764109837848793374117655194139018455509931621247697015323332300969105814058088442693320033876473960017819576425062784644138417943454576404265382986995583045527928832

¿Cómo generaste esto?
Christopher

@ 2EZ4RTZ Dolorosamente, y con la fuente de Python como referencia. Sin embargo, probablemente se pueda jugar mucho al golf.
TehPers



2

cQuents , A000027 , agrietado


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

¡Está bien! ¡Obtienes todo de ASCII! Espera ... no hay $... ¿qué hay de $nuevo en cQuents? Oh, sí, el índice incorporado. Bueno, mala suerte: /

Solución prevista:

#|A:A

Pruébalo en línea!



@Adnan sí, eso funciona, supongo que no debería haberlo abierto tanto como lo hice: PI no pudo pensar en ninguna otra forma de hacerlo, buen trabajo. Solución prevista añadida.
Stephen


2

Ruby , A000004 , 5 bytes, agrietado

Solo jugando para comenzar. Debería ser fácil para cualquiera que esté familiarizado con Ruby. Es un puntaje bajo, pero lo que sea.

/np.$

Exploit agrietado, no intencionado

Agrietado (respuesta prevista con nbandera)



@Adnan Eh, lo aceptaré. Debería haber requerido la nbandera (que es la razón por la que está en la secuencia de bytes, y sería $.igual a 1)
Value Ink



2

R, A000290 , ( agrietado )

Conjunto de bytes:

()%cfinotu

no c, pero todo lo demás para function? Eso es horrible Sé cómo hacer esto, excepto para leer en la entrada ...
Giuseppe

@Giuseppe woops, el adebería haber sido un c. lo siento.
JAD

1
Esto es lo que obtengo por hacer esta mierda manualmente ...
JAD

Sin preocupaciones; esto es lo suficientemente duro!
Giuseppe



2

cQuents , A000217 , agrietado

Byteset:

$:=1;
\-

Tenga en cuenta que esto utiliza una función para la que aún no he enviado la documentación, por lo que lo presionaré esta noche, si espera hasta entonces. (O puedes pasar por mi código fuente ... diviértete). Documentación empujada. Sería un byte menos si una corrección de error reciente estuviera en TIO.

Solución prevista:

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

¡Pruébelo en línea!



2

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

Esto debería ser fácil.

Esta es la secuencia de Fibonacci: F (n) = F (n-1) + F (n-2) con F (0) = 0 y F (1) = 1.

Conjunto de bytes:

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

Editar:

Incluso se puede hacer con los siguientes 10 bytes:

$()-:=>?_~


1
Esto no es [code-golf]: "Las respuestas se puntuarán por el número de bytes en el conjunto de bytes, y la puntuación será buena". Más bytes son mejores.
LarsW

@LarsW por otro lado, más bytes también hacen que sea más fácil de descifrar :)
JAD




2

R, A105311 , ( agrietado )

'%(),:=acdeginpstx

Probemos esto sin el lo o.

Dado que esto se ha resuelto, la solución prevista:

cat(diag(diag((a=scan()))%x%diag((a==a):a)),sep=''). diagEs una función interesante, que se puede utilizar de tres maneras diferentes. Cuando se presenta con un solo entero ( diag(n)), crea una matriz NxN con 1 en la diagonal. Cuando se presenta con un vector ( diag(1:n)), crea una matriz NxN con el vector en diagonal. Cuando se presenta con una matriz ( diag(diag(n))), devuelve la diagonal como un vector. %x%calculó el producto Kronecker de dos matrices, donde cada elemento en la matriz 1 se multiplica con cada elemento en la matriz 2 por separado. Al hacer esto con una nmatriz de identidad de longitud y una 1:nmatriz diagonal, se crea una n^2matriz diagonal de longitud con tiempos 1:nrepetidos n. diagextrae eso de nuevo e catimprime.


1
esto será aún más divertido :)
Giuseppe

¿Esto incluye una nueva línea?
Giuseppe

@Giuseppe No hay nuevas líneas
JAD

1
@Giuseppe y yo acabamos de verificar dos veces, este byteset es correcto
JAD

[¡agrietado! ] ( codegolf.stackexchange.com/a/136457/67312 ) - Utilicé (incorrectamente) %o%antes de darme cuenta de que %x%existía. Supongo que podría haber hecho 'i'=='i'para el 1pero de cualquier manera las obras, por lo que.
Giuseppe
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.