私は3次元配列のセルを選択し、別の3次元配列への参照であるデータを読み書きするアルゴリズムを持っています。それを「ミニクラフト」アルゴリズムと考えてください。 問題は、このように動作するPerlでデータ構造を作る方法がわかりません:@ 3darray(x、y、z)=値 私を助けてくれますか?Perlで3D配列を正しく作成してループする方法は?
答えて
私が正しく理解していれば:
use Data::Dumper;
my ($x, $y, $z) = (1, 2, 3);
my @array = map [map [map 0, 1..$z], 1..$y], 1..$x;
print Dumper \@array;
出力:Perlはautovivificationを通じてあなたのためにそれを作成するので
$VAR1 = [
[
[
0,
0,
0
],
[
0,
0,
0
]
]
];
しかし、事前にこのような構造を作る必要は(さらに下リファレンスを参照してください)、ありません
use Data::Dumper;
my @array;
$array[0][0][2] = 3;
print Dumper \@array;
出力:あなたは、ネストされた構造内の要素にアクセスするとそれ以外の場合は
for my $i (0 .. $#array) {
for my $j (0 .. $#{$array[$i]}) {
for my $k (0 .. $#{$array[$i][$j]}) {
print "$i,$j,$k => $array[$i][$j][$k]\n";
}
}
}
:あなたは、インデックスが必要な場合は、ループについては
autovivification
A Greco-Roman word meaning "to bring oneself to life". In Perl, storage locations
(lvalues) spontaneously generate themselves as needed, including the creation of
any hard reference values to point to the next level of storage. The assignment
$a[5][5][5][5][5] = "quintet" potentially creates five scalar storage locations,
plus four references (in the first four scalar locations) pointing to four new
anonymous arrays (to hold the last four scalar locations). But the point of
autovivification is that you don't have to worry about it.
、::
$VAR1 = [
[
[
undef,
undef,
3
]
]
];
perlglossaryからボクセル世界の
for (@array) {
for (@$_) {
for (@$_) {
print "$_\n";
}
}
}
ありがとう、RTFMを手に入れていないのは素晴らしいことですが、あなたは私に非常に良い答えをくれました。また、私はちょうど新しい3D配列への参照を格納する場合、私はちょうどこれを行うだろうか? $ outer [$ x] [$ y] [$ z] =([] [$ x2] [$ y2] [$ z2] = $ value); ?うん、ちょっと狂ったよ:P – AlfredoVR
'@ outer'を6D配列にすることや、別の3D配列を' @ outer'に深くコピーすることを効果的に意味するのでしょうか? – flesk
私はすでにこのメソッドを使ってそれを解決しました。新しい3D配列のリファレンスを保存するだけです。 – AlfredoVR
- 1. numpyで3D配列を正しくマスクする方法
- 2. このPHP配列を正しく作成する方法は?
- 3. forループを使用して2d numpy配列から3d numpy配列を動的に作成する方法
- 4. JavaでForループを使用して3D配列を作成する
- 5. TypescriptでJSONオブジェクトの配列を正しく作成する方法は?
- 6. Numpyは2D配列を操作して3D配列を生成します
- 7. forループinループ配列を使用してインデックスを作成する方法
- 8. PHP:この関数の配列バージョンを正しく作成する方法は?
- 9. Whileループから配列を正しく取り込む方法
- 10. Python matplotlibで3d Quiverダイアグラムを正しくスケールする方法は?
- 11. h2oパッケージenvに基づいてループを作成する方法。正しく
- 12. forループを使用してオブジェクトの配列を作成する方法
- 13. whileループをbashスクリプトで正しくループする方法は?
- 14. jQueryで.eachループから配列を作成する方法
- 15. whileループを使用して文字列配列を作成してリストとして使用する方法
- 16. 非同期/並列データベースコールを正しく作成する方法
- 17. 配列を正しくループしています
- 18. Javaループが文字列を正しく作成しない
- 19. Unity 3DでC#スクリプトを使用してカスタム3D名を作成する方法
- 20. Perlでハッシュの配列をループする
- 21. 機能を正しく作成してシャットダウンする方法
- 22. Google DataFlowパイプラインで並列Forループを作成する正しい方法
- 23. ループなしでitertools.combinationsからnumpy配列を作成する方法
- 24. MVCパターンの配列をループする正しい方法
- 25. 3D numpy配列から3Dプロットを作成する
- 26. TCustomControlコンポーネントでTSplitterを正しく作成する方法は?
- 27. Vue-Socket.ioでカスタムソケットメソッドを正しく作成する方法は?
- 28. Yii2でハイチャートを正しく作成する方法は?
- 29. "lein uberjar"で正しくuberjarを作成する方法は?
- 30. matplotlibで正しくhistを作成する方法は?
コピーチャンクになりPerlデータ言語の微風(PD L)。しかし、PDLはリストのリストではなくcスタイルの配列を使います。 – zpmorgan
それは非常に良い発見です、私はそれを調べます。 – AlfredoVR