Herkes çalışma uzunluğu kodlamasının ne olduğunu bilir. Zaten birçok kod-golf zorluğunun konusu olmuştur. Belli bir varyasyona bakacağız.
Misal
Normal: 11222222222222222222233333111111111112333322
Run-length: 112(19)3(5)1(11)2333322
Parantez içindeki sayı, önceki sembolün kaç kez meydana geldiğini belirtir. Örnekte, yalnızca 5 veya daha fazla karakterden oluşan çalışmalar kodlanmıştır. Bunun nedeni, 4 veya daha düşük kodlama işlemlerinin karakter sayısını iyileştirmemesidir.
Meydan okuma
Çalışma uzunluğu kodlamasının bu varyasyonunu uygulayan, ancak iki sembolün çalışmalarını da kodlayabilen bir işlev / program yazın. İki sembolün çalışmaları da parantez içine alınmalıdır. Bir grup ayrıca parantez içine alınacaktır. Programınız bir dizeyi giriş olarak kabul etmeli ve değiştirilmiş dizeyi dizeyi kısaltan değişikliklerle çıkarmalıdır.
Misal
Normal: 111244411144411144411167676767222222277777222222277777123123123123
Double run-length: 1112((444111)(3))67676767((2(7)7(5))(2))123123123123
notlar
111
(1(3)
) kodlaması daha kısa olmadığı için kodlanmadı .- Dize
444111
, kodlanacak şekilde 3 kez oluşur. 676767
kodlanamadı çünkü((67)(4))
öncekinden daha uzun.222222277777222222277777
olarak kodlanmadı((222222277777)(2))
. Neden? Çünkü222222277777
kendisi azaltılabilir2(7)7(5)
.123123123123
programınızın üç değil iki sembolden oluşması gerektiği için kodlanmamıştır.
Bu kod golfen kısa kod kazanır. Tie-breaker erken teslimdir.
Bir şey kaçırdıysam ya da bir şeyden emin değilseniz lütfen yorumlarda bana haber verin.
441444144414
-> ((4414)(3))
?
4414
teknik olarak 4 serisidir. İfadelerim sadece kötü.
111111111
olarak kodlanmış (1)(9)
?
67
s var.