Este es el hilo conductor del principal desafío Descifrar el código fuente . Si cree que ha logrado descifrar una de las respuestas de la policía, debe publicar su solución como la respuesta a este hilo.
Como recordatorio, tiene un intento de descifrar cada envío. Su intento de descifrado será una versión descifrada del código fuente. Si su conjetura coincide con la descripción (mismos caracteres, salida y, por supuesto, idioma), y usted es la primera conjetura correcta, entonces gana un punto. Es importante tener en cuenta que su programa no tiene que coincidir exactamente con el original, simplemente use los mismos caracteres y tenga la misma funcionalidad. Esto significa que podría haber más de una respuesta correcta.
El ladrón con más puntos (grietas exitosas) gana.
Tabla de clasificación
Demasiados solucionamientos
- Martin Büttner: (Python 3, 16, matsjoyce) , (CJam, 15, Ypnypn) , (Mathematica, 29, Fox Wilson) , (JavaScript, 15, Caridorc) , (CJam, 52, user23013) , (Pyth, 11, isaacg) , (PHP, 22, kenorb) , (PHP, 13, kenorb) , (Ruby, 17, Doorknob) , (PHP, 49, bwoebi) , (Mathematica, 35, Tally) , (GolfScript, 13, Peter Taylor ) , (JavaScript, 25, Cris) , (JavaScript, 29, Cris) , (JavaScript, 26, Cris) , (Bash, 33, Debasis) , (JavaScript, 10, Cris), (Lua, 28, ChipperNickel) , (Mathematica, 18, Arcinde) , (JavaScript, 30, Qwertiy) , (CJam, 13, usuario23013) , (JavaScript, 41, Ismael Miguel) , (Ruby, 38, Pomo de la puerta) , (Marbelous, 36, es1024) , (PHP, 33, Ismael Miguel) , (JavaScript, 29, Joe) , (JavaScript, 28, Shawn Holzworth) , (Ruby, 35, histocrat) , (CJam, 19, Ypnypn) , (Ruby, 17, Stephen Touset) , (JavaScript, 36, MegaTom) , (JavaScript, 24, fogcityben) , (Python 3, 21, Reticality) ,(JavaScript, 10, Jamie Barker) , (JavaScript, 15, Jamie Barker)
20 resuelve
- Feersum: (Python 3, 44, Sp3000) , (C, 70, es1024) , (MATLAB, 41, COTO) , (Brainfuck, 118, Sp3000) , (C, 30, Ethiraric) , (C, 28, Mig) , (Python 3, 46, hosch250) , (Java, 70, Rodolvertice) , (C, 29, imallett) , (Java, 226, nhahtdh) , (Little Man Computer, 63, The Wolf) , (Python 2, 89 , Beta Decay) , (Python 2, 41, muddyfish) , (C, 63, es1024) , (C ++, 192, Arcinde) , (Java, 108, durron597) , (C #, 604, eshansingh1) ,(C, 44, Art) , (Java, 134, Olavi Mustanoja) , (Bash, 47, Vi.)
15 resuelve
- user23013: (CJam, 18, Ypnypn) , (JavaScript, 26, hsl) , (CJam, 12, COTO) , (PHP, 23, bwoebi) , (PHP, 54, Steve Robbins) , (CJam, 32, Dennis) , (CJam, 19, Martin Büttner) , (Bash, 23, The Wolf) , (Ruby, 33, Doorknob) , (CJam, 34, Dennis) , (JavaScript, 82, Ismael Miguel) , (PHP, 80, Ismael Miguel) , (QBasic, 43, DLosc) , (QBasic, 42, DLosc) , (ECMAScript, 90, Cris)
10 resuelve
- ossifrage aprensivo: (Python, 44, Caridorc) , (PHP, 52, PleaseStand) , (Befunge-93, 17, user23013) , (BBC BASIC, 187, Beta Decay) , (C, 43, Allbeert) , (Ruby, 58, Rodolvertice) , (JavaScript, 32, hsl) , (PHP, 33, kenorb) , (Python 2, 16, imallett) , (PHP, 53, PleaseStand)
- Sp3000: (Python, 154, Fox Wilson) , (Python, 48, kgull) , (Python, 68, cuernos) , (Python 2, 38, FryAmTheEggman) , (Python 2, 57, FryAmTheEggman) , (Python, 74, xnor) , (JavaScript, 66, Cris) , (JavaScript, 70, Cris) , (Python 2, 37, muddyfish) , (Python, 55, FireFly)
7 resuelve
- grc: (Python 2, 61, FryAmTheEggman) , (Perl 5, 47, chilemagic) , (Python, 69, Sp3000) , (Perl, 39, GentlePurpleRain) , (Perl, 36, apremiante ossifrage) , (Python 3, 110 , Sp3000) , (C, 53, FireFly)
5 resuelve
- hsl: (CoffeeScript, 25, Martin Büttner) , (Golfscript, 20, Josiah Winslow) , (Lua, 18, usuario3155415) , (Python, 54, kgull) , (Aritmética, 31, Cris)
- Stand: (PHP, 14, Tryth) , (C ++, 56, hosch250) , (PHP, 21, kenorb) , (QBasic, 37, DLosc) , (JavaScript, 46, FireFly)
4 resuelve
- bwoebi: (PHP, 52, kenorb) , (PHP, 30, Tryth) , (PHP, 27, kenorb) , (PHP, 44, kenorb)
- FireFly: (JavaScript, 94, Shawn Holzworth) , (Python, 34, Sp3000) , (Brainfuck, 39, Mig) , (JavaScript, 69, Shawn Holzworth)
3 resuelve
- Optimizador: (JavaScript, 61, jsh) , (JavaScript, 47, palerdot) , (JavaScript, 42, Shawn Holzworth)
- es1024: (PHP, 46, Ismael Miguel) , (Python shell, 15, xnor) , (Python shell, 21, xnor)
- DLosc: (Python, 41, Sp3000) , (Ruby, 37, Rodolvertice) , (CJam, 14, User23013)
2 resuelve
- xnor: (Python 3, 37, matsjoyce) , (Python 2, 29, Dennis)
- Daniel Wagner: (Haskell, talla 34, Petr Pudlák) , (Haskell, 42, orgulloso haskeller)
- nneonneo: (Python, 41, Sp3000) , (C, 43, FryAmTheEggman)
- Arte: (C, 51, es1024) , (C, 48, es1024)
- n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳: (Java 6+, 101, Rodolvertice) , (Java, 97, Olavi Mustanoja)
1 resolver
- Ypnypn: (Python 2, 50, Geobits)
- matsjoyce: (Python 3, 12, xnor)
- user1354557: (Python, 56, Fox Wilson)
- Dennis: (CJam, 20, Martin Büttner)
- isaacg: (Pyth, 71, FryAmTheEggman)
- ConMan: (SAS, 17, usuario 3490)
- Arcinde: (JavaScript, 285, Beta Decay)
- Shawn Hotazworth: (Javascript, 82, TrungDQ)
- nooodl: (Ruby, 49, pomo de la puerta )
- Bhante Nandiya: (Python 3, 37, Sp3000)
- Geobits: (APL, 17, usuario23013)
- histocrat: (Ruby, 23, MegaTom)
- ProgramFOX: (Python, 13, Reticalidad)
fuente
Respuestas:
CJam, talla 20, por Martin Büttner
Pruébalo en línea.
Cómo funciona
Descifrando el código
El resultado deseado
2.956177636986737
, es un Doble o un Doble seguido de un Largo.Usando solo los caracteres
"Stop, Hammer time!"
, hay cuatro operadores incorporados que devuelven Dobles no enteros:mS
, cual esasin
ma
, cual esatan2
me
, cual esexp
mt
, cual estan
Todos ellos contienen un
m
, por lo que podemos utilizar como máximo tres de ellos. Solo hay unoS
y unoa
.Todos esos operadores necesitan entradas, y
ma
es el único que consume dos entradas. Solo tenemos tres formas de impulsar Longs:"...",
, que empuja la longitud de la cadena (estrictamente menos de 18).H
, que empuja 17....!
, que empuja el NOT lógico de...
.No tenemos forma de presionar algo como falso
...
, por lo que la última opción siempre presionará 0.La salida no comienza o termina con
17
o0
. Dado que 15 dígitos decimales es el número habitual de dígitos para un Doble, parecía probable que la salida fuera un Doble simple.Suponiendo esto, el código debe caer en una de las siguientes categorías:
<Long> <mS|me|mt>{1,3}
<Long> <mS|me|mt>{x} <Long> <mS|me|mt>{y} ma <mS|me|mt>{z}
.i
) o redondeo (mo
) aplicado a un Doble.En el segundo caso,
x + y + z
es 1 o 2 y uno de los Long es 0 o 17.El resto era básicamente fuerza bruta. Después de algunos intentos,
regresó
9
, lo que significa queproduce la salida deseada.
Todo lo que queda es eliminar todos menos 9 caracteres de la cadena. Los espacios son noops y
i
es un noop en Longs, por lo que"petStorm!"
es una de las posibles opciones.fuente
mr
antes de tomar la longitud. No es que no lo hubieras descubierto también en algún momento. ;)Python 3, talla 12, por xnor
No hace nada (la expresión produce una tupla vacía, que no se imprime). Esto funciona debido a la evaluación de cortocircuito.
fuente
()
.print
.bciprt
nunca se ejecuta, por lo que nunca produce un NameError.Python, tamaño 74, por xnor
Bueno eso fue divertido. Gracias a FryAmTheEggman, hosch250 e isaacg por sus sugerencias / ayuda.
fuente
list(\nprint(range is range)for aacdeeeeehmppprrrrssvwy in\noct(int is int))
.Python 2, talla 50, de Geobits
Salidas 42.
fuente
print 2**2**2**2/2**2**2/2**2**2/2-2**2**2*2**2-22
, pero no sorprende en absoluto que más de una opción sea correcta.GolfScript, tamaño 13, de Peter Taylor
Pruébalo aquí.
Otro, que solo descifré con gran ayuda de Sp3000. ¡Gracias!
Así que así es como llegamos allí. Sp3000 notó un montón de corridas de números consecutivos en la salida:
En base a eso, asumimos que esta era una secuencia creciente, que solo permitía una posible división de los números restantes:
Esos son 23 números, lo que fue un fuerte indicador para repetir el bloque 22 veces, así como para terminar el bloque con
.
(elemento duplicado de la pila superior), de modo que el resultado anterior quedara atrás en la pila y que la iteración final apareciera en la pila dos veces Eso es22,{____.}/
.Ahora mirando las brechas, esos resultan ser 4tos poderes (lo cual es bueno, porque tenemos
4
y?
). Más precisamente, son la cuarta potencia del índice del número actual. A continuación, observamos qué índices crearon una brecha:En binario esos son
Todos tienen el tercer conjunto de bits, lo que significa que el índice probablemente sea solo bit a bit y 'con'
4
(lo cual es bueno nuevamente, porque podemos hacer otro4
con.
y tener a&
). Esto funciona particularmente bien, porque esta operación da como resultado0
o4
, y si lo usamos como exponente, obtenemos una1
o una cuarta potencia, que es exactamente lo que necesitamos. Así que vamos a poner eso juntos:Esto es lo que hace el bloque:
Ahora quedaban dos problemas: teníamos un parásito
,
que aún no usábamos, y la primera iteración es un caso especial, en el sentido de que no hay ningún valor de una iteración anterior a la que podamos agregar cosas cuando nos encontremos+
. Descubrimos que gracias a un comentario no relacionado del usuario 23013 que mencionó casualmente que GolfScript comienza con una cadena vacía en la pila (si no hay nada en STDIN). Así que podríamos usar ese otro,
derecho al principio para convertir esa cadena en un0
, que era justo lo que necesitábamos al comienzo de la iteración.fuente
Python 3, talla 16, por matsjoyce
fuente
Ruby, talla 17, por Pomo
Eso fue muy divertido. ¡Gracias a Sp3000 por ayudarme con esto! Y aprendí que los
%r?...?
literales pueden tener delimitadores. :)fuente
print
, solo para dividirlop
para imprimir,%r
para expresiones regulares yi
para la coincidencia de expresiones regulares sin distinción entre mayúsculas y minúsculas.PHP, tamaño 49, por bwoebi
Eso fue absolutamente mental .
Llegó a
bastante rápido, momento en el que necesitaba algo que da
-6
después de la coma, después de haberme$++$++$++$+=$~main$2
ido.El problema principal es que
$a
,$m
y$i
son todosNULL
, por lo que usarlos indirectamente en variables variables significa que todos apuntan a la misma variable. Sin embargo, PHP parece estar haciendo algunas cosas raras al resolver variables variables. Con variables normales puedes hacer cosas comoque imprime
4
(2
se asigna$a
y luego se agrega a sí mismo). Pero si hago lo mismo con variables variables:Lo entiendo
2
, porque ahora el primero$$a
es evaluar antes de la tarea.Al final, logré forzar un poco de orden poniendo algunos incrementos en el RHS de los
+=
que tuvieron que ser evaluados antes de esa asignación adicional. De esa manera llegué a5
lo que podría simplemente complementar. Aún así ... están sucediendo algunas cosas misteriosas, y no tengo idea de por qué la mitad de las cosas que probé funcionaron y no funcionaron.fuente
print@substr(new exception,~$$mn+=2+$$a+++$$i++);
main
estén en la cadena te engañen mucho. Además,{main}
creo que es un método bastante inusual para extraer ;-)main
realmente no me engañó , después de verloexception
,new
ysubstr
. Pensé que solo serían nombres de variables. Me tomó un tiempo encontrar variables variables y dediqué la mayor parte del tiempo a calcular algún orden de operaciones que realmente produjera un5
que podría complementar sin usar otro conjunto de paréntesis.exception
era obvio, lo que dejaba a los personajes callejerossubstr
ynew
por ahí. Fue literalmente lo primero que vi cuando comencé a trabajar en ello.Ruby, talla 38, por Pomo
Estoy bastante seguro de que esto no está cerca de la fuente original. Es determinista a pesar de usar
rand
.Así es como funciona este.
$><<
Es solo salida.$pece60
y$win
son variables globales indefinidas, que por lo tanto son justasnil
(y me permitieron deshacerme de algunos caracteres extraños).!$pece60
hace untrue
yto_s
le da la cuerda"true"
.Durante años, intenté obtener un
2
o-2
acceder a esou
allí, pero luego me di cuenta de que podía tomar elt
y llamar.succ
(essor) para hacer unu
.rand
con unnil
parámetro devuelve un flotante aleatorio en el intervalo [0,1). Cuando se usan flotantes para indexar en cadenas, se truncan en enteros, por lo que esto siempre devolverá el primer carácter.Finalmente, tenía un par adicional,
[]
así que simplemente envolví todo en él, porque afortunadamente todo es una expresión en Ruby.Gracias a Sp3000 por lanzar algunas ideas en el chat.
fuente
C, 51 por es1024
Después de 20 años de programación C hoy, aprendí sobre las constantes hexadecimales de coma flotante.
fuente
Ruby, 45 (histocrat)
Woohoo! Esta es mi primera grieta en un problema de código de golf, y no tengo suficiente representante para comentar sobre la publicación original. Inmediatamente reconocí el truco utilizado, ya que en realidad lo he encontrado en el código de producción a menudo. Tardó unos 5 minutos en descubrir la mayor parte de la estructura y unas pocas horas en encontrar la respuesta completa.
Explicación:
%q[]
es un método alternativo para crear cadenas. También se pueden usar paréntesis y llaves.String#to_i
en Ruby acepta números en cualquier base del 2 al 36. Ignorará el primer carácter de la cadena que no es parte del número, por lo que cualquier carácter adicional puede "desecharse" después del espacio.Y aquí está el código que usé para descifrarlo:
Manera de ir incrustando un problema NP dentro de un acertijo. He sido completamente francotirador. ¡Buen trabajo!
fuente
p
a antes de la expresión. Presumiblemente, los caracteres restantes se pueden usar para formar las constantes como lo has hecho.p %q[zyfnhvjkwudebgmaclrsx].to_i(36)/51074892
Sé que me rompí el intento de craqueo real aunque :)Python [cualquiera] tamaño de concha 44, por Caridorc
Estoy seguro de que se suponía que debía haber más que esto, pero como
__name__
equivale a__main__
, se selecciona el cuarto carácter 'a' y el resto de la línea nunca se evalúa.fuente
[__name__ for ___name__ in range(1,4)][2][3]
Perl, talla 36, por ossifrage aprensivo
Otro dificil.
fuente
CJam, tamaño 13, por user23013
Pruébalo aquí.
Resuelto a mano, así:
Primero, algunos antecedentes para quienes no son CJammers:
CEGIK
son todas las variables, que son pre-inicializado a12
,14
,16
,18
,20
, respectivamente.s
convierte el elemento de la pila superior en una cadena.f
Es bastante mágico. Para el propósito de esta respuesta, la versión simplificada es que, para una matriza
, algún otro valorb
y un operadorg
, la secuencia deabfg
mapasg(_,b)
aa
(donde cada elemento dea
entra en la_
ranura)./
son matrices de división y división (entre otras cosas).*
es la multiplicación y la repetición de matrices (entre otras cosas).%
es un módulo y una operación extraña, que en la formaad%
de matriza
e enterod
toma cadad
elemento dea
(como el corte de Python con ancho de pasod
).#
es exponenciación (entre otras cosas).,
convierte los números en rangos (de0
an-1
) y devuelve la longitud de una matriz.De acuerdo, eso fuera del camino ...
Era bastante obvio que necesitábamos
,
convertir un número en un rango, porque la única otra forma de obtener una matriz habría sido construir un número mayor y convertirlo en una matriz de caracteres cons
, pero no podríamos haber hecho nada más aritmética en él. Y necesitamos una matriz para hacer algo con elf
s.Primero supuse que los
f
s se usaban con#
y%
, pero eso significaría que habríamos necesitado un número alrededor de 90 para obtener la cantidad correcta de dígitos al final. Y además, esto no explica qué hacer con esos
, y dado que la respuesta parecía realmente interesante, dudé que user23013 simplemente agregara uns
como un no-op eficaz en algún lugar para desanimar a la gente.Así que pensé, tal vez él ni siquiera está manteniendo los números pequeños
%
, sino que construye una serie de números enormes, concatena su representación de cadena cons
, pero luego solo selecciona un corte extraño%
. Así que jugué un poco con el siguiente marco:(No puede hacer
_f/
primero, porque eso produciría cero para al menos los primeros 12 elementos).Donde
_
hay alguna permutación de las variables. No los probé todos antes de aburrirme, y el principal problema con esto fue que la secuencia resultante de dígitos siempre es demasiado larga.En algún momento se me ocurrió, que no necesitaríamos un rango tan grande (es decir, el producto de dos números), si en su lugar utilizamos el
*
para repetir la cadena resultante. Debido a la falta de coincidencia de los parámetros de*
y%
esto no produciría repetición en el resultado:Esto arrojó resultados de una longitud muy cercana a lo que estaba buscando. Hubiera intentado los 240, pero bastante rápido (tercer o cuarto intento), me topé con
cuyos rendimientos
Y supuse que una coincidencia de los primeros seis dígitos no sería una coincidencia. Entonces, la pregunta era cómo reorganizarlo sin alterar el cálculo real:
K
porque eso seleccionaría diferentes dígitos por completo.C
oI
porque eso cambiaría los números resultantes de las dos operaciones del mapa.G
eso solo cambiaría el número de repeticiones, lo que no haría nada más que cambiar la duración del resultado. (Lo que es bueno.)E
eso, cambiaría el rango de la matriz, pero el rango aún comenzaría[0 1 2 3 ...]
, por lo que no afectaría el cálculo. Se podría afectar a la longitud de la cadena devuelta por la bases
, que también significaría queK%
habría seleccionar diferentes dígitos en repeticiones adicionales.Intercambiando así que sólo probé
E
yG
y listo:En resumen, esto es lo que hace el código:
fuente
APL, tamaño 17, por user23013
Pasé mucho demasiado tiempo tratando de descifrar esto. Probablemente habría ido más rápido si supiera que APL está entrando.
Pruébalo aquí
fuente
Pyth, talla 11, por isaacg
Eso es un mal abuso de errores allí mismo. Esto compila a:
El error relevante es que
\\
compila en"\"
lugar de"\\"
, lo que le permite compilar Pyth en una cadena.fuente
Pprint
serprint
, o al menospprint
?Python, tamaño 69, por Sp3000
Eso fue difícil...
fuente
print(sum(map(ord,str((dict(list(((str(),str(dict())),))),list())))))
, pero obviamente funcionarían muchas permutaciones diferentes de palabras clave.Python 3, 37 bytes, por Sp3000
De manera vergonzosa, la parte más difícil fue encontrar la cadena en bytes. Tuve que dormir en él, y en la noche me di cuenta '¡duh, es un literal de bytes!'
fuente
PHP, 53, por favor
Lo descifré por fin:
La solución llegó bastante rápido cuando noté que la secuencia consiste en alternar números decimales y octales:
Además, los intervalos entre cada conjunto de números crecieron a una velocidad igual al valor devuelto por
printf()
(es decir, el número de caracteres escritos).fuente
Python 2, tamaño 132, de Vi.
Gracias por todas las barras invertidas y comillas :)
Editar: La versión actualizada de 96 caracteres:
Esto está tomado completamente de la solución de Alex en https://codegolf.stackexchange.com/a/41451/32353
fuente
fgiillmmooprrsstt
o,,,\016:::S[]____tuuvyy
.exec
? Mi código podría haber sido más corto ... Lo estaba emulando concompile
+eval
porque me olvidé deexec
...CJam, talla 15, por Ypnypn
De los caracteres dados, supuse que tenía que ser una de las tres formas siguientes:
que crea un rango de dos dígitos, luego asigna una operación de suma y módulo (en cualquier orden) en el rango, antes de sumarlo. Así que comencé con el primero y probé sistemáticamente las permutaciones
6789
en los huecos.fuente
PHP, tamaño 52, por favor
Esto resultó ser bastante fácil al final. La salida se ve muy aleatoria, y los personajes
m
,t
,_
,r
,a
,n
yd
todo apareció dos veces ...fuente
Python 2, tamaño 61, por FryAmTheEggman
Me sorprendería mucho si esto coincide con el original.
fuente
print''.__doc__[::2][::3].split()[1].split('.')[0][:-~-~True]
dir()
encontrar el 'get'. Y sí, hubiera sido muy difícil sin las comillas.Python 3, Sp3000, talla 44
Python 3 me ayudó aquí, ya que pude causar un error (desplazamiento a la izquierda
None
por algo) después de imprimir la respuesta.fuente
print(~(~(()<())<<((()<((),))<<(()<((),)))))
originalmente.PHP, tamaño 52, por kenorb
(Dios, cuánto tiempo me llevó pensar qué hacer con el
_r
sufijo restante . Hasta que me di cuenta de que no era asíprint
, peroprint_r
...)fuente
_:print_r(chr(3*pow(2,5)+@++$i));if(@$i<4<<1)goto _;
.echo
no es posible;print
se mantuvo; b) necesitas algo de bucle, pero para unfor
bucle, no había suficientes puntos y comas, y bueno, hay dos puntos ... así que probablemente haya una etiqueta allí en combinación con goto; c) entonces necesita un if para abortar el goto-loop. Tener ahoraX:print($Y);if($Y)goto X;
(X e Y son marcadores de posición); d) hay un++
, pero no=
, así que probablemente algunos++$Z
del 1 al 8; e) para obtener letras de un número entero, necesitamoschr()
(generalmente): estaba allí; f) ahora solo necesitaba encontrar los números 96 y 8 para chr y if. Luego complete los marcadores de posición y volià.PHP, tamaño 54, por Steve Robbins
No es la solución original, creo.
fuente
echo
y elwhile
, pero luego no me molesté en encontrar un bucle que produce 42.while
en mi original.C, es1024, longitud 70
La parte difícil fue hacer un seguimiento de todos los personajes innecesarios ... en serio ... tuve que rehacerlos unas 10 veces. ¡El único que me preocupó fue el,
.
pero de alguna manera lo pegué en el medio de laprintf
cadena de formato y se volvió invisible!fuente
Python 3, tamaño 110, por Sp3000
Esto fue divertido :)
fuente
Haskell, talla 34, de Petr Pudlák
Tenga en cuenta que este programa debe ejecutarse en una máquina de 32 bits. Si desea verificar que este es el programa correcto y tiene una máquina de 64 bits, puede usar esto en su lugar:
Fue bastante fácil adivinar el "marco" del programa
main=print(0x<hex digits>^0x<hex digits>::Int)
. Toda la magia estaba en buscar la forma correcta de particionar y ordenar los dígitos. No hice mucha inteligencia aquí, solo una búsqueda de fuerza bruta ... aunque sí me aseguré de abusar del hecho de que algunos dígitos estaban duplicados, probablemente había aproximadamente un número igual de dígitos en la base y el exponente, y el último dígito de la base casi seguro no era par. El código de búsqueda completo se incluye a continuación; Utiliza el paquete multiset-comb . La búsqueda completa dura aproximadamente 10:33 en mi máquina (y produce una sola respuesta correcta, por supuesto).fuente
Javascript, 82, por TrungDQ
Tomó una eternidad para obtener los índices correctos.
fuente