Lấy cảm hứng từ thử thách này (cảm ơn @cairdcoinheringaahing cho tiêu đề!), Nhiệm vụ của bạn là lấy hai chuỗi ASCII có thể in và nhân chúng thành phần tử thông minh với các quy tắc sau.
Làm thế nào nó hoạt động?
Đưa ra hai chuỗi (ví dụ split
và isbn
) trước tiên bạn sẽ cắt ngắn chuỗi dài hơn sao cho chúng có độ dài bằng nhau và sau đó xác định mã ASCII của chúng :
split -> spli -> [115, 112, 108, 105]
isbn -> isbn -> [105, 115, 98, 110]
Bước tiếp theo sẽ là ánh xạ chúng đến phạm vi [0..94]
bằng cách trừ 32
từng mã:
[115, 112, 108, 105] -> [83, 80, 76, 73]
[105, 115, 98, 110] -> [73, 83, 66, 78]
Bây giờ bạn sẽ nhân chúng theo modulo phần tử khôn ngoan 95
(để ở trong phạm vi có thể in):
[83, 80, 76, 73] ⊗ [73, 83, 66, 78] -> [74, 85, 76, 89]
Thêm 32
để quay lại phạm vi [32..126]
:
[74, 85, 76, 89] -> [106, 117, 108, 121]
Và bước cuối cùng là ánh xạ chúng trở lại các ký tự ASCII:
[106, 117, 108, 121] -> "july"
Quy tắc
- Bạn sẽ viết một chương trình / hàm thực hiện các bước được mô tả trên hai chuỗi và in hoặc trả về chuỗi kết quả
- Định dạng đầu vào rất linh hoạt: bạn có thể lấy hai chuỗi, một chuỗi các chuỗi, danh sách các chuỗi, v.v.
- Đầu vào có thể bao gồm một hoặc hai chuỗi trống
- Đầu vào sẽ là các ký tự trong phạm vi có thể in (
[32..126]
) - Đầu ra được in ra bàn điều khiển hoặc bạn trả về một chuỗi
- Đầu ra được phép có khoảng trắng ở cuối
Các trường hợp thử nghiệm
"isbn", "split" -> "july"
"", "" -> ""
"", "I don't matter" -> ""
" ", "Me neither :(" -> " "
"but I do!", "!!!!!!!!!" -> "but I do!"
'quotes', '""""""' -> 'ck_iKg'
"wood", "hungry" -> "yarn"
"tray", "gzip" -> "jazz"
"industry", "bond" -> "drop"
"public", "toll" -> "fall"
"roll", "dublin" -> "ball"
"GX!", "GX!" -> "!!!"
"4 lll 4", "4 lll 4" -> "4 lll 4"
"M>>M", "M>>M" -> ">MM>"
Lưu ý : Các trích dẫn chỉ dành cho khả năng đọc, trong trường hợp thử nghiệm thứ 6 tôi đã sử dụng '
thay vì "
.
abc, def -> [['a', 'b', 'c'], ['d', 'e', 'f']]