Einführung
Bob möchte für jede Website, die er verwendet, unterschiedliche Passwörter haben. Er möchte Passwörter in einem speziellen Format, damit er sich erinnern kann. Helfen Sie ihm, indem Sie einen Kennwortgenerator erstellen, dessen Codelänge so kurz wie möglich ist, weil er es mag, Dinge so kurz wie seinen Namen zu halten.
Herausforderung
Bauen Sie Bob einen Passwortgenerator auf, der vier Parameter enthält -
- Domain-Adresse (z. B .: stackexchange.com)
- Vorname,
- Familienname, Nachname,
- Geburtsdatum und Jahr.
und gibt einen String aus, der die folgenden Transformationen durchlaufen hat.
Jedes Passwort hat eine Vorlage basierend auf der Länge l des Domain - Namen. Wenn l Primzahl ist, hat die Vorlage die folgende Form:
[birth-date][domain-name][lastname][birth-year][symbol]
sonst ist es von dieser Form -
[symbol][birth-year][firstname][domain-name][birth-date].
Das Symbolfeld enthält Werte, die auf dem Domänentyp basieren.
.com -> $$$ .org -> &&& .net -> %%% .edu -> +++ .gov -> @@@ .mil -> >>> Standard -> ~~~
Jetzt will er auch eine Cäsar-Chiffre über Felder ziehen - [firstname][domain-name][lastname]Die Verschiebungsrichtung ist richtig, wenn ich Primzahl bin, sonst ist sie übrig. Der Schichtwert wird durch den Wert der Addition von Geburtsdatum und Jahr bestimmt.
Nach dem obigen Vorgang kann sich der Text nicht mehr leicht merken, sodass er möchte, dass der verschlüsselte Text ausgesprochen werden kann. Dazu möchte er jeden dritten Konsonanten in alphabetischer Reihenfolge durch einen Vokal ersetzen aeiou.
Schließlich möchte er aufeinanderfolgende Vorkommen gleicher Buchstaben löschen.
Beispiel
Input - stackexchange.com Bob Williams 0894 Ausgabe - 08qraicvafyecugjigyoq94 $$$.
Erklärung:
Passwortvorlage ist [birth-date][domain-name][lastname][birth-year][symbol], weil die Länge des Domainnamens stackexchangeeine Primzahl ist. Symbol wird $$$als Domain - Typ ist .com.
Füllen wir diese Werte in die Vorlage - 08stackexchangewilliams94$$$. Jetzt muss die Caesar-Chiffre auf Feldern ausgeführt werden [firstname][domain-name][lastname](in diesem Fall ist es nur der Nachname). Die Schaltrichtung ist richtig, da l die Primzahl und der Schaltwert ist 08+94 = 102.
Also 08stackexchangewilliams94$$$verwandelt sich in 08qryaicvafylecugjjgykq94$$$. Jetzt wird jeder dritte aufeinanderfolgende Konsonant durch einen Vokal ersetzt - 08qraaicvafyeecugjigyoq94$$$ alle aufeinanderfolgenden Vorkommnisse desselben Buchstabens werden gelöscht - 08qraicvafyecugjigyoq94$$$. Keine Sorge, es ist für Bob aussprechbar.
zusätzliche Information
- Domain-Adresse, Vorname und Nachname enthalten nur Kleinbuchstaben.
- Domain - Adresse wird immer besteht nur aus einer zweiten Ebene und Top-Level - Domain, wie
stackexchange.comund nichtcodegolf.stackexchange.com. Auch Domains wie.co.ukist nicht erlaubt, aber nur.ukoder.inist gültig. - Das Ersetzen des Vokals in alphabetischer Reihenfolge erfolgt zyklisch. Ich meine nach
u,awird verwendet, um zu ersetzen. - Der ASCII-Bereich für die Caesar-Chiffre liegt zwischen 97 und 122 (einschließlich).
- Sie können Eingaben wie hier beschrieben vornehmen .
- Die Ausgabe muss eine Zeichenfolge sein.
- Das Format von Geburtsdatum
ddundyy-jahr02ist und. So ist akzeptabel und2nicht.
Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes. Viel Spaß beim Golfen!
0894was sich summiert, 102aber die Erklärung verwendet 08+96=106. Der verschlüsselte Text scheint den 102Wert zu verwenden. Nur eine leichte Inkonsistenz, die verwirrend sein könnte ...
defualtnichtdefault
stackexchange.com, nichtimg.stackexchange.com? Was ist mit Länderdomainsbbc.co.uk?