add.txt

Infolinks.com, 1921988 , DIRECT appnexus.com, 3251, RESELLER openx.com, 118151, RESELLER, 6a698e2ec38604c6 Pubmatic.com, 60809,RESELLER,5d62403b186f2ace Adtech.com, 11409, RESELLER google.com, pub-6373315980741255, RESELLER, f08c47fec0942fa0 google.com, pub-2697483239283649, RESELLER, f08c47fec0942fa0 aol.com, 6202, RESELLER aol.com, 17744, RESELLER lkqd.net, 295, RESELLER, 59c49fa9598a0117 lkqd.com, 295, RESELLER, 59c49fa9598a0117 Freewheel.tv, 482337, RESELLER Freewheel.tv, 480609, RESELLER revcontent.com, 29124, RESELLER appnexus.com, 7666, RESELLER, f5ab79cb980f11d1 rubiconproject.com, 156042, RESELLER, 0bfd66d529a55807 rubiconproject.com, 156042, RESELLER, 0bfd66d529a55807 advertising.com, 8603, RESELLER advertising.com, 3531, RESELLER appnexus.com, 3364, RESELLER Indexexchange.com, 183756, RESELLER openx.com, 539154393, RESELLER rubiconproject.com, 16698, RESELLER, 0bfd66d529a55807 rubiconproject.com, 16904, RESELLER, 0bfd66d529a55807 deepintent.com, 100004190, RESELLER, 4a5487c769369a8c pubmatic.com, 156872, RESELLER, 5d62403b186f2ace taboola.com, 1139936,RESELLER,c228e6794e811952 taboola.com, 1135488,RESELLER,c228e6794e811952 beachfront.com, 4243, RESELLER, e2541279e8e2ca4d beachfront.com, 4243, DIRECT, e2541279e8e2ca4d aol.com, 24849, RESELLER aol.com, 20515, RESELLER adtech.com, 11347, RESELLER adtech.com, 4710, RESELLER vi.ai, 913453223927387, RESELLER spotxchange.com, 74964, RESELLER, 7842df1d2fe2db34 spotx.tv, 74964, RESELLER, 7842df1d2fe2db34 smartadserver.com, 2776,RESELLER pubmatic.com, 156830, RESELLER rubiconproject.com, 15476, RESELLER, 0bfd66d529a55807

C++ : Code and Play Sudoku



Lines used : 531
Copy the code below :

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
int a[9][9],b[9][9],r[60][2];
int row, col, icount, mode;
char solh;
void main()
{
void readvalues(void), display(void),generate(void);
int solve(),checkmat(), checkrow(), checkcolumn(),check(),isfixed();
int i,j,error;
char c;
clrscr();
printf("\n\n\n\n\t\tEnter '1' to play SuDoKu Puzzle\n\n\t\tEnter any other key to generate SuDoKu\n\n\n\n\t\tEnter: ");
scanf("%c",&c);
if(c=='1')
    {
    getchar();
    generate();
    if(solh=='y' || solh=='Y')
    readvalues();
    for(i=0;i
    for(j=0;j
    a[i][j]=b[i][j];
    clrscr();
    display();
    getchar();
    getchar();
    exit(0);
    }
clrscr();
printf("\n\n\t\t\tHOW TO ENTER ELEMENTS\n");
printf("\n\n1.Enter the elements by specifying the row and column number of\n  corresponding location");
printf("\n\n2.Each row and column start from 1 and end at 9 (not from 0 to 8)");
printf("\n\n3.After finishing entering the elements, enter zeroes (0)\n  for row or column");
printf("\n\n4.If an element entered in a wrong location has to be deleted,\n  enter zero in that location");
printf("\n\n\n\n\t\t\t  Enter any key to continue");
getchar();
read:
icount=0;
row=0; col=0;
for(i=0;i
for(j=0;j
a[i][j]=0;
for(i=0;i
    {
    r[i][0]=20; r[i][1]=20;
    }
    clrscr();
    readvalues();
    getchar();
    clrscr();
    ask:
    display();
    printf("\n\nEnter 'm' to MODIFY\nEnter 'r' to RE-ENTER\nEnter any other key for SUDOKU Solution: ");
    scanf("%c",&c);
    if(c=='r' || c=='R')
        {
        clrscr();
        goto read;
        }
    if(c=='m' || c=='M')
        {
        printf("\n\n");
        readvalues();
        clrscr();
        getchar();
        goto ask;
        }
    next:
    error=solve();
    clrscr();
    display();
    if(error==0)
    printf("\n\n\n\n\rNO SUOLUTION or TOO MANY MODIFICATIONS");
    cprintf("\n\n\n\n\n\rEnter c to continue and any other key to exit: ");
    scanf("%c",&c);
    if(c=='c')
    goto read;
    getchar();
}
/*FUNTION TO READ ELEMENTS*/
void readvalues()
{
int i=icount,j,x,y,chek;
void display(void);
int check(int,int);
clrscr();
do
{
display();
printf("\n");
row:
printf("\n\nEnter row: ");
scanf("%d",&r[i][0]);
if(r[i][0]==0)
    {
    r[i][0]=100; r[i][1]=100;
    break;
    }
if(r[i][0]>10 || r[i][0]
    {
    printf("\nInvalid size\nEnter again");
    r[i][0]=20; r[i][1]=20;
    getchar();
    goto row;
    }
column:
printf("Enter column: ");
scanf("%d",&r[i][1]);
if(r[i][1]==0)
    {
    r[i][0]=100; r[i][1]=100;
    break;
    }
if(r[i][1]<0 || r[i][1]>10)
    {
    printf("\nInvalid size\nEnter again\n\n");
    r[i][0]=20; r[i][1]=20;
    getchar();
    goto column;
    }
r[i][0]=r[i][0]-1; r[i][1]=r[i][1]-1;
x=r[i][0]; y=r[i][1];
if(solh=='y' || solh=='Y')
for(j=0;j<icount>
    {
    if(x==r[j][0] && y==r[j][1])
        {
        printf("This location is fixed and cannot be changed");
        goto row;
        }
    else
        r[i][0]=20; r[i][1]=20;
    }
scan:
printf("Enter the corresponding number: ");
scanf("%d",&a[x][y]);
if(a[x][y]==0)
    {
    for(j=0;j<icount>
        {
        if(x==r[j][0] && y==r[j][1])
            {
            r[j][0]=20; r[j][1]=20;
            goto end;
            }
        if(solh=='y' || solh=='Y')
            {
            r[i][0]=20; r[i][1]=20;
            goto end;
            }
        }
    }
if(a[x][y]>9 || a[x][y]
    {
     printf("\nNumber out of range\nEnter again\n\n");
     a[x][y]=0;
     goto scan;
     }
else
{
chek=check(x,y);
if(chek==0)
    {
    printf("\nInconsistent number\nEnter again");
    a[x][y]=0; r[i][0]=20; r[i][1]=20;
    goto row;
    }
}
if(solh!='y' && solh!='Y')
    {
    icount++; i++;
    }
end:
clrscr();
}while(r[i-1][0]!=-1 || r[i-1][1]!=-1);
}
isfixed(int count, int m, int n)
{
int i;
for(i=0;i<count>
if(m==r[i][0] && n==r[i][1])
return(1);
return(0);
}
/*FUNCTION TO DISPLAY SUDOKU*/
void display()
{
int i,j,k,fixed;
gotoxy(6,0);
for(i=0;i
    {
    if(i%3==0)
        {
        textcolor(WHITE);
        if(i!=0)
        printf("\n");
        printf("\t\t");
        for(k=0;k
        cprintf("*");
        if(i==9)
        goto end;
        }
    if(i%3!=0)
        {
        textcolor(WHITE);
        printf("\n\t\t");
        printf("|\t\t\b|\t\t\b\b|\t\t\t\b\b\b\b|");
        printf("\n\t\t");
        }
    else
    printf("\n\t\t");
    for(j=0;j
        {
        if(j%3==0)
            {
            if(a[i][j]==0)
                {
                textcolor(WHITE);
                cprintf("|");
                for(k=0;k
                printf(" ");
                }
            else
                {
                textcolor(WHITE);
                cprintf("| ",a[i][j]);
                fixed=isfixed(icount,i,j);
                if(fixed==1)
                textcolor(LIGHTRED);
                else
                textcolor(LIGHTGREEN);
                cprintf("%d  ",a[i][j]);
                }
            }
        else
            {
            if(a[i][j]==0)
            for(k=0;k
            printf(" ");
            else
                {
                fixed=isfixed(icount,i,j);
                if(fixed==1)
                textcolor(LIGHTRED);
                else
                textcolor(LIGHTGREEN);
                cprintf("  %d  ",a[i][j]);
                }
            }
        }textcolor(WHITE);
        cprintf("\b|");
    }end:
}
int checkmat(int m, int n)
{
int x,y;
for(x=(m/3)*3;x
for(y=(n/3)*3;y
    {
    if(m!=x && n!=y)
    if(a[m][n]==a[x][y])
    return(0);
    }
return(1);
}
int checkrow(int m, int n)
{
int x;
for(x=0;x
    {
    if(x!=n)
    if(a[m][n]==a[m][x])
    return(0);
    }
return(1);
}
int checkcolumn(int m, int n)
{
int x;
for(x=0;x
    {
    if(x!=m)
    if(a[m][n]==a[x][n])
    return(0);
    }
return(1);
}
/*FUNCTION TO CHECK CONSISTENCY OF AN ELEMENT*/
int check(int m,int n)
{
int c;
c=checkmat(m,n);
if(c==1)
c=c*checkrow(m,n);
else
return(c);
if(c==1)
c=c*checkcolumn(m,n);
else
return(c);
return(c);
}
/*FUNCTION TO SOLVE SUDOKU*/
solve()
{
int i,m=0,n=0,number,c,fixed;
mainallot:
for(m=row;m
    {
    n=col;
    while(n
        {
        number=1;
        fixed=isfixed(icount,m,n);
        if(fixed==0)
            {
            allot:
            a[m][n]=number;
            c=check(m,n);
            if(c==0)
                {
                number++;
                if(number>9)
                    {
                    a[m][n]=0;
                    if(n==0)
                        {
                        row=m-1; col=8;
                        if(row
                        return(0);
                        goto backadjust;
                        }
                    else
                        {
                        row=m; col=n-1;
                        if(row
                        return(0);
                        goto backadjust;
                        }
                    }
                goto allot;
                }
            }
        n++;
        if(n>8)
        col=0;
        }
    }
return(1);
backadjust:
fixed=isfixed(icount,row,col);
if(fixed==0)
    {
    number=a[row][col];
    allot1:
    number++;
    a[row][col]=number;
    if(number>9)
        {
        a[row][col]=0;
        if(col==0)
            {
            row--; col=8;
            if(row
            return(0);
            goto backadjust;
            }
        else
            {
            col--;
            if(col
            return(0);
            goto backadjust;
            }
        }
    c=check(row,col);
    if(c==0)
    goto allot1;
    else
        {
        if(col==8)
            {
            row++;
            if(row>8)
            return(0);
            col=0;
            goto mainallot;
            }
        else
            {
            col++;
            if(col>8)
            return(0);
            goto mainallot;
            }
        }
    }
else
    {
    if(col==0)
        {
        row--; col=8;
        if(row
        return(0);
        goto backadjust;
        }
    else
        {
        col--;
        if(col
        return(0);
        goto backadjust;
        }
    }
}
/*FUNCTION TO GENERATE SODOKU*/
void generate()
{
int c,i,m,n,count=1,fixed,error;
char choice;
randomize();
generate:
for(m=0;m
for(n=0;n
a[m][n]=0;
for(i=0;i
    {
    r[i][0]=20; r[i][1]=20;
    }
clrscr();
printf("\n\n\n\n\t\tEnter your choice of difficulty");
printf("\n\n\n\t\t1.VERY EASY\n\n\t\t2.EASY\n\n\t\t3.MEDIUM\n\n\t\t4.HARD\n\n\n\t\tENTER: ");
scanf("%c",&choice);
switch(choice)
    {
    case '1': mode=34+random(4);
          break;
    case '2': mode=29+random(4);
          break;
    case '3': mode=27+random(2);
          break;
    case '4': mode=25+random(2);
          break;
    default : getchar();
              goto generate;
    }
a[0][0]=1+random(8); r[0][0]=0; r[0][1]=0;
for(count=1;count
    {
    choose:
    m=random(9); n=random(9);
    fixed=isfixed(icount,m,n);
    if(fixed==1)
    goto choose;
    r[count][0]=m; r[count][1]=n;
    allot:
    a[m][n]=1+random(9);
    if(a[m][n]==0)
    goto allot;
    c=check(m,n);
    if(c==0)
    goto allot;
    }
icount=count;
error=solve();
for(m=0;m
for(n=0;n
b[m][n]=a[m][n];
row=0; col=0;
for(i=0;i
    {
    r[i][0]=20; r[i][1]=20;
    }
if(error==0)
goto generate;
for(count=0;count<mode>
    {
    choose2:
    m=random(9); n=random(5);
    fixed=isfixed(count,m,n);
    if(fixed==1)
    goto choose2;
    r[count][0]=m; r[count][1]=n;
    r[count+mode/2][0]=8-m;
    r[count+mode/2][1]=8-n;
    }
for(m=0;m
for(n=0;n
    {
    fixed=isfixed(mode,m,n);
    if(fixed!=1)
    a[m][n]=0;
    }
icount=mode;
clrscr();
display();
getchar();
printf("\n\n\nEnter 'y' to solve by yourself\nEnter 's' for solution\nEnter 'm' to generate more sudoku puzzles");
printf("\nAnd any other key to exit: ");
scanf("%c", &solh);
if(solh=='y' || solh=='Y' || solh=='s' || solh=='S')
return;
getchar();
if(solh=='m' || solh=='M')
goto generate;
exit(0);
}
</mode></count></icount></icount>

That's all folks.
Don't even forget to click LIKE and say THANKS.

Yash

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.

0 comments:

Post a Comment

 

Copyright @ 2013H@cking Tricks.