¡Tengo tantos secretos y ningún lugar donde guardarlos!
El objetivo es simple: escribir un programa que le permita guardar una cadena y protegerla con una contraseña.
El programa tomará un alias, contraseña y secreto (opcional) como parámetros.
Si es la primera vez que se llama al programa con un alias dado, almacenará / recordará el secreto y generará lo que desee.
Si se llama al programa con un alias que se ha usado antes, generará el secreto de ese alias si la contraseña es la misma que la primera vez que el programa se ejecutó con ese alias.
Otros casos
Si es la primera vez que se llama con un cierto alias y no se da ningún secreto, no guarde nada.
Si se llama al programa con un alias que se ha utilizado y la contraseña es incorrecta, devuelva cualquier tipo de error o nada.
Si se llama al programa con un alias que se ha utilizado, la contraseña es correcta y se proporciona un nuevo secreto: envíe el secreto antiguo y reemplácelo por el nuevo, de modo que la próxima vez solo salga el nuevo secreto.
Si se llama al programa con un alias que se ha utilizado, la contraseña es correcta y no se proporciona ningún secreto nuevo: envíe el secreto anterior y asegúrese de que no se reemplace.
Nota: estos secretos / contraseñas no necesitan almacenarse de forma segura
También tenga en cuenta: cualquier entrada alfanumérica para contraseñas y secretos de alias debe ser aceptada
Se aplican reglas estándar, ¡buena suerte!
Respuestas:
JavaScript (ES6),
6050 bytes¡ Ahorré 10 bytes gracias a @JonasWilms !
Toma entrada como cualquiera
(alias,password,secret)
o(alias,password)
. Devuelve indefinido la primera vez que se almacena un secreto, o falso si la contraseña es incorrecta.¡Pruebe un primer caso de prueba en línea!
¡Pruebe un segundo caso de prueba en línea!
¿Cómo?
Definimos una función con nombre.F
Comentado
fuente
p&&
se requiera. Entonces, eso es otro -3 bytes.Python 2 ,
9493 bytesPruébalo en línea!
Por una vez, el extraño parámetro predeterminado dict de Python funciona a mi favor ...
fuente
Ruby , 64 bytes
Crea un hash para alias para un solo par de claves de
password => secret
. Probablemente podría ser más elegante.Pruébalo en línea!
fuente
Wolfram Language (Mathematica) , 34 bytes
Pruébalo en línea!
fuente
C # (Interactive compilador de Visual C #) ,
140138134 bytes-2 bytes gracias a @Expired Data
Pruébalo en línea!
fuente
P
no tiene que serdynamic
ahoraPython 2 , 77 bytes
Pruébalo en línea!
Similar al método de Chas Brown .
fuente