診断メーカーの禁則事項とかあれこれ

できないことややってはいけないことが多過ぎる割にネットの情報は少ないのでメモも兼ねて……

#CALC関数でNULLを使うときの仕様
例えばこんなことを書くと

```Ruby:入力
=CALC( + 1)
```

出力結果はこれです

```Ruby:出力
[ERROR]
```

ですがこう書くと

```Ruby:入力
=CALC(1 +  )
```

なぜかエラーを吐かずに0として認識して計算するようです

```Ruby:出力
1
```

ちなみに

```Ruby:入力
=CALC(1 +   + 1)
=CALC(1 +   +  )
```

こういうことしても

```Ruby:出力
[ERROR]
[ERROR]
```

御覧の有様だよ
NULLは末尾に1個つける場合のみ許されるっぽいですね

#CALC関数で0除算を行うときの仕様

```Ruby:入力
=CALC(1 / 0)
=CALC(0 / 0)
=CALC(-1 / 0)
```

こんなふうに入力すると

```Ruby:出力
0
0
0
```

こうなります。こういうところは好きです。

#CALC関数の上限についての仕様
割と浅いです。

```Ruby:入力
=CALC(99999999999999)
=CALC(100000000000000)
```

```Ruby:出力
99999999999999
1.0E+14
```

なお、当たり前のことですが文字列として地の分に入力すれば

```Ruby:入力
99999999999999
100000000000000
100000000000000000000000000000
```

そのまま出力されます。

```Ruby:出力
99999999999999
100000000000000
100000000000000000000000000000
```

#CALCの入れ子についての仕様

CALCは入れ子にすることが

```Ruby:入力
=CALC(=CALC(1+1)+1)
```

可能です。

```Ruby:出力
3
```

この入れ子の数に制限はあるのか…
とりあえずここまでやってみましたけど

```Ruby:入力
=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(1+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)
```

普通に計算できました(クッソ重い)

```Ruby:出力
165
```

まぁ仮に無限に連結できるとしても、診断結果基本テキストの文字数制限が先に来ると思います
こんな感じで

```Ruby:入力
=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(1+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)+1)
```


```Ruby:出力
=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(=CALC(165
```

#SUMLIST関数の自己参照に関する仕様
「SUMLISTをリストに突っ込んで自分自身を参照させれば簡単に2の累乗が作れちゃうんじゃね？」
そう考えていた時期が僕にもありました

```Ruby:LIST1
1
```

```Ruby:LIST2
=SUMLIST(1,2)
```

```Ruby:入力
[LIST1][LIST2_1][LIST2_2][LIST2_3]
```

```Ruby:出力
1111
```
自分のことを参照はしないみたいですね
チッ

#LISTの再帰に関する仕様
直接自分を参照させると再帰できません

```Ruby:LIST1
呪[LIST1]
```

```Ruby:入力
[LIST1]
```

```Ruby:出力
呪
```
多分対策されてますね
でもこうすれば(**このコードを実行しないでください**)

```Ruby:LIST1
呪[LIST2]
```

```Ruby:LIST2
呪[LIST1]
```

```Ruby:入力
[LIST1]
```

```Ruby:出力
このページは動作していません shindanmaker.com では現在このリクエストを処理できません。
```

非常に遺憾です
まぁそういうわけで、交互に呼び出せば再帰はできますが、診断メーカーが死ぬのでストッパーをつけずに行うのはやめましょう。

#IF関数の入れ子について
IFは入れ子にできませ……あれっ

```Ruby:入力
=IF(1 = 1,=IF(1 = 1,a,b),x)
```

```Ruby:出力
a
```

あれ？おかしいな、前にやった時はできなかったのに
else側においても

```Ruby:入力
=IF(1=2,x,=IF(1=1,a,b))
```


```Ruby:出力
a
```

普通に使えますね
なぜ今まで使えなかったかはわかりませんが、まぁその、ラッキー？
#まとめ
奥が深すぎる