Thời kỳ địa phương
Lấy một chuỗi không trống s . Chu kỳ cục bộ của s tại chỉ số i là số nguyên dương n nhỏ nhất sao cho với mỗi 0 ≤ k <n , chúng ta có s [i + k] = s [i - n + k] mỗi khi cả hai bên được xác định. Ngoài ra, đó là độ dài tối thiểu của một chuỗi không trống w sao cho nếu nối ww được đặt bên cạnh s sao cho bản sao thứ hai của w bắt đầu tại chỉ số i của s , thì hai chuỗi đồng ý bất cứ nơi nào chúng trùng nhau.
Ví dụ: hãy tính khoảng thời gian cục bộ của s = "abaabbab" tại chỉ số 2 (dựa trên 0).
- Hãy thử n = 1 : sau đó s [2 + 0] s [2-1 + 0] , vì vậy lựa chọn này không chính xác.
- Hãy thử n = 2 : sau đó s [2 + 0] = s [2-2 + 0] nhưng s [2 + 1] ≠ s [2-2 + 1] , vì vậy điều này cũng không đúng.
- Thử n = 3 : sau đó s [2 + 0-3] không được xác định, s [2 + 1] = s [2-3 + 1] và s [2 + 2] = s [2-3 + 2] . Do đó, thời kỳ địa phương là 3.
Dưới đây là một hình ảnh của các thời kỳ địa phương bằng cách sử dụng định nghĩa thứ hai, với dấu chấm phẩy được thêm vào giữa hai bản sao của w cho rõ ràng:
index a b a a b b a b period
0 a;a 1
1 b a;b a 2
2 a a b;a a b 3
3 a;a 1
4 b b a b a a;b b a b a a 6
5 b;b 1
6 a b b;a b b 3
7 b a;b a 2
Lưu ý rằng w không nhất thiết là một chuỗi con của s . Điều này xảy ra ở đây trong trường hợp chỉ số-4.
Nhiệm vụ
Đầu vào của bạn là một chuỗi ký tự không trống của các ký tự ASCII viết thường. Nó có thể được lấy làm danh sách các ký tự nếu muốn. Đầu ra của bạn sẽ là danh sách chứa khoảng thời gian cục bộ của s tại mỗi chỉ số của nó. Trong ví dụ trên, đầu ra chính xác sẽ là [1,2,3,1,6,1,3,2] .
Số byte thấp nhất trong mỗi ngôn ngữ sẽ thắng. Luật golf tiêu chuẩn được áp dụng.
Các trường hợp thử nghiệm
a -> [1]
hi -> [1, 2]
www -> [1, 1, 1]
xcxccxc -> [1, 2, 2, 5, 1, 3, 2]
abcbacb -> [1, 4, 7, 7, 7, 3, 3]
nininini -> [1, 2, 2, 2, 2, 2, 2, 2]
abaabbab -> [1, 2, 3, 1, 6, 1, 3, 2]
woppwoppw -> [1, 4, 4, 1, 4, 4, 4, 1, 4]
qwertyuiop -> [1, 10, 10, 10, 10, 10, 10, 10, 10, 10]
deededeededede -> [1, 3, 1, 5, 2, 2, 5, 1, 12, 2, 2, 2, 2, 2]
abababcabababcababcabababcaba -> [1, 2, 2, 2, 2, 7, 7, 7, 7, 2, 2, 2, 19, 19, 5, 5, 2, 5, 5, 12, 12, 2, 2, 2, 7, 7, 5, 5, 2]
;
trong ví dụ của bạn). Điều đó sẽ thoát khỏi vị trí dẫn đầu 1.
qwertyuiop
, w sẽ là phiên bản xoay củaqwertyuiop
. Xem thêm ví dụ ở chỉ số 4: w không nhất thiết là một chuỗi con của s .