Giới thiệu
Bob thích có mật khẩu khác nhau cho mỗi trang web anh ta sử dụng. Anh ấy muốn mật khẩu ở một định dạng đặc biệt để anh ấy có thể nhớ. Giúp anh ta bằng cách xây dựng một trình tạo mật khẩu ngắn nhất có thể theo chiều dài mã, bởi vì anh ta thích giữ những thứ ngắn như tên của mình.
Thử thách
Xây dựng Bob một trình tạo mật khẩu có bốn tham số -
- Địa chỉ tên miền, (ví dụ: stackexchange.com)
- Tên đầu tiên,
- họ
- Ngày sinh và năm.
và đưa ra một chuỗi đã trải qua các biến đổi sau đây.
Mỗi mật khẩu có một mẫu dựa trên độ dài l của tên miền. Nếu l là số nguyên tố thì mẫu có dạng này -
[birth-date][domain-name][lastname][birth-year][symbol]
khác là nó ở dạng này -
[symbol][birth-year][firstname][domain-name][birth-date]
.
Trường biểu tượng sẽ có các giá trị dựa trên loại miền.
.com -> $$$ .org -> &&& .net -> %%% .edu -> +++ .gov -> @@@ .mil -> >>> mặc định -> ~~~
Bây giờ, anh ta cũng muốn chạy một mật mã caesar trên các trường - [firstname][domain-name][lastname]
. Hướng dịch chuyển là đúng nếu l là số nguyên tố khác thì nó được để lại. Giá trị thay đổi được xác định bởi giá trị thêm vào ngày sinh và năm.
Sau quá trình trên, văn bản không thể dễ nhớ nên anh ta muốn văn bản được mã hóa có thể phát âm được. Để làm điều này, ông muốn thay thế mọi phụ âm thứ ba liên tiếp bằng một nguyên âm theo thứ tự bảng chữ cái (nghĩa là aeiou
).
Cuối cùng, anh ta muốn xóa các lần xuất hiện liên tiếp của cùng một chữ cái.
Thí dụ
Đầu vào - stackexchange.com bob williams 0894 Đầu ra - 08qraicvafyecugjigyoq94 $$$.
Giải trình :
Mẫu mật khẩu là [birth-date][domain-name][lastname][birth-year][symbol]
bởi vì độ dài của tên miền stackexchange
là số nguyên tố. Biểu tượng sẽ $$$
là loại tên miền .com
.
Hãy điền các giá trị đó vào mẫu - 08stackexchangewilliams94$$$
. Bây giờ mật mã caesar phải được chạy trên các trường [firstname][domain-name][lastname]
(nó chỉ là họ trong trường hợp này). Hướng dịch chuyển là đúng vì l là số nguyên tố và giá trị dịch chuyển là 08+94 = 102
.
Thế là 08stackexchangewilliams94$$$
biến thành 08qryaicvafylecugjjgykq94$$$
. Bây giờ, mọi phụ âm thứ ba liên tiếp được thay thế bằng một nguyên âm - 08qraaicvafyeecugjigyoq94$$$
mọi khoảng cách liên tiếp của cùng một chữ cái sẽ bị xóa - 08qraicvafyecugjigyoq94$$$
. Đừng lo lắng nó có thể phát âm được cho Bob.
thông tin bổ sung
- Địa chỉ tên miền, tên và họ chỉ chứa bảng chữ cái chữ thường.
- Địa chỉ tên miền sẽ luôn chỉ bao gồm một tên miền cấp hai và cấp cao nhất, thích
stackexchange.com
và khôngcodegolf.stackexchange.com
. Ngoài ra, các tên miền như.co.uk
không được phép nhưng chỉ.uk
hoặc.in
hợp lệ. - Thay thế nguyên âm theo thứ tự bảng chữ cái là tuần hoàn. Ý tôi là sau
u
,a
được dùng để thay thế. - Phạm vi ASCII cho mật mã Caesar là 97 - 122.
- Bạn có thể lấy đầu vào như mô tả ở đây .
- Đầu ra phải là một chuỗi.
- Định dạng của ngày sinh và năm là
dd
vàyy
. Vì vậy,02
có thể chấp nhận được và2
không.
Đây là mã golf, vì vậy mã ngắn nhất tính bằng byte sẽ thắng. Chúc bạn chơi golf vui vẻ!
0894
bổ sung 102
nhưng giải thích sử dụng 08+96=106
. Các văn bản được mã hóa xuất hiện để sử dụng 102
giá trị. Chỉ cần một sự mâu thuẫn nhỏ có thể gây nhầm lẫn ...
defualt
không gõdefault
stackexchange.com
, khôngimg.stackexchange.com
? Những gì về miền quốc gia như thếbbc.co.uk
nào?