Recent Post
Forming a Magic Square.c-HackerRank
- Get link
- X
- Other Apps
Problem-We define a magic square to be an n*n matrix of distinct
positive integers from 1 to (n^2) where the sum of any row, column,
or diagonal of length n is always equal to the same number: the magic constant.
You
will be given a 3*3 matrix s of integers in the inclusive range
[1,9]. We can convert any digit a to any other digit b in the range
[1,9] at cost of |a-b|. Given s, convert it into a magic square at minimal cost.
Print this cost on a new line.
Solution-
#include <assert.h>
#include <limits.h>
#include <math.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int fun0(int arr[3][3])
{
int sum;
sum=(abs(8-arr[0][0])+abs(3-arr[0][1])+abs(4-arr[0][2])+
abs(1-arr[1][0])+
abs(5-arr[1][1])+abs(9-arr[1][2])+abs(6-arr[2][0])+
abs(7-arr[2][1])+abs(2-arr[2][2]));
return(sum);
}
int fun1(int arr[3][3])
{
int sum;
sum=(abs(6-arr[0][0])+abs(1-arr[0][1])+abs(8-arr[0][2])+
abs(7-arr[1][0])+
abs(5-arr[1][1])+abs(3-arr[1][2])+abs(2-arr[2][0])+
abs(9-arr[2][1])+abs(4-arr[2][2]));
return(sum);
}
int fun2(int arr[3][3])
{
int sum;
sum=(abs(2-arr[0][0])+abs(7-arr[0][1])+abs(6-arr[0][2])+
abs(9-arr[1][0])+
abs(5-arr[1][1])+abs(1-arr[1][2])+abs(4-arr[2][0])+
abs(3-arr[2][1])+abs(8-arr[2][2]));
return(sum);
}
int fun3(int arr[3][3])
{
int sum;
sum=(abs(4-arr[0][0])+abs(9-arr[0][1])+abs(2-arr[0][2])+
abs(3-arr[1][0])+
abs(5-arr[1][1])+abs(7-arr[1][2])+abs(8-arr[2][0])+
abs(1-arr[2][1])+abs(6-arr[2][2]));
return(sum);
}
int fun4(int arr[3][3])
{
int sum;
sum=(abs(8-arr[0][0])+abs(1-arr[0][1])+abs(6-arr[0][2])+
abs(3-arr[1][0])+
abs(5-arr[1][1])+abs(7-arr[1][2])+abs(4-arr[2][0])+
abs(9-arr[2][1])+abs(2-arr[2][2]));
return(sum);
}
int fun5(int arr[3][3])
{
int sum;
sum=(abs(6-arr[0][0])+abs(7-arr[0][1])+abs(2-arr[0][2])+
abs(1-arr[1][0])+
abs(5-arr[1][1])+abs(9-arr[1][2])+abs(8-arr[2][0])+
abs(3-arr[2][1])+abs(4-arr[2][2]));
return(sum);
}
int fun6(int arr[3][3])
{
int sum;
sum=(abs(2-arr[0][0])+abs(9-arr[0][1])+abs(4-arr[0][2])+
abs(7-arr[1][0])+
abs(5-arr[1][1])+abs(3-arr[1][2])+abs(6-arr[2][0])+
abs(1-arr[2][1])+abs(8-arr[2][2]));
return(sum);
}
int fun7(int arr[3][3])
{
int sum;
sum=(abs(4-arr[0][0])+abs(3-arr[0][1])+abs(8-arr[0][2])+
abs(9-arr[1][0])+
abs(5-arr[1][1])+abs(1-arr[1][2])+abs(2-arr[2][0])+
abs(7-arr[2][1])+abs(6-arr[2][2]));
return(sum);
}
int main()
{
int arr[3][3];
int f[8];
int i,j,sum=0,min;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&arr[i][j]);
}
}
f[0]=fun0(arr);
f[1]=fun1(arr);
f[2]=fun2(arr);
f[3]=fun3(arr);
f[4]=fun4(arr);
f[5]=fun5(arr);
f[6]=fun6(arr);
f[7]=fun7(arr);
min=f[0];
for(i=1;i<8;i++)
{
if(min>f[i])
min=f[i];
}
printf("%d ",min);
}
Link to the problem:-
https://www.hackerrank.com/challenges/magic-square-forming/problem
- Get link
- X
- Other Apps
Comments
Post a Comment