0

重複の可能性:
文字マトリックスから可能な単語のリストを見つける方法 [Boggle Solver]

パズルソルバーを作っています。これまでのところ、単語のすべての順列を行っていますが、たくさんあります! 12 文字の単語の場合、479001600 個のパーマがあります... ゲームは 16 文字のパズル (4x4) です

 [A][B][C][D]
 [E][F][G][H]
 [I][J][K][L]
 [M][N][X][O]

選択した文字の周囲にある文字だけで単語を作ることができます。つまり、たとえば、私は A の周りにいないので、AIM という単語を選択することはできません... しかし、「AFI」という単語を作成することはできます。A を選択し、次に F(A の対角図) を選択し、次に I を選択します。

順列の私のコードは

  function permute( $tmp, $word, $level )
  {
      if ( strlen( $word ) > 2)
      {
          $this->display( $word );
          //return ;
      } 

      for ( $i = 0 ; $i < $this->original_word_length ; $i++ )
      {
          if ( $this->bOne_bond == true and $this->bonds[$level] != -1 and $i != $this->bonds[$level] and $level < $this->max_bonds ) continue ;

              if ( strcmp( $tmp{$i}, "N" ) == 0 )
              {
                  $word_tmp = $word ;
                  $word_tmp .= $this->original_word{$i};

                  $flags_tmp = $tmp ;
                  $flags_tmp{$i} = "Y";

                  $this->permute( $flags_tmp, $word_tmp, $level+1 );
              }
      } 
  }

隣接する文字に基づいて計算するにはどうすればよいですか?

編集: 解決策はこちらです。ありがとう

4

0 に答える 0