Introducción
A Bob le gusta tener contraseñas diferentes para cada sitio web que usa. Quiere contraseñas en un formato especial para poder recordar. Ayúdelo construyendo un generador de contraseñas que sea lo más corto posible en longitud de código, porque le gusta mantener las cosas cortas como su nombre.
Desafío
Cree a Bob un generador de contraseñas que tome cuatro parámetros:
- Dirección de dominio, (ej .: stackexchange.com)
- Nombre de pila,
- apellido,
- Fecha de nacimiento y año.
y genera una cadena que ha sufrido las siguientes transformaciones.
Cada contraseña tiene una plantilla basada en la longitud l del nombre de dominio. Si l es primo, entonces la plantilla es de esta forma:
[birth-date][domain-name][lastname][birth-year][symbol]
de lo contrario es de esta forma
[symbol][birth-year][firstname][domain-name][birth-date].
El campo de símbolo tendrá valores basados en el tipo de dominio.
.com -> $$$ .org -> &&& .net -> %%% .edu -> +++ .gov -> @@@ .mil -> >>> predeterminado -> ~~~
Ahora, él también quiere ejecutar un cifrado César sobre los campos - [firstname][domain-name][lastname].La dirección de desplazamiento es correcto si l es primo de lo contrario se deja. El valor del turno está determinado por el valor de la adición de la fecha de nacimiento y el año.
Después del proceso anterior, el texto no se puede recordar fácilmente, por lo que quiere que el texto cifrado sea pronunciable. Para hacer esto, quiere reemplazar cada tercera consonante consecutiva con una vocal en orden alfabético (es decir, aeiou).
Finalmente, quiere eliminar ocurrencias consecutivas de las mismas letras.
Ejemplo
Entrada - stackexchange.com bob williams 0894 Salida - 08qraicvafyecugjigyoq94 $$$.
Explicación
La plantilla de contraseña es [birth-date][domain-name][lastname][birth-year][symbol], porque la longitud del nombre de dominio stackexchangees primo. El símbolo será $$$como es el tipo de dominio .com.
Llenemos esos valores en la plantilla - 08stackexchangewilliams94$$$. Ahora el cifrado César debe ejecutarse en campos [firstname][domain-name][lastname](en este caso es solo apellido) La dirección del cambio es correcta porque l es primo y el valor del cambio es 08+94 = 102.
Entonces, se 08stackexchangewilliams94$$$convierte en 08qryaicvafylecugjjgykq94$$$. Ahora cada tercera consonante consecutiva se reemplaza con una vocal (se 08qraaicvafyeecugjigyoq94$$$ eliminan todas las ocupaciones consecutivas de la misma letra) 08qraicvafyecugjigyoq94$$$. No te preocupes, es pronunciable para Bob.
información adicional
- La dirección del dominio, el nombre y el apellido contienen solo alfabetos en minúsculas.
- La dirección de dominio siempre consistirá solo en un dominio de segundo nivel y de nivel superior, me gusta
stackexchange.comy nocodegolf.stackexchange.com. Además, los dominios como.co.ukno están permitidos pero son justos.uko.inválidos. - El reemplazo de la vocal en orden alfabético es cíclico. Quiero decir después
u,ase usa para reemplazar. - El rango ASCII para el cifrado César es de 97 a 122 inclusive.
- Puede tomar la entrada como se describe aquí .
- La salida tiene que ser una cadena.
- El formato de fecha y año de nacimiento es
ddyyy.Así02es aceptable y2no lo es.
Este es el código de golf, por lo que gana el código más corto en bytes. ¡Feliz golf!
0894que se suma 102pero la explicación usa 08+96=106. El texto cifrado parece usar el 102valor. Solo una ligera inconsistencia que podría ser confusa ...
defualtno escribedefault
stackexchange.comnoimg.stackexchange.com? ¿Qué pasa con los dominios de paísesbbc.co.uk?