Arka fon
Hareket-önüne dönüşümü (MTF) entropi kodlama teknikleri performansını artırmak için tasarlanmış bir veri kodlayan algoritmasıdır.
Gelen bzip2 sıkıştırma algoritması , bu sonra uygulanır , Burrows-Wheeler dönüşümü (görüldüğü gibi Burrows, Wheeler ve Geri ), küçük, kolaylıkla sıkıştırılabilir olmayan negatif tamsayı içine tekrar karakter gruplarının dönüm amacı ile,.
Tanım
Bu zorluğun amacı için, MTF'nin yazdırılabilir ASCII sürümünü aşağıdaki gibi tanımlayacağız:
Bir giriş bir dizge s , boş bir dizi almak r , dizge d , her bir karakter için aşağıdaki tüm ASCII karakter (0x7E için 0x20) ve tekrar c ait s :
Dizinini ekleme , c olarak d için r .
Hareket c ön d , yani kaldırma c den d ve geri kalanı için çizgi yerleştirirler.
Son olarak, r öğelerini orijinal d' de dizinler olarak alır ve karşılık gelen karakterleri getiririz.
Adım adım örnek
INPUT: "CODEGOLF"
0. s = "CODEGOLF"
d = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = []
1. s = "ODEGOLF"
d = "C !\"#$%&'()*+,-./0123456789:;<=>?@ABDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35]
2. s = "DEGOLF"
d = "OC !\"#$%&'()*+,-./0123456789:;<=>?@ABDEFGHIJKLMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47]
3. s = "EGOLF"
d = "DOC !\"#$%&'()*+,-./0123456789:;<=>?@ABEFGHIJKLMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47 37]
4. s = "GOLF"
d = "EDOC !\"#$%&'()*+,-./0123456789:;<=>?@ABFGHIJKLMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47 37 38]
5. s = "OLF"
d = "GEDOC !\"#$%&'()*+,-./0123456789:;<=>?@ABFHIJKLMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47 37 38 40]
6. s = "LF"
d = "OGEDC !\"#$%&'()*+,-./0123456789:;<=>?@ABFHIJKLMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47 37 38 40 3]
7. s = "F"
d = "LOGEDC !\"#$%&'()*+,-./0123456789:;<=>?@ABFHIJKMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47 37 38 40 3 45]
8. s = ""
d = "FLOGEDC !\"#$%&'()*+,-./0123456789:;<=>?@ABHIJKMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47 37 38 40 3 45 41]
OUTPUT: "COEFH#MI"
Görev
Yazdırılabilir ASCII MTF'yi (yukarıda tanımlandığı gibi) uygulayan bir program veya işlev yazın.
Test senaryoları
Input: Programming Puzzles & Code Golf
Output: Prpi"do lp%((uz rnu&3!P/o&$U$(p
Input: NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN BATMAN!
Output: Na! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !!"DDUP"%'
Input: Two more questions and I have bzip2 in less than 100 bytes!
Output: Twp#o"si$sv#uvq(u$(l#o#W!r%w+$pz,xF%#,"x(. #0--'$GG ".z(**:
Ek kurallar
Bir dizenin MTF'sini hesaplayan yerleşik bir işleci kullanamazsınız.
Çıktı için STDOUT'u seçerseniz kodunuz bir satırsonu yazdırabilir.
Kodunuzun 1000 veya daha az yazdırılabilir ASCII karakteri (0x20 - 0x7E) için giriş yapması gerekir.
Standart kod golf kuralları geçerlidir. Bayt cinsinden en kısa gönderim kazanır.