【问题标题】:Can't figure out Java Sudoku Solution Checker无法弄清楚 Java 数独解决方案检查器
【发布时间】:2013-12-03 05:54:58
【问题描述】:

我现在正在使用 Java 开发数独解决方案检查器,它被分成两部分。第二部分希望在代码中添加五个新的“特定方法”,它们是对行、列、块的布尔检查,然后在循环中返回它们是否为真或假。 checkAndPrintReport 还应该为每行检查失败、列检查失败和 区块检查失败。这就是我目前的情况。

 public boolean checkAndPrintReport( )
  {
   return false;
  }
 public boolean isGoodRow( int yRowParam ) 
  {  
  int sum = 0;
  for ( int x = 0; x <9; x++)
    {
      sum = sum + getCell (x,yRowParam);
    }
  return( true );
  } 
 public boolean isGoodColumn( int xColParam ) 
  {
   int sum = 0;
   for (int y = 0; y < 9 ;y++)
    {
        sum = sum + getCell (xColParam, y);
    }
    return( true );
  } 
 public boolean isGoodBlock(int xBlockP, int yBlockP)  
  { 
    int sum = 0;
    for (int x=0; x<3; x++)
    {
        for (int y=0; y<3;y++)
        {
            sum = sum + getCell (xBlockP+x, yBlockP+y);
        }
    }
   return( true );
  }
 public boolean checkAll()
  {
  }

我认为现在让我感到困惑的主要部分是这与我已经创建的检查这些东西的代码有什么不同......所以我有点困惑我被问到了什么。

【问题讨论】:

  • 先让现有代码工作。所有这些函数总是返回 true,因为总和值没有经过测试。

标签: java sudoku drjava


【解决方案1】:

定义

/** sum of 1+2+...+9 */
static final int SUM = 45;

那么你的代码是这样的

public boolean isGoodColumn( int xColParam ) {
   int sum = 0;
   for (int y = 0; y < 9 ;y++) {
        sum = sum + getCell (xColParam, y);
    }
   return SUM == sum;
 } 


public boolean isGoodColumn( int xColParam ) {
   int sum = 0;
   for (int y = 0; y < 9 ;y++) {
        sum = sum + getCell(xColParam, y);
    }
   return SUM == sum;
 } 

 public boolean isGoodBlock(int xBlockP, int yBlockP) { 
    int sum = 0;
    for (int x=0; x<3; x++) {
        for (int y=0; y<3;y++) {
            sum = sum + getCell(xBlockP+x, yBlockP+y);
        }
    }
   return SUM == sum;
 }

【讨论】:

  • 我认为测试总和不足以确保数独是有效的。我会用五分来填满整张桌子,并且会通过你所有的测试。
  • @PMF 您通过测试的代码是什么?我认为用户会从看到它中受益:)
  • 我曾经为此写过一些代码,我得好好研究一下。但这不是重点。我只是说这里提出的算法没有得到预期的结果。
猜你喜欢
  • 2022-07-24
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
  • 2016-03-08
相关资源
最近更新 更多