مبحث pair function در کدگذاری
استفاده از این تابع و تابع معکوسش شما می توانین دو عدد را در یک عدد یا برعکس ذخیره کنین و اون را بازیابی کنین
با استفاده از تابع زیر شما می توانین یک عدد بزرگ دلخواه را بدین و دو عدد کوچکتر بدست بیارین
با یک ورودی و دو خروجی [x,y]=revLpPair(z) تابع
function [x,y]=revLpPair(z) % getz and return x, y w=floor(( sqrt((8*z) +1)-1)/2); t=(w^2 +w )/2; y=(z-t); x=w-y; % w1=w; % a=floor(w/y); % x=w-a*y; end
کد فراخوانی این تابع و نمونه خروجی:
[x,y]=revLpPair(8245167) خروجی x = 2723 y = 1337
برای تبدیل معکوس می توانین از تابع z=lpFunction(x,y) استفاده کنین
کد تابع z=lpFunction(x,y) با دو ورودی و یک خروجی
function z=lpFunction(x,y) z=(((x+y+1)*(x+y))/2)+y; end
کد فراخوانی تابع z=lpFunction(x,y) و خروجی آن:
>> [x,y]=revLpPair(8245167) x = 2723 y = 1337 >> z=lpFunction(x,y) z = 8245167 >>
البته فراخوانی هر دو تابع را یکجا گذاشتم.
کاربرد این توابع برای کدگذاری در درخت ها می باشد، دوستانی که در حوزه کدگذاری داده کار می کنند، برای تحقیق بیشتر می توانند به این ادرس سر بزنند، این را هم اضافه می کنم که این توابع از قانون جمع متوالی گاوس پیروی می می کنه، شما می توانید توابع مشابه را خودتون طراحی و برای کاربرد خاص ازش استفاده کنین