やりたかった事
for **{}**for **{}**と、for **{**for **{}}**は結果がどう違うのか?を確認する実験。
少なくとも入れ子の動きを見える化したい。
通常のfor文から
通常の for{}for{}
void TestFor()
{
for (int i = 0; i <= 1; i++)
{
Debug.Log(i+"アジ泳がせる");
}
for (int j = 0; j <= 1; j++)
{
Debug.Log(j+"イカが食べる");
}
}
丸は多いけど、回数増やすと下みたいな廻り方をする

上が廻り終わったら、下が廻る。
ここから本題
入れ子のやつ、役者2人、2回ずつ廻す
・通常は **for{}for{}**やけど、**for{for{}}**みたいにする
・iが最初0で1までやけん2回ずつ廻す作戦
void TestFor()
{
//1廻り
for (int i = 0; i <= 1; i++)
{
Debug.Log(i+"アジ泳がせる");
//2廻り
for (int j = 0; j <= 1; j++)
{
Debug.Log(j+"イカが食べる");
}
}
}
・予想は、、、
1廻り目はアジ→イカ
2廻り目もアジ→イカ
だったけど
・結果は、予想と違くて
1廻り目はアジ→イカ×2
2廻り目もアジ→イカ×2
入れ子にすると下で「for」が吹き溜まる
それって、一番下だけ?
入れ子のやつ、役者3人(+1)2回ずつ廻す
・通常は **for{}for{}**やけど、**for{for{}}**みたいにする
・iが最初0で1までやけん2回ずつ廻すの変わらず
・一番下だけ吹き溜まるか確認のため「人間」を追加
void TestFor()
{
for (int i = 0; i <= 1; i++)
{
Debug.Log(i+"アジ泳がせる");
for (int j = 0; j <= 1; j++)
{
Debug.Log(j+"イカが食べる");
for (int k = 0; k <= 1; k++)
{
Debug.Log(k + "人が釣る");
}
}
}
}
もう理解不能状態
でも諦めないで!!
・親の「アジを泳がせる」のは2回だけに着目、
・順番もアジ基準では同じ感じなので分けて1週目だけ考えると
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
-
アジ (1廻目)
-
イカ (1廻目)
- 人
- 人
-
イカ (2廻目)
- 人
- 人
-
-
アジ(2廻目)
-
イカ (1廻目)
- 人
- 人
-
イカ (2廻目)、、、
- 人
- 人
-
やっと気付く。これって同じ数ずつ廻ってないんじゃね?
「アジ」も「イカ」も「人」も2回ずつ廻るのかと思っていたよ。
(思い) (結果)
アジ 2回 → 2回
イカ 2回 → 4回
人 2回 → 8回
「人」に至っては、もう8回も意図せず廻らせていた模様。
あれは、それでか-。
役者4人(+1)に増やすと
-
アジ (1廻目)
-
イカ (1廻目)
-
マグロ (1廻目)
- 人
- 人 -
マグロ (2廻目)
- 人
- 人
-
-
イカ (2廻目)
-
マグロ
- 人
- 人 -
マグロ
- 人
- 人
-
-
-
アジ (2廻目)、、、
まとめ
・結局、何回廻ったんな?
2回ずつ廻したかったのに、こんなに差が出るなんて。
| for3回 | for4回 | |
|---|---|---|
| アジ | 2回 | 2回 |
| イカ | 4回 | 4回 |
| マグロ | 不在 | 8回 |
| 人 | 8回 | 16回 |
・for{for{}}で2回以上廻す場合のプログラムの流れ
→1)上から下までプログラムが下り
→2)下からforを処理してプログラムが上って行き
ここでなんで「人」廻すん?えっなんで次「マグロ」?ええ?ってなる。
→3)上りついたらまた同じ事を繰り返す。
いつのまに、たどり着いてたん?ってなる。
ここから違う処理のメモ。。
-
アジ 0円(1廻目)
-
イカ 100円
-
マグロ 50円
- 人 10円
- 人 20円、、、 -
マグロ 100円、、
- 人
- 人
-
-
イカ 200円、、
-
マグロ
- 人
- 人 -
マグロ
- 人
- 人
-
-
-
アジ 500円、、、
(結論途中)
各役者を均等に廻し、同時に計算するプログラムを作るのは for{}for{}でも、for{for{}}でも不可能だった。
・例えば
アジ×2廻す →イカ×2廻す →マグロ×2廻す →人×2廻す
で、
total(1)=アジ1+イカ1+マグロ1+人1;
total(2)=アジ2+イカ2+マグロ2+人2;
みたいな事は、for{}for{}でも、for{for{}}だけでは難しい。
・結局、この書き方for{for{}}は末尾の「アジ」しか思うように動かせていなかった。
・実現するなら多分forで良いけど、各役者を1つずつ関数にして計算する所も関数作ってやればいい気がする。
・でも
total=アジ1-10匹+ イカ1-10匹+マグロ1-10匹+人1-10匹;
を全て順に計算させるならfor{for{}}が最適解。
うまくいかないけど。。
つづく




