ポイントのリストがあり、侵食/膨張操作を行う必要があります。一種の 2D 配列が必要ですが、VisualWorks で行う方法が見つかりません (Squeak に Array2d クラスがあることは知っていますが、VW を使用する必要があります)。
4378 次
5 に答える
4
多くの Smalltalk 実装には、#rowAt:columnAt: (または簡潔に言うと #at:at:) などのメソッドを持つ、場合によっては最適化されたある種の Matrix クラスがあります。
GNU Smalltalk では、これはパッケージ DhbNumericalMethods にあります。ただし、現時点では最適化されていません。
于 2010-06-23T00:33:23.960 に答える
3
単純に一般的な方法を使用します。配列の配列:
(Array new: xSize)
at: 1 put: ((Array new: ySize) at: 1 put: aValue; at: 2 put: aValue; ...);
at: 2 put: ((Array new: ySize) at: 1 put: aValue; at: 2 put: aValue; ...);
...
于 2010-06-22T18:31:10.853 に答える
2
効率よく運用したいなら、VisualWorksのImageクラス、プロトコル「画像処理」「ビット処理」を勉強してください。そこにあるプリミティブに基づいて、独自の浸食/膨張操作を構築します。
于 2010-06-22T23:48:11.190 に答える
2
Squeak で 2 次元配列を処理する別の方法を次に示します (バージョン 4.2 を使用しています)。
test := Matrix new: 3. "this defines a 3 x 3 array"
test at: 1 at: 1 put: 5.
test at: 1 at: 2 put: 6.
test at: 1 at: 3 put: 7.
などなど。知る限り、この方法では2D配列のみを実行でき、それらは正方行列でなければなりません。これは、息子と私が数独ゲーム ymmv を作成するために取り組んでいるプロジェクトでうまく機能しました。乾杯!
于 2013-01-30T18:29:20.817 に答える