Temel dönüşüm (CJam)
Boş bir bayt ile başlamayan ASCII dizelerini kodlamanın kolay bir yolu, taban 128'den tam sayıya, ardından taban 256'ya dönüştürmektir:
128b256b:c e# Prints encoded string.
128b256b:c`"256b128b:c" e# Prints encoded string with decoder.
Bu, her ASCII karakterini kodlamak için 7 bit kullanır.
Orijinal dize sadece örneğin küçük harfler, oluşur ve bir ile hiçbir başlangıç yaparsa a , biz haritalama başlayabilirsiniz "a...z"
için [0 ... 25]
yukarıdaki gibi devam edin:
'afm26b256b:c e# Prints encoded string.
'afm26b256b:c`"256b26b'af+" e# Prints encoded string with decoder.
Son olarak, orijinal dize yalnızca birkaç benzersiz karaktere sahipse (ASCII sanatında ortaktır), alfabeyi açıkça belirtmek daha iyidir.
Örneğin:
" +-/\|"f#6b256b:c e# Prints encoded string.
" +-/\|"f#6b256b:c`"256b6b"" +-/\|"`"f=" e# Prints encoded string with decoder.
Temel kural olarak, orijinal dizginin ilk karakterinin alfabenin ikinci karakteri olmasını, orijinal dizginin bir sonraki belirgin karakterinin alfabenin ilk karakteri, orijinal dizginin bir sonraki karakteri olmasını istersiniz . alfabenin üçüncü karakteri, orijinal dizgenin bir sonraki belirgin karakteri, alfabenin dördüncü karakteri vb.
Son örneğin kodlayıcısı aşağıdaki gibi çalışır:
" +-/\|"f# e# Replace each character by its index in that string.
6b256b e# Convert from base 6 (length of the alphabet) to base 256.
:c e# Cast each digit to character.
Son örneğin kod çözücüsü aşağıdaki şekilde çalışır:
256b6b e# Convert from base 256 to base 6.
" +-/\|"f= e# Replace each digit by the corresponding character of the alphabet.