All submissions

Validate Configuration Register Layout

Code

#include <stdio.h>

typedef struct
{
    unsigned short reg;
} ConfigRegister;

int validate_config(ConfigRegister *cfg)
{
    // Write logic using pointer access
    int k = 0;
    int i = 0;
    while (k < 4)
    {
        if (k == 0)
        {
            if ((cfg->reg >> i) & 1)
            {
                i++;
                k++;
            }
            else
            {
                return 0;
            }
        }
        if (k == 1)
        {
            i++;
            k++;
        }

        if (k == 2)
        {
            if (((cfg->reg >> i) & 3) == 3)
            {
                return 0;
            }
            else
            {
                i = i + 2;
                k++;
            }
        }

        if (k == 3)
        {
            int temp;
            for (int j = i; j < 16; j++)
            {
                temp = (cfg->reg >> j) | 0;
                if (temp)
                {
                    return 0;
                }
            }
            return 1;
        }
    }

    return 0;
}

int main()
{
    ConfigRegister cfg;
    scanf("%hx", &cfg.reg);

    int result = validate_config(&cfg);
    printf("%d", result);

    return 0;
}

Solving Approach

 

 

 

Loading...

Input

0005

Expected Output

1