Lyndon sözcük çarpanlarına ayırma


11

Arka fon

Bir Lyndon kelimesi kesinlikle tüm diğer rotasyonlar daha sözlük sırasında küçük olan bir boş olmayan bir dizedir. Lyndon kelimelerinin bir araya gelmesi olarak herhangi bir dizgiyi benzersiz olarak hesaba katmak mümkündür, böylece bu alt sözcükler sözlükbilimsel olarak artmaz; senin meydan okuman bunu mümkün olduğunca kısa ve öz yapmak

ayrıntılar

Sonuç olarak, herhangi bir yazdırılabilir ASCII dizesinin Lyndon sözcük çarpanlarına ayırmasını numaralandıran bir işlevi veya programı uygulamalısınız. Karakterler kod noktalarıyla karşılaştırılmalı ve tüm standart giriş ve çıkış yöntemlerine izin verilmelidir. golfü için her zamanki gibi baytlardaki en kısa program kazanır.

Test Durumları

''           []
'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']


Bunun <=ness ile bölünmeye eşdeğer olduğunu unutmayın . (Bunu daha iyi ifade etmek için hiçbir fikrim yok: |)
CalculatorFeline

Bu, ilk karakteri ve tüm karakterlerin önekini art arda almaktan daha büyük mü?
xnor

'abac' bir Lyndon kelimesidir.
user1502040

@ user1502040 Görüyorum ki, bağlar ilginç. Bunu yakalayan bazı test örnekleri eklemenizi öneririm.
xnor

Yanıtlar:


5

Pyth, 17 16 bayt

ISAACG sayesinde -1 bayt!

hf!ff>Y>YZUYT+./

Çevrimiçi deneyin!

açıklama

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+./1 baytlık boş dizgi durumu oluşturur.
isaacg

Güzel, teşekkürler! Daha kısa bir yol olması gerektiğini hissettim.
notjagan


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.