Dado un valor N y K , la tarea es generar código Gray de N bits a partir del valor K.
Ejemplos:
Entrada: N = 2, K = 3
Salida: 3 2 0 1
Explicación:
3 -> 11
2 -> 10
0 -> 00
1 -> 01
Cada valor difiere solo en un bit del siguiente valor en su representación binaria.
Entrada: N = 3, K = 2
Salida: 2 3 1 0 4 5 7 6
Acercarse:
- El código gris son números con distancia de Hamming 1 entre dos números consecutivos.
- El XOR con cada elemento de código Gray de N bits genera una secuencia de distancia de Hamming de 1.
- Como el primer elemento del código Gray de N bits es K, se puede obtener haciendo XOR con 0, es decir (K ^ 0) = K.
- Entonces, la secuencia comenzará con 0 y cada elemento consecutivo se diferenciará por solo un bit en su representación binaria.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program Generating N-bit // Gray Code starting from K #include <bits/stdc++.h> using namespace std; // Function to Generating N-bit // Gray Code starting from K void genSequence(int n, int val) { for (int i = 0; i < (1 << n); i++) { // Generate gray code of corresponding // binary number of integer i. int x = i ^ (i >> 1) ^ val; cout << x << " "; } } // Driver code int main() { int n = 3, k = 2; genSequence(n, k); return 0; }
Java
// Java program Generating N-bit // Gray Code starting from K class GFG { // Function to Generating N-bit // Gray Code starting from K static void genSequence(int n, int val) { for (int i = 0; i < (1 << n); i++) { // Generate gray code of corresponding // binary number of integer i. int x = i ^ (i >> 1) ^ val; System.out.print(x + " "); } } // Driver code public static void main (String[] args) { int n = 3, k = 2; genSequence(n, k); } } // This code is contributed by AnkitRai01
Python3
# Python3 program Generating N-bit # Gray Code starting from K # Function to Generating N-bit # Gray Code starting from K def genSequence(n, val) : for i in range(1 << n) : # Generate gray code of corresponding # binary number of integer i. x = i ^ (i >> 1) ^ val; print(x, end= " "); # Driver code if __name__ == "__main__" : n = 3; k = 2; genSequence(n, k); # This code is contributed by AnkitRai01
C#
// C# program Generating N-bit // Gray Code starting from K using System; class GFG { // Function to Generating N-bit // Gray Code starting from K static void genSequence(int n, int val) { for (int i = 0; i < (1 << n); i++) { // Generate gray code of corresponding // binary number of integer i. int x = i ^ (i >> 1) ^ val; Console.Write(x + " "); } } // Driver code public static void Main() { int n = 3, k = 2; genSequence(n, k); } } // This code is contributed by AnkitRai01
Javascript
<script> // Javascript program Generating N-bit // Gray Code starting from K // Function to Generating N-bit // Gray Code starting from K function genSequence(n, val) { for (let i = 0; i < (1 << n); i++) { // Generate gray code of corresponding // binary number of integer i. let x = i ^ (i >> 1) ^ val; document.write(x + " "); } } // Driver code let n = 3, k = 2; genSequence(n, k); </script>
Producción:
2 3 1 0 4 5 7 6
Publicación traducida automáticamente
Artículo escrito por ShrabanaBiswas y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA