Math Is Fun Forum

  Discussion about math, puzzles, games and fun.   Useful symbols: ÷ × ½ √ ∞ ≠ ≤ ≥ ≈ ⇒ ± ∈ Δ θ ∴ ∑ ∫ • π ƒ -¹ ² ³ °

You are not logged in.

#9852 Re: Coder's Corner » Another programming problem!!! » 2011-09-30 22:03:47

where did you get Java?

i'm using Pascal.very basic.

i changed my code a bit and got a program that solves only the first row.it won't go to the next one!

#9854 Re: Coder's Corner » Another programming problem!!! » 2011-09-30 09:15:58

hi bobbym

i found an error on my side in the main code and i fixed it and i edited it but it still won't do it! sad

#9855 Re: Coder's Corner » Another programming problem!!! » 2011-09-30 08:56:06

i have bunch of them and i tried this one:
0 5 6 0 8 0 0 1 0
8 3 0 2 0 7 0 0 0
0 1 2 0 0 0 0 0 0
0 0 0 6 0 0 7 0 9
0 0 0 1 0 4 0 0 0
2 0 3 0 0 8 0 0 0
0 0 0 0 0 0 3 9 0
0 0 0 4 0 9 0 2 6
0 7 0 0 5 0 1 4 0

it won't work!

#9859 Re: Coder's Corner » Another programming problem!!! » 2011-09-29 09:14:34

have you checked it compleely.it uses recursion.

#9863 Re: Help Me ! » Word problem equation problem » 2011-09-29 07:54:34

hi

i'm sure you do.do you do private lessons or are you absolutely out of teaching?

just a question.can i consider you to be my friend?

#9864 Re: Help Me ! » Word problem equation problem » 2011-09-29 07:38:44

hi bob

i didn't know that you are retired.from your posts i got that you still teach.

#9865 Re: Coder's Corner » Another programming problem!!! » 2011-09-29 07:36:34

hi bobbym

it's:
0 4 7 0 0 0 3 0 0
8 0 6 0 7 4 0 0 0
0 0 0 2 0 3 8 4 0
0 7 0 0 0 0 4 0 3
9 0 0 4 0 8 0 0 2
4 0 3 0 0 0 0 9 0
0 2 8 6 0 1 0 0 0
0 0 0 8 2 0 7 0 9
0 0 9 0 0 0 2 1 8

the answer should be:

2 4 7 1 8 9 3 5 6
8 3 6 5 7 4 9 2 1
5 9 1 2 6 3 8 4 7
1 7 2 9 5 6 4 8 3
9 6 5 4 3 8 1 7 2
4 8 3 7 1 2 6 9 5
7 2 8 6 9 1 5 3 4
3 1 4 8 2 5 7 6 9
6 5 9 3 4 7 2 1 8

#9866 Coder's Corner » Another programming problem!!! » 2011-09-28 21:23:56

anonimnystefy
Replies: 86

hi guys

i am trying to make a program to solve a Sudoku.i hope you know what that is.

now i have finished the code but there seems to be a logical error because i entered a valid one and it outputted the message 'The Sudoku cannot be solved!!!'

here's the code:

program Sudoku_solver;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };

{$IFDEF WINDOWS}{$R Sudoku.rc}{$ENDIF}

const
  max=9;

type
  niz=array[1..max] of integer;
  matrica=array[1..max] of niz;

var
  a:matrica;
  i,j:integer;
  ok:boolean;

function row(a:matrica;i1,j1:integer):boolean;
var
  j:integer;
  b:boolean;
begin
  b:=true;
  for j:=1 to 9 do
    if j<>j1 then
      if a[i1][j]=a[i1][j1] then
        b:=false;
  red:=b;
end;

function column(a:matrica;i1,j1:integer):boolean;
var
  i:integer;
  b:boolean;
begin
  b:=true;
  for i:=1 to 9 do
    if i<>i1 then
      if a[i][j1]=a[i1][j1] then
        b:=false;
  vrsta:=b;
end;

function square(a:matrica;i1,j1:integer):boolean;
var
  i,j,k,l:integer;
  b:boolean;
begin
  b:=true;
  case i1 of
    1,2,3: begin
             k:=0;
             i:=3
           end;
    4,5,6: begin
             k:=3;
             i:=6;
           end;
    7,8,9: begin
             k:=6;
             i:=9;
           end;
  end;
  case j1 of
    1,2,3: begin
             l:=0;
             j:=3
           end;
    4,5,6: begin
             l:=3;
             j:=6;
           end;
    7,8,9: begin
             l:=6;
             j:=9;
           end;
  end;
  while (k<=i) do
  begin
    k:=k+1;
    while (l<=j) do
    begin
      l:=l+1;
      if (k<>i1) and (l<>j1) then
        if a[k][l]=a[i1][j1] then
          b:=false;
    end;
  end;
  kvadrat:=b;
end;

function pos(a:matrica;i,j:integer):boolean;
begin
  poz:=row(a,i,j) and column(a,i,j) and square(a,i,j);
end;

procedure sudoku(var a:matrica;n,i1,j1:integer;ok:boolean);
var
  i,j,k:integer;
  b:boolean;
begin
  i:=i1;
  j:=j1;
  a[i][j]:=n;
  ok:=false;
  b:=true;
  if poz(a,i,j) then
  begin
    ok:=true;
    i:=0;
    j:=0;
    while (b=true) and (i<=max) do
    begin
      i:=i+1;
      while (b=true) and (j<=max) do
      begin
        j:=j+1;
        if a[i][j]=0 then
          b:=false;
      end;
    end;
    if b=false then
    begin
      k:=0;
      ok:=false;
      while (k<=9) and not ok do
      begin
        k:=k+1;
        sudoku(a,k,i,j,ok);
      end;
    end;
  end;
end;

begin
  writeln('Enter the Sudoku: ');
  for i:=1 to 9 do
  begin
    for j:=1 to 9 do
      read(a[i][j]);
    readln;
  end;
  k:=0;
  ok:=false;
  while (k<=9) and not ok do
  begin
    k:=k+1;
    sudoku(a,k,i,j,ok);
  end;
  if ok then
  begin
    writeln('The solution is: ')
    for i:=1 to 9 do
    begin
      for j:=1 to 9 do
        write(a[i][j]);
      writeln;
    end;
  end
  else writeln('Sudoku cannot be solved!!!');
  readln;
end.

note that functions row,column and square check if there are same numbers as the number we are looking at in the same row,column and square.

my second question is: is there another (better) way to make the Sudoku solver,because this one is fairly long and complex !?

#9868 Re: Help Me ! » Equation problem » 2011-09-24 23:53:56

hi Deon588

try this:

\\ \log_2\frac{x}{4} =\left(\frac{\log_2\frac{x}{8}}{\frac{1}{2}}\right)\\ \mbox{This is the first equation I do which has logarithms and fractions, this is how I remember the change of base formula}\\ \log_2 \frac{x}{4}=\left(\frac{\log_2 \frac{x}{8}}{\log_2 4}\right)\\\mbox{Does that become}\frac{1}{2}\mbox{because it is the demumerator?}

you can use the equation editor here:Equation Editor

#9871 Re: Help Me ! » Equation problem » 2011-09-23 23:18:59

hi zetafunc.

i think that's right.

have you thought of becoming a member?

#9872 Re: Help Me ! » Equation problem » 2011-09-23 22:25:31

hi Deon588

what is the question?

#9873 Re: Jai Ganesh's Puzzles » Trigonometry » 2011-09-23 07:56:31

hi ganesh

the thread name is spelled wrong. smile

#9874 Re: Help Me ! » Programming Error!!! » 2011-09-23 07:51:55

hi guys

thanks,i found the problem 10 minutes after i posted.and it was what JEF said,i was missing a colon in front of the equal sign. smile

Board footer

Powered by FluxBB