introduzione
A Bob piace avere password diverse per ogni sito Web che utilizza. Vuole le password in un formato speciale per poterle ricordare. Aiutalo costruendo un generatore di password che sia il più corto possibile nella lunghezza del codice, perché gli piace tenere le cose brevi proprio come il suo nome.
Sfida
Costruisci Bob un generatore di password che accetta quattro parametri:
- Indirizzo di dominio, (es: stackexchange.com)
- Nome di battesimo,
- cognome,
- Data e anno di nascita
e genera una stringa che ha subito le seguenti trasformazioni.
Ogni password ha un modello basato sulla lunghezza l del nome di dominio. Se l è primo, il modello è di questo modulo -
[birth-date][domain-name][lastname][birth-year][symbol]
altrimenti è di questa forma -
[symbol][birth-year][firstname][domain-name][birth-date].
Il campo simbolo avrà valori basati sul tipo di dominio.
.com -> $$$ .org -> &&& .net -> %%% .edu -> +++ .gov -> @@@ .mil -> >>> impostazione predefinita -> ~~~
Ora vuole anche eseguire un codice caesar sui campi [firstname][domain-name][lastname]. La direzione del turno è giusta se io sono il primo, altrimenti è lasciato. Il valore di spostamento è determinato dal valore di aggiunta della data e dell'anno di nascita.
Dopo il processo sopra, il testo non può essere facilmente ricordato, quindi vuole che il testo cifrato sia pronunciabile. Per fare ciò, vuole sostituire ogni consonante su tre con una vocale in ordine alfabetico (cioè, aeiou).
Infine, vuole eliminare le ricorrenze consecutive delle stesse lettere.
Esempio
Input - stackexchange.com bob williams 0894 Uscita - 08qraicvafyecugjigyoq94 $$$.
Spiegazione :
Il modello di password è [birth-date][domain-name][lastname][birth-year][symbol], poiché la lunghezza del nome di dominio stackexchangeè un numero primo. Il simbolo sarà $$$come il tipo di dominio .com.
Riempiamo questi valori nel modello - 08stackexchangewilliams94$$$. Ora il codice di Cesare deve essere eseguito sui campi [firstname][domain-name][lastname](in questo caso è solo il cognome). La direzione del cambio è corretta perché l è il primo e il valore del cambio è 08+94 = 102.
Quindi, 08stackexchangewilliams94$$$si trasforma in 08qryaicvafylecugjjgykq94$$$. Ora ogni terza consonante consecutiva è sostituita da una vocale - 08qraaicvafyeecugjigyoq94$$$ ogni ocuurenze consecutive della stessa lettera è cancellata - 08qraicvafyecugjigyoq94$$$. Non preoccuparti, è pronunciabile per Bob.
informazioni addizionali
- L'indirizzo del dominio, il nome e il cognome contengono solo alfabeti minuscoli.
- L'indirizzo di dominio sarà sempre costituito solo da un dominio di secondo e di livello superiore, simile
stackexchange.come noncodegolf.stackexchange.com. Inoltre, domini come.co.uknon sono consentiti ma solo.uko.insono validi. - La sostituzione della vocale in ordine alfabetico è ciclica. Voglio dire dopo
u,aviene utilizzato per sostituire. - L'intervallo ASCII per il codice Caesar è compreso tra 97 e 122.
- Puoi prendere l'input come descritto qui .
- L'output deve essere una stringa.
- Il formato della data e dell'anno di nascita è
ddeyy. Quindi02è accettabile e2non lo è.
Questo è code-golf, quindi vince il codice più breve in byte. Buon golf!
0894che si aggiunge 102ma utilizza la spiegazione 08+96=106. Il testo cifrato sembra utilizzare il 102valore. Solo una leggera incoerenza che potrebbe essere
defualtnon default
stackexchange.comnoimg.stackexchange.com? Che dire dei domini di paesi comebbc.co.uk?