El reto
Un simple desafío "espía versus espía".
Escriba un programa con las siguientes especificaciones:
- El programa puede estar escrito en cualquier idioma pero no debe exceder los 512 caracteres (como se representa en un bloque de código en este sitio).
- El programa debe aceptar 5 enteros de 32 bits con signo como entradas. Puede tomar la forma de una función que acepta 5 argumentos, una función que acepta una sola matriz de 5 elementos o un programa completo que lee 5 enteros de cualquier entrada estándar.
- El programa debe generar un entero de 32 bits con signo.
- El programa debe devolver 1 si y solo si las cinco entradas, interpretadas como una secuencia, coinciden con una secuencia aritmética específica de la elección del programador, llamada "clave". La función debe devolver 0 para todas las demás entradas.
Una secuencia aritmética tiene la propiedad de que cada elemento sucesivo de la secuencia es igual a su predecesor más alguna constante fija a
.
Por ejemplo, 25 30 35 40 45
es una secuencia aritmética ya que cada elemento de la secuencia es igual a su predecesor más 5. Asimismo, 17 10 3 -4 -11
es una secuencia aritmética ya que cada elemento es igual a su precesor más -7.
Las secuencias 1 2 4 8 16
y 3 9 15 6 12
no son secuencias aritméticas.
Una clave puede ser cualquier secuencia aritmética que elija, con la única restricción de que no se permiten secuencias que impliquen desbordamiento de enteros. Es decir, la secuencia debe ser estrictamente creciente, estrictamente decreciente o tener todos los elementos iguales.
Como ejemplo, suponga que elige la clave 98021 93880 89739 85598 81457
. Su programa debe devolver 1 si las entradas (en secuencia) coinciden con estos cinco números, y 0 en caso contrario.
Tenga en cuenta que los medios para proteger la clave deben ser de su propio diseño novedoso. Además, las soluciones probabilísticas que pueden devolver falsos positivos con cualquier probabilidad distinta de cero no están permitidas. En particular, no utilice ningún hash criptográfico estándar, incluidas las funciones de biblioteca para los hashes criptográficos estándar.
La puntuación
Los envíos más cortos sin descifrar por conteo de personajes serán declarados ganadores.
Si hay alguna confusión, no dude en preguntar o comentar.
El contra desafío
Se alienta a todos los lectores, incluidos los que han presentado sus propios programas, a "descifrar" los envíos. Un envío se agrieta cuando su clave se publica en la sección de comentarios asociados. Si un envío persiste durante 72 horas sin ser modificado o agrietado, se considera "seguro" y cualquier éxito posterior en el agrietamiento será ignorado por el concurso.
Consulte "Descargo de responsabilidad" a continuación para obtener detalles sobre la política actualizada de puntaje de craqueo.
Las presentaciones agrietadas se eliminan de la contienda (siempre que no sean "seguras"). No deben ser editados. Si un lector desea enviar un nuevo programa, debe hacerlo en una respuesta por separado.
Los cracker (s) con los puntajes más altos serán declarados ganadores junto con los desarrolladores de los programas ganadores.
Por favor no descifre su propia presentación.
La mejor de las suertes. :)
Tabla de clasificación
Penúltima clasificación (pendiente de seguridad de la presentación de Dennis CJam 49).
Armarios seguros
- CJam 49, Dennis
- CJam 62, Dennis seguro
- CJam 91, Dennis seguro
- Python 156, caja fuerte de Maarten Baert
- Perl 256, chilemagic safe
- Java 468, Geobits seguro
Galletas Imparables
- Peter Taylor [Ruby 130, Java 342, Mathematica 146 *, Mathematica 72 *, CJam 37]
- Dennis [Pyth 13, Python 86 *, Lua 105 *, GolfScript 116, C 239 *]
- Martin Büttner [Javascript 125, Python 128 *, Ruby 175 *, Ruby 249 *]
- Tyilo [C 459, Javascript 958 *]
- Freddieknets [Mathematica 67 *]
- Ilmari Karonen [Python27 182 *]
- nitroso [C 212 *]
* envío no conforme
Descargo de responsabilidad (actualizado a las 11:15 PM EST, 26 de agosto)
Con los problemas de puntuación llegando finalmente a la masa crítica (dado que dos tercios de los envíos descifrados no cumplen hasta ahora), clasifiqué a los mejores crackers en términos de número de envíos craqueados (primarios) y número total de caracteres en envíos crackeados compatibles (secundario).
Como antes, las presentaciones exactas quebradas, la duración de las presentaciones y su estado de cumplimiento / no cumplimiento están todos marcados para que los lectores puedan inferir sus propias clasificaciones si creen que las nuevas clasificaciones oficiales son injustas.
Mis disculpas por enmendar las reglas tan tarde en el juego.