介绍
鲍勃喜欢为他使用的每个网站使用不同的密码。他想要一种特殊格式的密码,以便他可以记住。通过建立一个密码生成器来帮助他,该密码生成器的代码长度应尽可能短,因为他喜欢像他的名字一样简短。
挑战
为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为素数,则移位方向为右,否则为左。偏移值由出生日期和年份相加的值确定。
经过上述过程后,文本很难被记住,因此他希望加密后的文本清晰可辨。为此,他想用字母顺序(即aeiou)的元音替换每三个连续的辅音。
最后,他想删除连续出现的相同字母。
例
输入-stackexchange.com bob williams 0894 输出-08qraicvafyecugjigyoq94 $$$。
说明:
密码模板为[birth-date][domain-name][lastname][birth-year][symbol],因为域名的长度stackexchange是素数。符号将$$$与域类型相同.com。
让我们在模板-中填充这些值08stackexchangewilliams94$$$。现在,必须在字段上运行凯撒密码[firstname][domain-name][lastname](在这种情况下,它只是姓氏)。位移方向是正确的,因为l为质数,位移值为08+94 = 102。
因此,08stackexchangewilliams94$$$变成08qryaicvafylecugjjgykq94$$$。现在,每三个连续的辅音都用元音替换- 08qraaicvafyeecugjigyoq94$$$ 删除同一字母的每个连续的音调- 08qraicvafyecugjigyoq94$$$。别担心,这对Bob来说很明显。
附加信息
- 域名,名字和姓氏仅包含小写字母。
- 域地址将始终仅包含第二级和顶级域,例如
stackexchange.comand notcodegolf.stackexchange.com。同样,.co.uk不允许类似的域, 但仅.uk或.in有效。 - 按字母顺序替换元音是循环的。我的意思是在之后
u,a用于替换。 - 凯撒密码的ASCII范围是97-122(含)。
- 您可以按照此处的说明进行输入。
- 输出必须是字符串。
- 出生日期和年份的格式为
dd和yy。02因此可以接受,2不能接受。
这是代码高尔夫球,因此以字节为单位的最短代码获胜。高尔夫快乐!
0894总和,102但说明使用08+96=106。密文似乎使用该102值。只是有点不一致,可能会引起混淆...
defualt不正确default
stackexchange.com,而不是img.stackexchange.com?国家域名之类的bbc.co.uk呢?