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..12,-1..12] 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. end;
  31. (*Ritorno la soluzione migliore*)
  32. soluzione:= con_x-1;
  33. end;
  34. begin
  35. readln(N,M);
  36. for i:=1 to N do
  37. for j:=1 to M do griglia[i,j]:=0;
  38. griglia[1,1]:=1;nuovariga:=1; con_x:=0;
  39. gioca(1,1);
  40. writeln(soluzione);
  41. for i:=1 to N do begin
  42. for j:=1 to M do write(griglia[i,j],' '); writeln; end;
  43. end.
  44.  
  45.  
Success #stdin #stdout 0s 5272KB
stdin
6 6
stdout
18
1 1 0 1 1 0 
1 1 0 1 1 0 
0 0 0 0 0 0 
1 1 0 1 1 0 
1 1 0 1 1 0 
0 0 0 0 0 0