Nhân tố từ Lyndon


11

Lý lịch

Một từ Lyndon là một chuỗi không trống, nó hoàn toàn nhỏ hơn về mặt từ vựng so với tất cả các phép quay khác của nó. Có thể tính bất kỳ chuỗi nào là duy nhất khi ghép các từ Lyndon sao cho các từ khóa này không tăng từ vựng; thách thức của bạn là làm điều này ngắn gọn nhất có thể.

Chi tiết

Bạn nên triển khai một hàm hoặc chương trình liệt kê hệ số từ Lyndon của bất kỳ chuỗi ASCII có thể in nào, theo thứ tự, xuất ra các chuỗi con kết quả dưới dạng một mảng hoặc một luồng nào đó. Các ký tự phải được so sánh bởi các điểm mã của chúng và tất cả các phương thức nhập và xuất chuẩn được cho phép. Như thường lệ đối với , chương trình ngắn nhất tính bằng byte sẽ thắng.

Các trường hợp thử nghiệm

''           []
'C'          ['C']
'aaaaa'      ['a', 'a', 'a', 'a', 'a']
'K| '        ['K|', ' ']
'abaca'      ['abac', 'a']
'9_-$'       ['9_', '-', '$']
'P&O(;'      ['P', '&O(;']
'xhya{Wd$'   ['x', 'hy', 'a{', 'Wd', '$']
'j`M?LO!!Y'  ['j', '`', 'M', '?LO', '!!Y']
'!9!TZ'      ['!9!TZ']
'vMMe'       ['v', 'MMe']
'b5A9A9<5{0' ['b', '5A9A9<5{', '0']


Lưu ý rằng điều này tương đương với việc chia tách bởi <=Ness. (Tôi không biết làm thế nào để diễn đạt điều này tốt hơn: |)
CalculatorFeline

Điều này có tương đương với việc liên tục lấy ký tự đầu tiên và tiền tố của tất cả các ký tự lớn hơn nó không?
xnor

@xnor số 'abac' là một từ Lyndon.
user1502040

@ user1502040 Tôi thấy, quan hệ là thú vị. Tôi đề nghị thêm một số trường hợp thử nghiệm bắt được điều này.
xnor

Câu trả lời:


5

Bình thường, 17 16 byte

-1 byte nhờ isaacg!

hf!ff>Y>YZUYT+./

Hãy thử trực tuyến!

Giải trình

hf!ff>Y>YZUYT+./
              ./    Take all possible disjoint substring sets of [the input]
             +      plus [the input] itself (for the null string case).
 f                  Filter for only those sets which
  !f        T       for none of the substrings
    f  >YZUY        is there a suffix of the substring
     >Y             lexographically smaller than the substring itself.
h                   Return the first (i.e. the shortest) such set of substrings.

1
hf!ff>Y>YZUYT+./tài khoản cho trường hợp chuỗi trống với 1 byte ít hơn.
isaacg

Rất vui, cảm ơn! Tôi cảm thấy như phải có một cách ngắn hơn.
notjagan


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.