Recent Post

Forming a Magic Square.c-HackerRank

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

Comments

Popular posts from this blog

Caesar Cipher.c-HackerRank

Bon Appétit.c-HackerRank

Electronics Shop.c-HackerRank