介绍
鲍勃喜欢为他使用的每个网站使用不同的密码。他想要一种特殊格式的密码,以便他可以记住。通过建立一个密码生成器来帮助他,该密码生成器的代码长度应尽可能短,因为他喜欢像他的名字一样简短。
挑战
为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.com
and 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
呢?