Autor Wątek: Kodowanie liczb.  (Przeczytany 782 razy)

Offline Timati

  • Użytkownik

# Grudzień 21, 2011, 17:54:30
Witam.

Szukam jakiegoś krótkiego algorytmu na kodowanie i dekodowanie liczby. Jak najkrótszego.

Napisałem w LUA implementację http://en.wikipedia.org/wiki/Golomb_coding

--GOLOMB_CODING
function math.log2( n )
return math.log( n ) /  math.log( 2 )
end

function golombEncode( N, M )
q = N / M
bite = ""
for i = 0, q do
bite = bite .. "1"
bite = bite .. "0"
v = 1
end
for i = 0, math.log2( M ) do
bite = bite .. tostring(v)
v = 1
end
return bite
end

Dla golombEncode( 1, 16 )  zwraca 1011111.

1) Czy dobrze zaimplementowałem ?
2) Jakie algorytmy polecacie do kodowania liczb całkowitych dodatnich, jak najkrótszy najlepiej.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Timati

  • Użytkownik

# Grudzień 21, 2011, 18:20:53
Napisałem swój własny encoder, ale zastanawiam się co tu dodatkowo wprowadzić by nie domyśleć się kolejności alfabetu.

Napisałem swój własny encoder, ale zastanawiam się co tu dodatkowo wprowadzić by nie domyśleć się kolejności alfabetu.

[code]local chars = {
[ 1 ] = "a",
[ 2 ] = "b",
[ 3 ] = "c",
[ 4 ] = "d",
[ 5 ] = "e",
[ 6 ] = "f",
[ 7 ] = "g",
[ 8 ] = "h",
[ 9 ] = "i"
}

function idEncode( n )
local n = tostring( n ):reverse()
local initstring = ""
for i = 1, #n do
initstring = initstring..chars[ tonumber( string.sub( n, i, i ) ) or 0 ]
end
end

Dla 12 zwraca ab itd.
« Ostatnia zmiana: Grudzień 21, 2011, 18:28:03 wysłana przez Timati »

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Grudzień 21, 2011, 19:05:10
Ale co właściwie chcesz osiągnąć? :)

Offline Kos

  • Użytkownik
    • kos.gd

# Grudzień 21, 2011, 19:08:07
Szukam jakiegoś krótkiego algorytmu na kodowanie i dekodowanie liczby. Jak najkrótszego.

ROT13 ... yy, dla liczb? ROT5 :). Do napisania w 1 linijce ekranu.

Offline Timati

  • Użytkownik

# Grudzień 21, 2011, 21:17:58
Własny już napisałem.