2012-03-09 20 views
0

私は現在、学校用のAndroid用の15個のパズルゲームを開発中です。残念ながら私は問題に遭遇しました。Javaの方程式の問題

この式を書き直して、索引ではなく行と列を取得する必要があります。あなたが私を助けることができる場合、コードとSEを見てみましょう!

これは行と列を取り、対応するインデックスを返します。

int index = 4 * (row - 1) + (column - 1); 

ただし、インデックスを行と列に変換したいと考えています。 誰もがこの式を逆に並べ替えて、行と列を2つの異なるintに戻す方法を知っています。

感謝、 ミカエル

答えて

5

はこのお試しください:column < 5場合は、この(と、元の式)こと

row = index/4 + 1; 
column = (index % 4) + 1; 

注のみ(それはもちろん、15パズルのために、である)動作します。

+0

あなたはインデックスのみ/ 4とインデックス%4、ある階の整数部分を取得することを確認してください。 –

+0

@EuclidesMulémbwè - Javaでは、 'index/4'は整数除算で、自動的に床を取ります。また、 'index'は' int 'なので、 'index%4'はすでに' int'です。 –

+0

ありがとう!それはトリックでした! :) – user1258829

0

System of linear equationsをご覧ください。あなたのケースでは、2つの未知の変数(行と列)と1つの方程式しかないので、行と列に対して複数の解(2つの値)があるかもしれません。あなたのケースでは、配列インデックスなので、行と列の値に関する制約もあります。

+1

15パズルの場合、4行4列あります。だから彼は追加の制約がある –

+0

関心のある領域(格子点[1,4] x [1,4])には1つの解決策しかありません。あなたが参照する記事の資料は、この種の問題を解決するのには適していません。 –

1

パターンを把握できるかどうかを調べてみてください。セルを下に移動するとき、または右に移動するときにインデックスが何をするか観察します。

以下の画像のインデックスは1ベースですが、Java配列の場合は0ベースのインデックスが必要です。

indices of a 2d array

+0

15パズルは4 x 4の競技場を使用します。 –

+0

+1問題の一般的な解決方法を説明する –