fork download
  1. program solitario;
  2. uses Math;
  3. var N,M,i,j, soluzione, con_x, senza_x, nuovariga, nuovacolonna:longint;
  4. griglia:array[1..10,1..10] of longint;
  5.  
  6. function posso(r, c: longint): boolean;
  7. begin
  8. (*tris orizzontale*)
  9. if (c-2>0) and (griglia[r][c-2]=1) and (griglia[r][c-1]=1) then posso:=false
  10. (*tris orizzontale*)
  11. else if (r-2>0) and (griglia[r-2][c]=1) and (griglia[r-1][c]=1) then posso:=false
  12. (* Tris diagonale in alto a sx*)
  13. else if (r-2>0 ) and (c-2>0) and (griglia[r-2][c-2]=1) and (griglia[r-1][c-1]=1) then posso:=false
  14. (* Tris diagonale in alto a dx*)
  15. else if (r-2>0) and (c+2<M) and (griglia[r-2][c+2]=1) and (griglia[r-1][c+1]=1) then posso:=false
  16. else posso := true;
  17. end;
  18. function gioca (riga, colonna:longint):longint;
  19. begin
  20. while (riga <=N) do
  21. begin
  22. (*Se posso, metto la X*)
  23. if posso (riga,colonna)=true then
  24. begin
  25. griglia[riga][colonna]:=1;
  26. con_x:=con_x+1;
  27. end;
  28. if colonna+1=M then riga:=riga+1;
  29. colonna:= (colonna +1) mod M;
  30. griglia[riga][colonna]:=0;
  31. end;
  32. (*Ritorno la soluzione migliore*)
  33. soluzione:= con_x;
  34. end;
  35. begin
  36. readln(N,M);
  37. for i:=1 to N do
  38. for j:=1 to M do griglia[i,j]:=-1;
  39. griglia[1,1]:=1;nuovariga:=1; con_x:=0;
  40. gioca(1,1);
  41. writeln(soluzione-1);
  42. for i:=1 to N do begin
  43. for j:=1 to M do write(griglia[i,j],' '); writeln; end;
  44. end.
  45.  
Success #stdin #stdout 0.01s 5292KB
stdin
3 3
stdout
4
1 1 -1 
1 1 -1 
0 0 -1