(3)- for文の入れ子実験

##やりたかった事
for **{}**for **{}**と、for **{**for **{}}**は結果がどう違うのか？を確認する実験。
少なくとも入れ子の動きを見える化したい。


##通常のfor文から
通常の **for{}for{}** 

```csharp 
    void TestFor()
    {
        for (int i = 0; i <= 1; i++)
        { 
            Debug.Log(i+"アジ泳がせる");
        }
        for (int j = 0; j <= 1; j++)
        {
                Debug.Log(j+"イカが食べる"); 
        }
    }
```

丸は多いけど、回数増やすと下みたいな廻り方をする
![009.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232643/a36bdfe9-f020-cf69-63bc-481da3661c30.jpeg)
上が廻り終わったら、下が廻る。

--
（結果）
![001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232643/302355b4-a67a-05a3-b635-62d716bd3ee9.jpeg)
普通に上が2回廻って、下2回廻った。



#ここから本題
##入れ子のやつ、役者2人、2回ずつ廻す
・通常は **for{}for{}**やけど、**for{for{}}**みたいにする
・iが最初0で1までやけん2回ずつ廻す作戦

```csharp 
    void TestFor()
    {
        //１廻り
        for (int i = 0; i <= 1; i++)
        { 
        Debug.Log(i+"アジ泳がせる"); 

            //２廻り
            for (int j = 0; j <= 1; j++)
            {
            Debug.Log(j+"イカが食べる"); 
            }
        }
    }
```

--
（結果）
![002.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232643/70d95f67-8af6-152a-05bb-fb2382c3445d.jpeg)

・予想は、、、
１廻り目はアジ→イカ
２廻り目もアジ→イカ
だったけど

・結果は、予想と違くて
１廻り目はアジ→イカ×2
２廻り目もアジ→イカ×2

**入れ子にすると下で「for」が吹き溜まる**
**それって、一番下だけ？**


##入れ子のやつ、役者3人（+1）2回ずつ廻す
・通常は **for{}for{}**やけど、**for{for{}}**みたいにする
・iが最初0で1までやけん2回ずつ廻すの変わらず
・一番下だけ吹き溜まるか確認のため「人間」を追加

```csharp 
    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 + "人が釣る");
                }
            }
        }
    }
```

--
（結果）
![003.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232643/d21b8345-f017-4f94-455f-e4a25c73fede.jpeg)

もう理解不能状態
でも諦めないで！！
・親の「アジを泳がせる」のは2回だけに着目、
・順番もアジ基準では同じ感じなので分けて1週目だけ考えると

![004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232643/249640fc-65c8-e433-77c9-f5ec13f4eceb.jpeg)

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

![005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232643/740e9551-f526-6cdb-fb2b-e87d909b5122.jpeg)

- アジ　（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{}}が最適解。
　うまくいかないけど。。

つづく