私は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. forループinループ配列を使用してインデックスを作成する方法
- 2. 配列を正しくループしています
- 3. whileループを使用して文字列配列を作成してリストとして使用する方法
- 4. jQueryで.eachループから配列を作成する方法
- 5. whileループをbashスクリプトで正しくループする方法は?
- 6. Javaループが文字列を正しく作成しない
- 7. Python matplotlibで3d Quiverダイアグラムを正しくスケールする方法は?
- 8. MVCパターンの配列をループする正しい方法
- 9. 非同期/並列データベースコールを正しく作成する方法
- 10. Perlでハッシュの配列をループする
- 11. mysql配列をループし、変数に応じて内容が別の配列を作成する方法$
- 12. 配列が正しくループしていない - Java
- 13. 3D numpy配列から3Dプロットを作成する
- 14. boolの配列を作成してループする
- 15. THREE.jsの法線マップを正しく作成する方法は?
- 16. ループなしで3D最小二乗距離行列を作成しますか?
- 17. Javaでループを使用して可変数の配列を作成する方法はありますか?
- 18. 3Dオブジェクトを使用してUIViewを作成する方法
- 19. この配列をループして合計を得る方法は?
- 20. 正定行列を得るまでループを作る方法は?
- 21. timeseriesデータ配列をFlots javascriptに正しく渡す方法は?
- 22. JAVA - Forループは新しい配列を作成しません
- 23. SynchronizedStackクラスを正しく作成する方法は?
- 24. SWIFT COREDATA - "in for"ループで別の配列を作成するループを使用して結果をループする
- 25. Javascript:forループを使用して配列に配列を出力する方法
- 26. 配列を使用してテーブルビューを生成する正しい方法
- 27. WindowsでMacアプリケーション/インストーラ(Java)を正しく作成する方法
- 28. forループを使用して複数の列配列を作成する
- 29. ココアでwhileループを使って配列を作成する
- 30. スカラーで配列の配列を作成する方法
コピーチャンクになりPerlデータ言語の微風(PD L)。しかし、PDLはリストのリストではなくcスタイルの配列を使います。 – zpmorgan
それは非常に良い発見です、私はそれを調べます。 – AlfredoVR