前書き
ボブは、使用するWebサイトごとに異なるパスワードを使用するのが好きです。彼は、覚えられるように特別な形式のパスワードを求めています。彼は自分の名前のように短くするのが好きなので、コードの長さをできるだけ短くしたパスワードジェネレーターを構築して彼を助けてください。
チャレンジ
4つのパラメーターを受け取るパスワードジェネレーターをBobにビルドします-
- ドメインアドレス(例:stackexchange.com)
- ファーストネーム、
- 苗字、
- 生年月日および年。
そして、次の変換を受けた文字列を出力します。
すべてのパスワードには、ドメイン名の長さlに基づいたテンプレートがあります。場合は、Lが素数である、テンプレートがこの形式であります-
[birth-date][domain-name][lastname][birth-year][symbol]
それ以外の場合は、この形式です-
[symbol][birth-year][firstname][domain-name][birth-date]
。
シンボルフィールドには、ドメインタイプに基づいた値があります。
.com-> $$$ .org-> &&& .net-> %%% .edu-> +++ .gov-> @@@ .mil-> >>> デフォルト-> ~~~
今、彼はまた、実行したいシーザー暗号 -フィールド以上の[firstname][domain-name][lastname]
場合【選択シフト方向が右であるlは、それが残っているそれ以外の素数です。シフト値は、生年月日と年の加算の値によって決まります。
上記のプロセスの後、テキストは簡単に思い出せないため、暗号化されたテキストを発音できるようにしたいと考えています。これを行うために、彼は3回ごとに子音をアルファベット順の母音(つまりaeiou
)に置き換えたいと考えています。
最後に、彼は同じ文字の連続した出現を削除したいと考えています。
例
入力-stackexchange.com bob williams 0894 出力-08qraicvafyecugjigyoq94 $$$。
説明 :
[birth-date][domain-name][lastname][birth-year][symbol]
ドメイン名の長さがstackexchange
素数であるため、パスワードテンプレートはです。シンボルは$$$
、ドメインタイプがのようになります.com
。
これらの値をテンプレートに入力しましょう- 08stackexchangewilliams94$$$
。ここで、フィールドでcaesar暗号を実行する必要があります[firstname][domain-name][lastname]
(この場合は単なる姓です)。lは素数であり、シフト値はであるため、シフト方向は右です08+94 = 102
。
だから、に08stackexchangewilliams94$$$
なり08qryaicvafylecugjjgykq94$$$
ます。これで、連続する3回ごとの子音が母音に置き換えられ08qraaicvafyeecugjigyoq94$$$
、同じ文字の連続するすべての発音が削除され08qraicvafyecugjigyoq94$$$
ます。それがボブにとって発音可能であることを心配しないでください。
追加情報
- ドメインアドレス、名、および姓には小文字のアルファベットのみが含まれます。
- ドメインアドレスは常に、唯一のセカンドレベルおよびトップレベルドメインからなるようになる
stackexchange.com
とはありませんcodegolf.stackexchange.com
。また、次のようなドメイン.co.uk
は許可されませんが、正当.uk
または.in
有効です。 - 母音のアルファベット順の置換は周期的です。つまり
u
、a
は、置換に使用されます。 - Caesar暗号のASCII範囲は97〜122です。
- ここで説明されているように入力できます。
- 出力は文字列でなければなりません。
- 誕生日と年の形式がある
dd
とyy
。だからが02
許容され、2
ではありません。
これはコードゴルフなので、バイト単位の最短コードが優先されます。ハッピーゴルフ!
0894
します102
が、説明ではを使用し08+96=106
ます。暗号化されたテキストは102
値を使用するように見えます。混乱することができ、単にわずかな矛盾...
defualt
はないdefault
stackexchange.com
、ではありませんかimg.stackexchange.com
?国のドメインはbbc.co.uk
どうですか?