Este es un rompecabezas de policías y ladrones , el hilo de la policía se puede encontrar aquí.
Su tarea será encontrar un anagrama de los programas proporcionados en el hilo de la policía que realiza su inverso izquierdo.
Una vez que descifre una respuesta, publique la solución como respuesta a continuación y notifique al respondedor original.
Te calificarán en la cantidad de programas que seas el primero en descifrar.
permutations
source-layout
cops-and-robbers
Post Rock Garf Hunter
fuente
fuente
f=
al comienzo de su código ya que no es necesario y no forma parte de la función originalPython 2, 225 bytes, orlp
Supongo que tuve suerte después de adivinar divisores primos aleatorios todo el día ...
(El límite de punto de c4.8xlarge predeterminado es 4, pero pude subirlo a 10 el año pasado. Aunque tuve que ajustar la configuración de FAAS de 16 esclavos a 6 (+3 mpi, 1 maestro). 20m polyselect, 12h 50m tamizado, 2h 25m linalg, 30m sqrt. Costo total ~ $ 70. Al menos @orlp fue lo suficientemente agradable como para elegir un tamaño solucionable, ¡pero no lo volveré a hacer! Gracias a @IlmariKaronen por el último paso, y sí, estoy bromeando sobre el adivinando: P)
fuente
Python 2, 83 bytes, orlp
Original:
Grieta:
Pruébalo en línea!
Craqueo de RSA realizado por Wolfram Alpha . ;)
fuente
~p*~q
es más corto que-~p*-~q
, vaya.(p*q-2*(p+q))/4
pieza? :)p/2
yq/2
eran ambos primos impares, y un montón de prueba y error para encontrar algo que funcione utilizando los caracteres disponibles.p
yq
(los reales, el que está en el código sonp-1
yq-1
para fines de golf) tal que(p-1)/2
sea primordial para que tengamosφ(φ(pq)) = ((p-1)/2-1)((q-1)/2-1)
. Esto nos permite calcular el inverso modular de65537
modφ(pq)
(lo que necesitamos para RSA) usando la identidad de Euler, haciendo la respuesta mucho más corta porque no necesitamos implementar lógica inversa modular o codificar otra constante grande. Aparte de-~q*-~p
->~q*~p
, encontraste exactamente mi función :)φ(φ(pq)) = 2((p-1)/2-1)((q-1)/2-1)
para los primos segurosp
yq
, porqueφ(4) = 2
. Peroλ(φ(pq)) = lcm(2, (p-1)/2-1, (q-1)/2-1)
es a lo sumo((p-1)/2-1)((q-1)/2-1)/2
, y cualquier múltiplo de eso, menos uno, servirá para el exponente. :)Python 3, 80 bytes, Wolfram
¡Esto fue realmente difícil de descifrar! Yo uso la biblioteca de bisectos , que se incluye en la distribución Python 3. La
bisect
función toma una lista ordenada y un elemento, y devuelve el índice más a la derecha donde el elemento podría insertarse para mantener el orden. Simplemente le damos laq
lista de cuadrados a partir de1
y el elementoq
.fuente
(h+1)
a-~h
. Entonces me di cuenta de que ese no es el objetivo de este desafío: P**
tiene mayor prioridad que~
en Python. Supongo que es mejor que en JS, donde-~2**2
arroja un error de sintaxis ("la expresión unaria no sintetizada no puede aparecer en el lado izquierdo de '**'").**
operador, agregado en ES2017)Javascript, 21 bytes, Arnauld
Original
Grieta
Devuelve la raíz cúbica.
fuente
7, 9 bytes, ais523
¡Porque la fuerza bruta siempre gana, y 9! es solo 362880
fuente
Processing.js, 59 bytes, Kritixi Lithos
Original:
Grieta:
Bueno, eso fue bastante fácil. La parte más difícil fue averiguar dónde colocar las comas y los asteriscos adicionales. Afortunadamente, parece que Processing permite parámetros de funciones adicionales no utilizados, así como expresiones de coma de estilo C.
fuente
JavaScript (ES6), 63 bytes, SLuck49
Original:
Grieta:
El código base64 anterior se decodifica para:
donde el
...
representa un montón de basura aleatoria que es ignorada por el intérprete JS, ya que está en un comentario.Encontré esta solución por prueba y error. Al final, la única parte realmente difícil fueron las dos nuevas líneas al principio del código, necesarios para hacer la línea resto correctamente y para conseguir la
M
enMath
a base 64 a codificar en algo que estaba disponible en el juego de caracteres originales. Primero probé espacios, pero" M"
codifica en base64"ICBN"
y necesitaba el único disponibleB
para codificar".po"
más adelante en el código."0+M"
,"1*M"
,"1?M"
O cualquier otro prefijos no-op similares que podría pensar en no funcionó bien, pero los saltos de línea hicieron.Sospecho que esto puede no ser exactamente la solución prevista, pero lo que sea, funciona. :)
Manifestación:
fuente
Brain-Flak, 26 bytes, asistente de trigo
Original (agrega 13)
Grieta (resta 13)
fuente
J, 8 bytes, millas
Intercambio simple de
+:
for-:
(doble por la mitad).fuente
[:[+:]-:
.Javascript, 15 bytes, insertar nombre de usuario aquí
Original
Grieta
fuente
Python 2, 47 bytes, asistente de trigo
fuente
JavaScript (ES6), 46 bytes, SLuck49
Original (calcula ln (x + 1))
Grieta
Nunca habría resuelto esto si no me hubiera dado cuenta de que el inverso es un elemento
Math
incorporado .(lg=19979699+55686).toString(9+25)
es solo una forma complicada de regresar"expm1"
.fuente
expm1
y dije "Espera, ¿eso es una cosa?"J, 10 bytes, millas
Tengo que escribir algo aquí porque la respuesta es demasiado corta.
fuente
J, 29 bytes, Zgarb
Original
Grieta
Pruébalo en línea!
Otro equivalente de crack es
Explicación
fuente