The answer is Salted Password Hashing. The process is similar to hashing., but with a twist. A random value is introduced for each user. This salt value<span> is included with the password when the hash value is calculated and is stored with the user record. Including the salt value means that two users with the same password will have different password hashes.</span>
The below code will help you to solve the given problem and you can execute and cross verify with sample input and output.
#include<stdio.h>
#include<string.h>
int* uniqueValue(int input1,int input2[])
{
int left, current;
static int arr[4] = {0};
int i = 0;
for(i=0;i<input1;i++)
{
current = input2[i];
left = 0;
if(current > 0)
left = arr[(current-1)];
if(left == 0 && arr[current] == 0)
{
arr[current] = input1-current;
}
else
{
for(int j=(i+1);j<input1;j++)
{
if(arr[j] == 0)
{
left = arr[(j-1)];
arr[j] = left - 1;
}
}
}
}
return arr;
}
Answer: see description
Explanation:
first we accommodate the bit pattern in a matrix of 4x4 which is the minimum length checksum field, now with even parity two-dimensional scheme we need to complete this matrix by adding one row and one column by adding at the end of each row a 1 or a 0 to complete pairs of 1's:
we have
![\left[\begin{array}{cccc}1&1&1&0\\0&1&1&0\\1&0&0&1\\1&1&0&1\end{array}\right]](https://tex.z-dn.net/?f=%5Cleft%5B%5Cbegin%7Barray%7D%7Bcccc%7D1%261%261%260%5C%5C0%261%261%260%5C%5C1%260%260%261%5C%5C1%261%260%261%5Cend%7Barray%7D%5Cright%5D)
so we complete with this, adding a row at the end which matches a pair number of 1's
![\left[\begin{array}{ccccc}1&1&1&0&1\\0&1&1&0&0\\1&0&0&1&0\\1&1&0&1&1\\1&1&0&0&0\end{array}\right]](https://tex.z-dn.net/?f=%5Cleft%5B%5Cbegin%7Barray%7D%7Bccccc%7D1%261%261%260%261%5C%5C0%261%261%260%260%5C%5C1%260%260%261%260%5C%5C1%261%260%261%261%5C%5C1%261%260%260%260%5Cend%7Barray%7D%5Cright%5D)
I think it’s cropping could be wrong though