Arka fon
BWT ( Burrows, Wheeler ve Back'de görüldüğü gibi) ve MTF'yi ( yazdırılabilir ASCII cephesine taşı bölümünde görüldüğü gibi ) uyguladıktan sonra, bzip2 kompresörü oldukça benzersiz bir çalışma uzunluğu kodlaması biçimi uygular.
Tanım
Bu zorluğun amacı için BRLE dönüşümünü şu şekilde tanımlarız:
Bir giriş dizesi Verilen s aşağıdakileri yapın sadece 0x20 ve 0x7A arasındaki kod noktaları ile ASCII karakterlerden oluştuğundan:
Eşit karakterlerin her bir çalışmasını, karakterin tek bir oluşumuyla değiştirin ve birinciden sonra tekrar sayısını depolayın.
Tekrar sayısını kodlama karakter ilk geçtiği sonra kullanarak örten baz-2 sayılandırma ve sembolleri
{
ve}
.Bir negatif olmayan bir tamsayı , n dize olarak kodlanan b k b ... 0 , öyle ki , n = 2 k ı, (b k ) + ... + 2 0 ı (b , 0 ) , ı (
{
) 1 = ve i (}
) = 2 .Bu sunumun her zaman benzersiz olduğunu unutmayın. Örneğin, 0 sayısı boş bir dize olarak kodlanır.
Karşılık gelen karakterin tek bir tekrarından sonra tekrar sayısını kodlayan kıvırcık parantez dizesini ekleyin.
Adım adım örnek
Input: "abbcccddddeeeeeffffffggggggghhhhhhhh"
Step 1: "abcdefgh" with repetitions 0, 1, 2, 3, 4, 5, 6, 7
Step 2: "" "{" "}" "{{" "{}" "}{" "}}" "{{{"
Step 3: "ab{c}d{{e{}f}{g}}h{{{"
Görev
STDIN'den veya komut satırı veya işlev bağımsız değişkeni olarak tek bir dize okuyan ve BRLE'yi veya giriş dizesinin tersini yazdıran veya döndüren ilgili bir program veya işlev uygulayın.
Giriş kıvrımlı parantez içermiyorsa, BRLE uygulayın. Giriş kıvırcık köşeli ayraç içeriyorsa, tersini uygulayın.
Örnekler
INPUT: CODEGOLF
OUTPUT: CODEGOLF
INPUT: PROGRAMMING
OUTPUT: PROGRAM{ING
INPUT: PUZ{LES
OUTPUT: PUZZLES
INPUT: 444488888888GGGGGGGGGGGGGGGGWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
OUTPUT: 4{{8{{{G{{{{W{{{{{
INPUT: y}}}{{
OUTPUT: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
Ek kurallar
Sen olamaz Brle veya dize onun tersini hesaplamak herhangi yerleşik ins kullanın.
Yerleşikleri aşağıdakileri kullanabilirsiniz:
Yineleme sayısı iki temelli taban-2'de saklanmadığı sürece, bir dizenin RLE veya RLD'sini hesaplayın.
Herhangi bir tür temel dönüşüm gerçekleştirin.
Çıktı için STDOUT'u seçerseniz kodunuz bir satırsonu yazdırabilir.
Kodunuz, 0x20 ila 0x7A aralığındaki 1000 veya daha az ASCII karakteri ve ayrıca küme parantezleri (0x7B ve 0x7D) için çalışmalıdır.
Girdi köşeli parantez içeriyorsa, bunun bir dizeye BRLE uygulanmasının geçerli bir sonucu olduğunu varsayabilirsiniz.
Standart kod golf kuralları geçerlidir. Bayt cinsinden en kısa gönderim kazanır.