در این جلسه تیم کدگیت را با آموزش کد گری در جاوا همراهی کنید. پیش نیاز این آموزش شامل موارد زیر است:
- آشنایی با متد
- آشنایی با روش بازگشتی
- آشنایی با if
کد گری
نمایش کدهای دودویی که بعد از فرانک گری (Frank Gray) به نام کد گری شناخته شد که یک سیستم از اعداد دودویی است که هر دو عدد متوالی فقط در یک بیت با هم اختلاف داشته باشند. امروزه کدگری به طور گسترده برای تصحیح اشکالات در سیستم ارتباط دیجیتالی مثل کابلهای تلویزیونی و تلویزیونهای دیجیتالی جهانی استفاده میشود.

پیاده سازی کد گری در جاوا
برای پیاده سازی کد گری در جاوا ما از ایده تکرار الگوی هر رقم با رقم دیگر استفاده کردیم بدین صورت که مثلا بیت اول اعداد 1 تا 4 را ببینید بدین صورت است 0110 و همین الگو دوباره برای 4 رقم بعدی تکرار شده است. کد پیاده سازی کد گری در جاوا به صورت زیر است:
public static void yarg(String prefix, int n) {
if (n == 0) System.out.println(prefix);
else {
gray(prefix + "1", n - 1);
yarg(prefix + "0", n - 1);
}
}
public static void gray(String prefix, int n) {
if (n == 0) System.out.println(prefix);
else {
gray(prefix + "0", n - 1);
yarg(prefix + "1", n - 1);
}
}
کد بالا شامل دو متد زیر است:
- Gray: در این متد قسمت اول الگویی که گفته شد وارد کد میشود
- Yarg: در این متد قسمت دوم الگویی که در بالا توضیح داده شد وارد کد میشود.
متد های gray و yarg شامل 2 ورودی هستند یکی پیشوند یا همان رقم های قبلی و دیگری تعداد بیت باقیمانده. در هر دو متد بررسی میکنیم تعداد بیت صفر است یا خیر. در صورت صفر بودن عدد را چاپ میکنیم و در غیر این صورت الگوریتم را ادامه میدهیم.
تست کد گری در جاوا
برای تست کد گری، کد main زیر را بزنید.
public static void main(String[] args) {
int n = 3;
gray("", n);
}
متغییر n تعداد بیت است. برای تعداد بیت 3 خروجی برنامه به صورت زیر است:
000
001
011
010
110
111
101
100