Generación de código Gray de N bits a partir de K

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *