Skip to content

Instantly share code, notes, and snippets.

@rajatdiptabiswas
Created August 17, 2018 12:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rajatdiptabiswas/2373372340a37a1b538c609c9d7132e7 to your computer and use it in GitHub Desktop.
Save rajatdiptabiswas/2373372340a37a1b538c609c9d7132e7 to your computer and use it in GitHub Desktop.
Generate n-bit gray codes. Given a number n, generate bit patterns from 0 to 2^n-1 such that successive patterns differ by one bit.
import java.io.*;
import java.lang.*;
import java.util.*;
class nBitGrayCode {
public static void main(String[] args) {
int n = 3;
ArrayList<StringBuilder> list = new ArrayList<>();
list.add(new StringBuilder("0"));
list.add(new StringBuilder("1"));
ArrayList<StringBuilder> list1 = new ArrayList<>();
ArrayList<StringBuilder> list2 = new ArrayList<>();
for (StringBuilder s : list) {
list1.add(new StringBuilder(s));
list2.add(new StringBuilder(s));
}
for (int i = 0; i < n-1; i++) {
for (StringBuilder a : list1)
a.insert(0, "0");
// System.out.println(list1);
for (StringBuilder b : list2)
b.insert(0, "1");
// System.out.println(list2);
list.clear();
list.addAll(list1);
list.addAll(list2);
list1.clear();
for (StringBuilder s : list) {
list1.add(new StringBuilder(s));
}
list2.clear();
for (StringBuilder s : list) {
list2.add(new StringBuilder(s));
}
System.out.println(list + "\n");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment